Skip to content

Commit cc2440d

Browse files
committed
调整大图浏览功能
1 parent 0a2db2b commit cc2440d

File tree

7 files changed

+151
-45
lines changed

7 files changed

+151
-45
lines changed

ImageLibrary/src/main/AndroidManifest.xml

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -11,6 +11,7 @@
1111
<activity android:name=".crop.CropUActivity" android:screenOrientation="portrait"></activity>
1212
<activity android:name=".preview.ImagePreviewActivity" android:screenOrientation="portrait"></activity>
1313
<activity android:name=".photopicker.PhotoPickerActivity" android:screenOrientation="portrait"></activity>
14+
<activity android:name=".preview.SubsamplingActivity" android:screenOrientation="portrait"></activity>
1415
</application>
1516

1617
</manifest>

ImageLibrary/src/main/java/com/renyu/imagelibrary/commonutils/Utils.java

Lines changed: 15 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -13,6 +13,7 @@
1313
import com.renyu.imagelibrary.crop.UCrop;
1414
import com.renyu.imagelibrary.photopicker.PhotoPickerActivity;
1515
import com.renyu.imagelibrary.preview.ImagePreviewActivity;
16+
import com.renyu.imagelibrary.preview.SubsamplingActivity;
1617

1718
import java.io.File;
1819
import java.io.FileNotFoundException;
@@ -156,7 +157,7 @@ public static void refreshAlbum(Context context, String newFile, String dirPath)
156157
* @param canEdit
157158
* @param urls
158159
*/
159-
public static void showPreiew(Context context, boolean canDownload, int position, boolean canEdit, ArrayList<String> urls) {
160+
public static void showPreview(Context context, boolean canDownload, int position, boolean canEdit, ArrayList<String> urls) {
160161
Intent intent=new Intent(context, ImagePreviewActivity.class);
161162
Bundle bundle=new Bundle();
162163
bundle.putBoolean("canDownload", canDownload);
@@ -166,4 +167,17 @@ public static void showPreiew(Context context, boolean canDownload, int position
166167
intent.putExtras(bundle);
167168
context.startActivity(intent);
168169
}
170+
171+
/**
172+
* 打开长图预览
173+
* @param context
174+
* @param url
175+
* @param filePath
176+
*/
177+
public static void showLongPreview(Context context, String url, String filePath) {
178+
Intent intent=new Intent(context, SubsamplingActivity.class);
179+
intent.putExtra("url", url);
180+
intent.putExtra("filePath", filePath);
181+
context.startActivity(intent);
182+
}
169183
}
Lines changed: 116 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,116 @@
1+
package com.renyu.imagelibrary.preview;
2+
3+
import android.app.ProgressDialog;
4+
import android.graphics.Bitmap;
5+
import android.graphics.PointF;
6+
import android.net.Uri;
7+
import android.os.Handler;
8+
import android.os.Message;
9+
import android.widget.Toast;
10+
11+
import com.blankj.utilcode.util.ImageUtils;
12+
import com.blankj.utilcode.util.ScreenUtils;
13+
import com.davemorrissey.labs.subscaleview.ImageSource;
14+
import com.davemorrissey.labs.subscaleview.ImageViewState;
15+
import com.davemorrissey.labs.subscaleview.SubsamplingScaleImageView;
16+
import com.facebook.common.executors.CallerThreadExecutor;
17+
import com.facebook.common.references.CloseableReference;
18+
import com.facebook.datasource.DataSource;
19+
import com.facebook.drawee.backends.pipeline.Fresco;
20+
import com.facebook.imagepipeline.core.ImagePipeline;
21+
import com.facebook.imagepipeline.datasource.BaseBitmapDataSubscriber;
22+
import com.facebook.imagepipeline.image.CloseableImage;
23+
import com.facebook.imagepipeline.request.ImageRequest;
24+
import com.facebook.imagepipeline.request.ImageRequestBuilder;
25+
import com.renyu.commonlibrary.baseact.BaseActivity;
26+
import com.renyu.commonlibrary.network.OKHttpHelper;
27+
import com.renyu.imagelibrary.R;
28+
import com.renyu.imagelibrary.R2;
29+
30+
import java.io.File;
31+
32+
import butterknife.BindView;
33+
34+
/**
35+
* Created by renyu on 2017/8/10.
36+
*/
37+
38+
public class SubsamplingActivity extends BaseActivity {
39+
40+
@BindView(R2.id.iv_sub)
41+
SubsamplingScaleImageView iv_sub;
42+
43+
OKHttpHelper httpHelper;
44+
45+
ProgressDialog progressDialog;
46+
47+
@Override
48+
public void initParams() {
49+
httpHelper=new OKHttpHelper();
50+
progressDialog=ProgressDialog.show(SubsamplingActivity.this, "", "正在加载文件");
51+
}
52+
53+
@Override
54+
public int initViews() {
55+
return R.layout.activity_subsampling;
56+
}
57+
58+
@Override
59+
public void loadData() {
60+
ImageRequest imageRequest = ImageRequestBuilder.newBuilderWithSource(Uri.parse(getIntent().getStringExtra("url"))).setProgressiveRenderingEnabled(true).build();
61+
ImagePipeline imagePipeline = Fresco.getImagePipeline();
62+
DataSource<CloseableReference<CloseableImage>> dataSource = imagePipeline.fetchDecodedImage(imageRequest, this);
63+
dataSource.subscribe(new BaseBitmapDataSubscriber() {
64+
@Override
65+
protected void onNewResultImpl(final Bitmap bitmap) {
66+
String s=getIntent().getStringExtra("url");
67+
String newFilePath=getIntent().getStringExtra("filePath")+s.substring(s.lastIndexOf("/"));
68+
File newFile=new File(newFilePath);
69+
if (newFile.exists()) {
70+
newFile.delete();
71+
}
72+
ImageUtils.save(bitmap, newFile, Bitmap.CompressFormat.JPEG);
73+
Message message=new Message();
74+
message.what=1;
75+
message.arg1=bitmap.getWidth();
76+
message.obj=newFile.getPath();
77+
handler.sendMessage(message);
78+
}
79+
80+
@Override
81+
protected void onFailureImpl(DataSource<CloseableReference<CloseableImage>> dataSource) {
82+
handler.sendEmptyMessage(-1);
83+
}
84+
}, CallerThreadExecutor.getInstance());
85+
}
86+
87+
@Override
88+
public int setStatusBarColor() {
89+
return 0;
90+
}
91+
92+
@Override
93+
public int setStatusBarTranslucent() {
94+
return 1;
95+
}
96+
97+
Handler handler=new Handler() {
98+
@Override
99+
public void handleMessage(Message msg) {
100+
super.handleMessage(msg);
101+
if (progressDialog!=null) {
102+
progressDialog.dismiss();
103+
progressDialog=null;
104+
}
105+
if (msg.what==-1) {
106+
Toast.makeText(SubsamplingActivity.this, "文件加载失败", Toast.LENGTH_SHORT).show();
107+
finish();
108+
}
109+
else if (msg.what==1) {
110+
iv_sub.setMinimumScaleType(SubsamplingScaleImageView.SCALE_TYPE_CUSTOM);
111+
iv_sub.setMinScale(ScreenUtils.getScreenWidth()*1.0f/msg.arg1);
112+
iv_sub.setImage(ImageSource.uri(Uri.parse("file://"+ msg.obj)), new ImageViewState(ScreenUtils.getScreenWidth()*1.0f/msg.arg1, new PointF(0, 0), 0));
113+
}
114+
}
115+
};
116+
}

app/src/main/res/layout/activity_subsampling.xml renamed to ImageLibrary/src/main/res/layout/activity_subsampling.xml

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,7 @@
44
android:layout_height="match_parent">
55
<com.davemorrissey.labs.subscaleview.SubsamplingScaleImageView
66
android:id="@+id/iv_sub"
7+
android:background="@android:color/black"
78
android:layout_width="match_parent"
89
android:layout_height="match_parent"/>
910
</LinearLayout>

app/src/main/AndroidManifest.xml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -9,7 +9,7 @@
99
android:roundIcon="@mipmap/ic_launcher_round"
1010
android:supportsRtl="true"
1111
android:theme="@style/AppTheme">
12-
<activity android:name=".SubsamplingActivity">
12+
<activity android:name=".MainActivity">
1313
<intent-filter>
1414
<action android:name="android.intent.action.MAIN" />
1515

app/src/main/java/com/renyu/androidimagelibrary/MainActivity.java

Lines changed: 17 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -2,9 +2,11 @@
22

33
import android.content.Intent;
44
import android.os.Bundle;
5+
import android.os.Environment;
56
import android.support.v7.app.AppCompatActivity;
67

78
import com.facebook.drawee.backends.pipeline.Fresco;
9+
import com.renyu.imagelibrary.commonutils.Utils;
810
import com.renyu.imagelibrary.preview.ImagePreviewActivity;
911

1012
import java.util.ArrayList;
@@ -19,18 +21,20 @@ protected void onCreate(Bundle savedInstanceState) {
1921
com.blankj.utilcode.util.Utils.init(this);
2022
Fresco.initialize(this);
2123

22-
ArrayList<String> strings=new ArrayList<>();
23-
strings.add("http://7b1g8u.com1.z0.glb.clouddn.com/ccc.jpg");
24-
strings.add("http://img.sj33.cn/uploads/allimg/201302/1-130201105055.jpg");
25-
Intent intent=new Intent(this, ImagePreviewActivity.class);
26-
Bundle bundle=new Bundle();
27-
bundle.putBoolean("canDownload", false);
28-
bundle.putInt("position", 0);
29-
bundle.putBoolean("canEdit", false);
30-
bundle.putStringArrayList("urls", strings);
31-
bundle.putString("rightNav", "查看");
32-
bundle.putParcelable("rightNavClick", new RightNavClick());
33-
intent.putExtras(bundle);
34-
startActivity(intent);
24+
// ArrayList<String> strings=new ArrayList<>();
25+
// strings.add("http://7b1g8u.com1.z0.glb.clouddn.com/ccc.jpg");
26+
// strings.add("http://img.sj33.cn/uploads/allimg/201302/1-130201105055.jpg");
27+
// Intent intent=new Intent(this, ImagePreviewActivity.class);
28+
// Bundle bundle=new Bundle();
29+
// bundle.putBoolean("canDownload", false);
30+
// bundle.putInt("position", 0);
31+
// bundle.putBoolean("canEdit", false);
32+
// bundle.putStringArrayList("urls", strings);
33+
// bundle.putString("rightNav", "查看");
34+
// bundle.putParcelable("rightNavClick", new RightNavClick());
35+
// intent.putExtras(bundle);
36+
// startActivity(intent);
37+
38+
Utils.showLongPreview(this, "http://7b1g8u.com1.z0.glb.clouddn.com/ccc.jpg", Environment.getExternalStorageDirectory().getPath());
3539
}
3640
}

app/src/main/java/com/renyu/androidimagelibrary/SubsamplingActivity.java

Lines changed: 0 additions & 30 deletions
This file was deleted.

0 commit comments

Comments
 (0)