Commit aba0dff9cc61ba0d42aa2ed7f0c456a35ac39dee

Authored by 韩亚云
1 parent fd12b744

图片库代码更新

Showing 31 changed files with 96 additions and 2572 deletions
core/imageload/src/main/java/com/cnlive/core/gridview/GridImgUtil.java
@@ -4,39 +4,33 @@ import android.content.Context; @@ -4,39 +4,33 @@ import android.content.Context;
4 import android.graphics.drawable.Drawable; 4 import android.graphics.drawable.Drawable;
5 import android.widget.ImageView; 5 import android.widget.ImageView;
6 6
  7 +import com.bumptech.glide.Glide;
7 import com.bumptech.glide.request.RequestListener; 8 import com.bumptech.glide.request.RequestListener;
8 import com.bumptech.glide.request.target.SimpleTarget; 9 import com.bumptech.glide.request.target.SimpleTarget;
9 -import com.cnlive.core.imageload.R;  
10 -import com.cnlive.core.libs.base.application.GlideApp;  
11 10
12 /** 11 /**
13 * created by hanyayun 12 * created by hanyayun
14 * on 2020/2/13 13 * on 2020/2/13
15 */ 14 */
16 public class GridImgUtil { 15 public class GridImgUtil {
  16 +
17 public static void loadImage(Context context, final Object src, final ImageView view) { 17 public static void loadImage(Context context, final Object src, final ImageView view) {
18 - GlideApp.with(context) 18 + Glide.with(context)
19 .load(src) 19 .load(src)
20 -// .placeholder(R.drawable.img_placeholder)  
21 -// .error(R.drawable.img_placeholder)  
22 .into(view); 20 .into(view);
23 } 21 }
24 22
25 public static void loadImage(Context context, final Object src, final ImageView view, RequestListener<Drawable> listener) { 23 public static void loadImage(Context context, final Object src, final ImageView view, RequestListener<Drawable> listener) {
26 - GlideApp.with(context) 24 + Glide.with(context)
27 .load(src) 25 .load(src)
28 -// .placeholder(R.drawable.img_placeholder)  
29 -// .error(R.drawable.img_placeholder)  
30 .listener(listener) 26 .listener(listener)
31 .into(view); 27 .into(view);
32 } 28 }
33 29
34 public static void loadImage(Context context, final Object src, final SimpleTarget<Drawable> target) { 30 public static void loadImage(Context context, final Object src, final SimpleTarget<Drawable> target) {
35 - GlideApp.with(context) 31 + Glide.with(context)
36 .load(src) 32 .load(src)
37 .thumbnail(0.1f) 33 .thumbnail(0.1f)
38 -// .placeholder(R.drawable.img_placeholder)  
39 -// .error(R.drawable.img_placeholder)  
40 .into(target); 34 .into(target);
41 } 35 }
42 } 36 }
core/imageload/src/main/java/com/cnlive/core/imageload/config/SingleConfig.java
@@ -4,7 +4,6 @@ import android.content.Context; @@ -4,7 +4,6 @@ import android.content.Context;
4 import android.graphics.Bitmap; 4 import android.graphics.Bitmap;
5 import android.util.Log; 5 import android.util.Log;
6 import android.view.View; 6 import android.view.View;
7 -import android.view.animation.Animation;  
8 7
9 import com.bumptech.glide.load.engine.DiskCacheStrategy; 8 import com.bumptech.glide.load.engine.DiskCacheStrategy;
10 import com.bumptech.glide.request.transition.ViewPropertyAnimationFactory; 9 import com.bumptech.glide.request.transition.ViewPropertyAnimationFactory;
@@ -21,6 +20,7 @@ public class SingleConfig { @@ -21,6 +20,7 @@ public class SingleConfig {
21 private Context context; 20 private Context context;
22 private boolean ignoreCertificateVerify; //https是否忽略校验 21 private boolean ignoreCertificateVerify; //https是否忽略校验
23 private String url; 22 private String url;
  23 + private Bitmap bitmap;
24 24
25 private float thumbnail; //缩略图缩放倍数 25 private float thumbnail; //缩略图缩放倍数
26 private String filePath; //文件路径 26 private String filePath; //文件路径
@@ -77,6 +77,7 @@ public class SingleConfig { @@ -77,6 +77,7 @@ public class SingleConfig {
77 77
78 public SingleConfig(ConfigBuilder builder) { 78 public SingleConfig(ConfigBuilder builder) {
79 this.url = builder.url; 79 this.url = builder.url;
  80 + this.bitmap = builder.bitmap;
80 this.thumbnail = builder.thumbnail; 81 this.thumbnail = builder.thumbnail;
81 this.filePath = builder.filePath; 82 this.filePath = builder.filePath;
82 this.file = builder.file; 83 this.file = builder.file;
@@ -171,6 +172,10 @@ public class SingleConfig { @@ -171,6 +172,10 @@ public class SingleConfig {
171 return url; 172 return url;
172 } 173 }
173 174
  175 + public Bitmap getBitmap() {
  176 + return bitmap;
  177 + }
  178 +
174 public float getThumbnail() { 179 public float getThumbnail() {
175 return thumbnail; 180 return thumbnail;
176 } 181 }
@@ -374,6 +379,7 @@ public class SingleConfig { @@ -374,6 +379,7 @@ public class SingleConfig {
374 * @return 379 * @return
375 */ 380 */
376 private String url; 381 private String url;
  382 + private Bitmap bitmap;
377 private float thumbnail; 383 private float thumbnail;
378 private String filePath; 384 private String filePath;
379 private File file; 385 private File file;
@@ -387,7 +393,7 @@ public class SingleConfig { @@ -387,7 +393,7 @@ public class SingleConfig {
387 private boolean asBitmap;//只获取bitmap 393 private boolean asBitmap;//只获取bitmap
388 private BitmapListener bitmapListener; 394 private BitmapListener bitmapListener;
389 395
390 - // TODO: 2017/4/24 宽高的获取 396 + // 宽高的获取
391 private int width; 397 private int width;
392 private int height; 398 private int height;
393 399
@@ -414,7 +420,6 @@ public class SingleConfig { @@ -414,7 +420,6 @@ public class SingleConfig {
414 420
415 //UI: 421 //UI:
416 private int placeHolderResId; 422 private int placeHolderResId;
417 -  
418 private int errorResId; 423 private int errorResId;
419 424
420 private int shapeMode;//默认矩形,可选直角矩形,圆形/椭圆 425 private int shapeMode;//默认矩形,可选直角矩形,圆形/椭圆
@@ -464,6 +469,11 @@ public class SingleConfig { @@ -464,6 +469,11 @@ public class SingleConfig {
464 return this; 469 return this;
465 } 470 }
466 471
  472 + public ConfigBuilder setGif(boolean gif) {
  473 + isGif = gif;
  474 + return this;
  475 + }
  476 +
467 /** 477 /**
468 * 设置网络路径 478 * 设置网络路径
469 * 479 *
@@ -472,9 +482,11 @@ public class SingleConfig { @@ -472,9 +482,11 @@ public class SingleConfig {
472 */ 482 */
473 public ConfigBuilder url(String url) { 483 public ConfigBuilder url(String url) {
474 this.url = url; 484 this.url = url;
475 - if (url.contains("gif")) {  
476 - isGif = true;  
477 - } 485 + return this;
  486 + }
  487 +
  488 + public ConfigBuilder bitmap(Bitmap bitmap){
  489 + this.bitmap = bitmap;
478 return this; 490 return this;
479 } 491 }
480 492
@@ -497,9 +509,6 @@ public class SingleConfig { @@ -497,9 +509,6 @@ public class SingleConfig {
497 } 509 }
498 510
499 this.filePath = filePath; 511 this.filePath = filePath;
500 - if (filePath.contains("gif")) {  
501 - isGif = true;  
502 - }  
503 return this; 512 return this;
504 } 513 }
505 514
@@ -526,11 +535,6 @@ public class SingleConfig { @@ -526,11 +535,6 @@ public class SingleConfig {
526 return this; 535 return this;
527 } 536 }
528 537
529 - public ConfigBuilder setGif(boolean gif) {  
530 - isGif = gif;  
531 - return this;  
532 - }  
533 -  
534 /** 538 /**
535 * 加载ContentProvider资源 539 * 加载ContentProvider资源
536 * 540 *
@@ -542,11 +546,6 @@ public class SingleConfig { @@ -542,11 +546,6 @@ public class SingleConfig {
542 this.contentProvider = contentProvider; 546 this.contentProvider = contentProvider;
543 return this; 547 return this;
544 } 548 }
545 -  
546 - if (contentProvider.contains("gif")) {  
547 - isGif = true;  
548 - }  
549 -  
550 return this; 549 return this;
551 } 550 }
552 551
@@ -557,13 +556,7 @@ public class SingleConfig { @@ -557,13 +556,7 @@ public class SingleConfig {
557 * @return 556 * @return
558 */ 557 */
559 public ConfigBuilder raw(String rawPath) { 558 public ConfigBuilder raw(String rawPath) {
560 -  
561 this.rawPath = rawPath; 559 this.rawPath = rawPath;
562 -  
563 - if (rawPath.contains("gif")) {  
564 - isGif = true;  
565 - }  
566 -  
567 return this; 560 return this;
568 } 561 }
569 562
@@ -575,11 +568,6 @@ public class SingleConfig { @@ -575,11 +568,6 @@ public class SingleConfig {
575 */ 568 */
576 public ConfigBuilder asserts(String assertspath) { 569 public ConfigBuilder asserts(String assertspath) {
577 this.assertspath = assertspath; 570 this.assertspath = assertspath;
578 -  
579 - if (assertspath.contains("gif")) {  
580 - isGif = true;  
581 - }  
582 -  
583 return this; 571 return this;
584 } 572 }
585 573
@@ -766,9 +754,5 @@ public class SingleConfig { @@ -766,9 +754,5 @@ public class SingleConfig {
766 this.isNeedVignette = true; 754 this.isNeedVignette = true;
767 return this; 755 return this;
768 } 756 }
769 -  
770 -  
771 } 757 }
772 -  
773 -  
774 } 758 }
core/imageload/src/main/java/com/cnlive/core/imageload/loader/GlideLoader.java
@@ -30,6 +30,7 @@ import com.cnlive.core.imageload.config.ShapeMode; @@ -30,6 +30,7 @@ import com.cnlive.core.imageload.config.ShapeMode;
30 import com.cnlive.core.imageload.config.SingleConfig; 30 import com.cnlive.core.imageload.config.SingleConfig;
31 import com.cnlive.core.imageload.util.DownLoadImageService; 31 import com.cnlive.core.imageload.util.DownLoadImageService;
32 import com.cnlive.core.imageload.util.ImageUtil; 32 import com.cnlive.core.imageload.util.ImageUtil;
  33 +
33 import androidx.annotation.Nullable; 34 import androidx.annotation.Nullable;
34 import jp.wasabeef.glide.transformations.BlurTransformation; 35 import jp.wasabeef.glide.transformations.BlurTransformation;
35 import jp.wasabeef.glide.transformations.ColorFilterTransformation; 36 import jp.wasabeef.glide.transformations.ColorFilterTransformation;
@@ -51,7 +52,7 @@ import jp.wasabeef.glide.transformations.gpu.VignetteFilterTransformation; @@ -51,7 +52,7 @@ import jp.wasabeef.glide.transformations.gpu.VignetteFilterTransformation;
51 * created by hanyayun 52 * created by hanyayun
52 * on 2019/11/19 53 * on 2019/11/19
53 */ 54 */
54 -public class GlideLoader implements ILoader{ 55 +public class GlideLoader implements ILoader {
55 56
56 /** 57 /**
57 * @param context 上下文 58 * @param context 上下文
@@ -207,7 +208,9 @@ public class GlideLoader implements ILoader{ @@ -207,7 +208,9 @@ public class GlideLoader implements ILoader{
207 if (!TextUtils.isEmpty(config.getUrl())) { 208 if (!TextUtils.isEmpty(config.getUrl())) {
208 request = requestManager.load(ImageUtil.appendUrl(config.getUrl())); 209 request = requestManager.load(ImageUtil.appendUrl(config.getUrl()));
209 Log.e("TAG","getUrl : "+config.getUrl()); 210 Log.e("TAG","getUrl : "+config.getUrl());
210 - } else if (!TextUtils.isEmpty(config.getFilePath())) { 211 + }else if(config.getBitmap() != null){
  212 + request = requestManager.load(config.getBitmap());
  213 + } if (!TextUtils.isEmpty(config.getFilePath())) {
211 request = requestManager.load(ImageUtil.appendUrl(config.getFilePath())); 214 request = requestManager.load(ImageUtil.appendUrl(config.getFilePath()));
212 Log.e("TAG","getFilePath : "+config.getFilePath()); 215 Log.e("TAG","getFilePath : "+config.getFilePath());
213 } else if (!TextUtils.isEmpty(config.getContentProvider())) { 216 } else if (!TextUtils.isEmpty(config.getContentProvider())) {
core/imageload/src/main/java/com/cnlive/core/imageload/loader/ILoader.java
@@ -23,7 +23,7 @@ public interface ILoader { @@ -23,7 +23,7 @@ public interface ILoader {
23 23
24 void clearDiskCache(); 24 void clearDiskCache();
25 25
26 - void clearMomoryCache(Context context,View view); 26 + void clearMomoryCache(Context context, View view);
27 27
28 void clearMomory(); 28 void clearMomory();
29 29
core/imageload/src/main/java/com/cnlive/core/imageload/preview/DataProcessingActivity.java deleted 100644 → 0
1 -package com.cnlive.core.imageload.preview;  
2 -  
3 -  
4 -import android.app.Activity;  
5 -import android.content.Context;  
6 -import android.content.Intent;  
7 -import android.os.Bundle;  
8 -import android.text.TextUtils;  
9 -import android.view.View;  
10 -import android.view.ViewGroup;  
11 -  
12 -import androidx.databinding.ViewDataBinding;  
13 -  
14 -import com.cnlive.core.imageload.R;  
15 -import com.cnlive.core.imageload.databinding.ActivityDataProcessingBinding;  
16 -import com.cnlive.core.imageload.preview.model.PreviewData;  
17 -import com.cnlive.core.imageload.preview.model.ProcessImageInfo;  
18 -import com.cnlive.core.imageload.preview.presenter.ProcessHtmlPresenter;  
19 -import com.cnlive.core.imageload.preview.view.ProcessHtmlView;  
20 -import com.cnlive.core.imageload.preview.widget.DownloadUtil;  
21 -import com.cnlive.core.libs.base.frame.activity.BaseActivity;  
22 -  
23 -import java.util.ArrayList;  
24 -  
25 -/**  
26 - * 作者: 吴奎庆  
27 - * <p>  
28 - * 时间: 2018/9/19  
29 - * <p>  
30 - * 简介: 图片预览页面数据处理的页面  
31 - */  
32 -  
33 -public class DataProcessingActivity extends BaseActivity<ProcessHtmlView, ProcessHtmlPresenter> {  
34 -  
35 -  
36 - public ArrayList<ProcessImageInfo> list;  
37 - public String imgUrl;  
38 - public PreviewData previewData;  
39 - private static String type = "HTML5";  
40 - public ActivityDataProcessingBinding binding;  
41 -  
42 - public static void startActivity(Context contxt, ArrayList<ProcessImageInfo> list, String url, PreviewData previewData) {  
43 - Intent intent = new Intent(contxt, DataProcessingActivity.class);  
44 - intent.putParcelableArrayListExtra("data", list);  
45 - intent.putExtra("previewData", previewData);  
46 - intent.putExtra("imgUrl", url);  
47 - Activity activity = (Activity) contxt;  
48 - activity.startActivity(intent);  
49 - activity.overridePendingTransition(R.anim.preview_activity_in, R.anim.preview_activity_out);  
50 - }  
51 -  
52 - @Override  
53 - protected int getBindLayoutId() {  
54 - return R.layout.activity_data_processing;  
55 - }  
56 -  
57 - @Override  
58 - protected void initBindingLayoutData(ViewDataBinding baseBinding) {  
59 - super.initBindingLayoutData(baseBinding);  
60 - binding = (ActivityDataProcessingBinding) baseBinding;  
61 -  
62 - }  
63 -  
64 - @Override  
65 - protected void initView() {  
66 - getWindow().getDecorView().setSystemUiVisibility(View.SYSTEM_UI_FLAG_FULLSCREEN |  
67 - View.SYSTEM_UI_FLAG_LAYOUT_FULLSCREEN);  
68 - getWindow().setLayout(ViewGroup.LayoutParams.MATCH_PARENT, ViewGroup.LayoutParams.MATCH_PARENT);  
69 -  
70 -  
71 - if (getIntent() != null && "com.cnlive.strike.moudle.preview.ui.DataProcessingActivity".equals(getIntent().getAction())) {  
72 - String html5Type = getIntent().getStringExtra("prviewType");  
73 - imgUrl = getIntent().getStringExtra("imgUrl");  
74 - if (!TextUtils.isEmpty(type) && type.equals(html5Type)) {  
75 - if (getMvpView()!=null)getMvpView().initHtm5Type();  
76 - }  
77 - }else {  
78 - list = getIntent().getParcelableArrayListExtra("data");  
79 - imgUrl = getIntent().getStringExtra("imgUrl");  
80 - previewData = (PreviewData) getIntent().getSerializableExtra("previewData");  
81 - }  
82 -  
83 - if (getMvpView() != null) getMvpView().initView();  
84 - }  
85 -  
86 - @Override  
87 - public void finish() {  
88 - super.finish();  
89 - overridePendingTransition(R.anim.preview_activity_in, R.anim.preview_activity_out);  
90 - }  
91 -  
92 - @Override  
93 - protected void onDestroy() {  
94 - super.onDestroy();  
95 - if (getMvpView() != null) getMvpView().hideLoading();  
96 - DownloadUtil.getInstance().cancle();  
97 - }  
98 -}  
core/imageload/src/main/java/com/cnlive/core/imageload/preview/PreviewImageViewActivity.java deleted 100644 → 0
1 -package com.cnlive.core.imageload.preview;  
2 -  
3 -import android.Manifest;  
4 -import android.app.Activity;  
5 -import android.content.Intent;  
6 -import android.graphics.Color;  
7 -import android.view.View;  
8 -  
9 -import com.alibaba.android.arouter.facade.annotation.Route;  
10 -import com.cnlive.core.imageload.R;  
11 -import com.cnlive.core.imageload.databinding.ActivityPreviewImageViewBinding;  
12 -import com.cnlive.core.imageload.preview.adapter.PreviewAdapter;  
13 -import com.cnlive.core.imageload.preview.model.ImagePreviewShowInfo;  
14 -import com.cnlive.core.imageload.preview.model.PreviewData;  
15 -import com.cnlive.core.imageload.preview.presenter.PreviewImagePresenter;  
16 -import com.cnlive.core.imageload.preview.view.PreviewImageView;  
17 -import com.cnlive.core.libs.base.frame.activity.BaseActivity;  
18 -import com.cnlive.core.libs.base.interfaces.OnPermissionResponseListener;  
19 -import com.cnlive.core.libs.base.util.StatusBarUtil;  
20 -  
21 -import java.util.ArrayList;  
22 -import java.util.List;  
23 -  
24 -import androidx.core.app.ActivityCompat;  
25 -import androidx.core.app.ActivityOptionsCompat;  
26 -import androidx.databinding.ViewDataBinding;  
27 -import androidx.fragment.app.Fragment;  
28 -  
29 -/**  
30 - * 创建:wukuiqing  
31 - * <p>  
32 - * 时间:2018/3/26  
33 - * <p>  
34 - * 描述:  
35 - */  
36 -@Route(path = "/preview/PreviewImageViewActivity")  
37 -public class PreviewImageViewActivity extends BaseActivity<PreviewImageView, PreviewImagePresenter> {  
38 -  
39 - ImagePreviewShowInfo previewInfo;  
40 - public PreviewData data;  
41 - public ArrayList<ImagePreviewShowInfo> picList = new ArrayList<>();  
42 - public String TYPE_OLENY_IMG = "onlyShowImg";  
43 - public String TYPE_OLENY_OTHERIMG = "otherImg";  
44 - public String TYPE_HTML_IMG = "htmlImg";  
45 - public String showPic;  
46 - public List<Fragment> fragmentList;  
47 - public PreviewAdapter fragmentAdapter;  
48 - public int currentItem = 0;  
49 - public ActivityPreviewImageViewBinding binding;  
50 -  
51 -  
52 - /**  
53 - * 视频预览  
54 - *  
55 - * @param context  
56 - */  
57 - public static void startPreviewPictrue(Activity context, View transitionView, PreviewData data) {  
58 - Intent intent = new Intent(context, PreviewImageViewActivity.class);  
59 - intent.putExtra("data", data);  
60 - ActivityOptionsCompat options = ActivityOptionsCompat  
61 - .makeSceneTransitionAnimation(context, transitionView, "transition");  
62 - ActivityCompat.startActivity(context, intent, options.toBundle());  
63 - }  
64 -  
65 - @Override  
66 - protected void initView() {  
67 - getWindow().getDecorView().setBackgroundColor(Color.TRANSPARENT);  
68 - StatusBarUtil.setTransparentForWindow(this);  
69 - StatusBarUtil.addTranslucentView(this,0);  
70 - if (getPresenter()!=null)getPresenter().processData(PreviewImageViewActivity.this,getIntent());  
71 - }  
72 -  
73 - @Override  
74 - protected int getBindLayoutId() {  
75 - return R.layout.activity_preview_image_view;  
76 - }  
77 -  
78 -  
79 - @Override  
80 - protected void initBindingLayoutData(ViewDataBinding baseBinding) {  
81 - super.initBindingLayoutData(baseBinding);  
82 - binding = (ActivityPreviewImageViewBinding) baseBinding;  
83 -  
84 - }  
85 -  
86 - @Override  
87 - public void onBackPressed() {  
88 - if(!isFinishing()) {  
89 - finish();  
90 - overridePendingTransition(android.R.anim.fade_in, android.R.anim.fade_out);  
91 - }  
92 - }  
93 -  
94 -  
95 - //弹出处理图片的工具页面  
96 - public void showProcessDialog(ImagePreviewShowInfo info){  
97 - previewInfo=info;  
98 - requestPermission(String.valueOf(R.string.dialog_imagepicker_permission_save_pic),new String[]{Manifest.permission.WRITE_EXTERNAL_STORAGE}, new OnPermissionResponseListener() {  
99 - @Override  
100 - public void onSuccess(String[] permissions) {  
101 - if(getMvpView() != null) {  
102 - getMvpView().showQrDialog("", info.getImgPath());  
103 - }  
104 - }  
105 -  
106 - @Override  
107 - public void onFail() {  
108 -  
109 - }  
110 - });  
111 - }  
112 -  
113 - @Override  
114 - protected void onDestroy() {  
115 - super.onDestroy();  
116 - if(getPresenter() != null){  
117 - getPresenter().cancel();  
118 - }  
119 - }  
120 -}  
core/imageload/src/main/java/com/cnlive/core/imageload/preview/PreviewImgFragment.java deleted 100644 → 0
1 -package com.cnlive.core.imageload.preview;  
2 -  
3 -import android.os.Bundle;  
4 -import android.view.View;  
5 -  
6 -import com.bumptech.glide.Glide;  
7 -import com.cnlive.core.imageload.R;  
8 -import com.cnlive.core.imageload.databinding.FragmentPreviewImgBinding;  
9 -import com.cnlive.core.imageload.preview.model.ImagePreviewShowInfo;  
10 -import com.cnlive.core.imageload.preview.presenter.PreviewImgPresenter;  
11 -import com.cnlive.core.imageload.preview.view.PreviewImgView;  
12 -import com.cnlive.core.libs.base.frame.fragment.BaseFragment;  
13 -  
14 -import androidx.annotation.Nullable;  
15 -import androidx.databinding.ViewDataBinding;  
16 -  
17 -  
18 -/**  
19 - * 作者: 吴奎庆  
20 - * <p>  
21 - * 时间: 2018/12/4  
22 - * <p>  
23 - * 简介:  
24 - */  
25 -public class PreviewImgFragment extends BaseFragment<PreviewImgView, PreviewImgPresenter> {  
26 -  
27 - public ImagePreviewShowInfo previewData;  
28 - public FragmentPreviewImgBinding binding;  
29 -  
30 - public static PreviewImgFragment newInstance(ImagePreviewShowInfo info) {  
31 - Bundle args = new Bundle();  
32 - args.putSerializable("data", info);  
33 - PreviewImgFragment fragment = new PreviewImgFragment();  
34 - fragment.setArguments(args);  
35 - return fragment;  
36 - }  
37 -  
38 - @Override  
39 - protected int getBindLayoutId() {  
40 - return R.layout.fragment_preview_img;  
41 - }  
42 -  
43 - @Override  
44 - protected void initBindingLayoutData(ViewDataBinding baseBinding) {  
45 - super.initBindingLayoutData(baseBinding);  
46 - binding = (FragmentPreviewImgBinding) baseBinding;  
47 -  
48 - }  
49 -  
50 -  
51 - @Override  
52 - protected void initParams(Bundle params) {  
53 - previewData = (ImagePreviewShowInfo) params.getSerializable("data");  
54 -  
55 - }  
56 -  
57 - @Override  
58 - protected void initView() {  
59 - if (getMvpView() != null) getMvpView().initView(previewData);  
60 - }  
61 -  
62 - @Override  
63 - public void onDestroy() {  
64 - super.onDestroy();  
65 - Glide.with(this).onDestroy();  
66 - if (getMvpView() != null) getMvpView().timerCancel();  
67 - }  
68 -}  
core/imageload/src/main/java/com/cnlive/core/imageload/preview/adapter/PrevieBindingAdapter.java deleted 100644 → 0
1 -package com.cnlive.core.imageload.preview.adapter;  
2 -  
3 -import android.content.Context;  
4 -import android.view.LayoutInflater;  
5 -import android.view.View;  
6 -import android.view.ViewGroup;  
7 -  
8 -import androidx.databinding.DataBindingUtil;  
9 -import androidx.databinding.ViewDataBinding;  
10 -import androidx.recyclerview.widget.RecyclerView;  
11 -  
12 -/**  
13 - * Created by gujun on 2017/5/23.  
14 - */  
15 -  
16 -public class PrevieBindingAdapter<T> extends PreviewBaseRecyclerAdapter<T> {  
17 - private int layoutId;  
18 - protected int itemBRId;  
19 -  
20 - protected OnAdapterViewClickListener<T> l;  
21 - protected OnAdapterViewLoadMoreListener loadMoreListener;  
22 -  
23 - public PrevieBindingAdapter(Context context) {  
24 - super(context);  
25 - }  
26 -  
27 - public PrevieBindingAdapter(Context context, int layoutId, int itemBRId) {  
28 - super(context);  
29 - this.layoutId = layoutId;  
30 - this.itemBRId = itemBRId;  
31 - }  
32 -  
33 - public void setOnViewClickListener(OnAdapterViewClickListener listener) {  
34 - l = listener;  
35 - }  
36 -  
37 - public void setOnLoadMoreListener(OnAdapterViewLoadMoreListener listener) {  
38 - loadMoreListener = listener;  
39 - }  
40 -  
41 - @Override  
42 - public RecyclerView.ViewHolder onCreateViewHolder(ViewGroup parent, int viewType) {  
43 - ViewDataBinding binding = DataBindingUtil.inflate(LayoutInflater.from(parent.getContext()), layoutId, parent, false);  
44 - PreviewBindingViewHolder viewHolder = new PreviewBindingViewHolder(binding.getRoot());  
45 - viewHolder.setBinding(binding);  
46 - return viewHolder;  
47 - }  
48 -  
49 - @Override  
50 - public void onBindViewHolder(RecyclerView.ViewHolder holder, int position) {  
51 - PreviewBindingViewHolder videoListViewHolder = (PreviewBindingViewHolder) holder;  
52 - videoListViewHolder.getBinding().setVariable(itemBRId, getItem(position));  
53 - if (l != null)  
54 -// videoListViewHolder.getBinding().setVariable(BR.viewClickListener, l);  
55 - videoListViewHolder.getBinding().executePendingBindings();  
56 - if (loadMoreListener != null && position == getList().size() - 1) {  
57 - loadMoreListener.onLoadMore();  
58 - }  
59 - }  
60 -  
61 - public interface OnAdapterViewClickListener<T> {  
62 - void onViewClick(View v, T program);  
63 - }  
64 -  
65 - public interface OnAdapterViewLoadMoreListener {  
66 - void onLoadMore();  
67 - }  
68 -  
69 -}  
core/imageload/src/main/java/com/cnlive/core/imageload/preview/adapter/PreviewAdapter.java deleted 100644 → 0
1 -package com.cnlive.core.imageload.preview.adapter;  
2 -  
3 -  
4 -import java.util.List;  
5 -  
6 -import androidx.fragment.app.Fragment;  
7 -import androidx.fragment.app.FragmentManager;  
8 -import androidx.fragment.app.FragmentStatePagerAdapter;  
9 -  
10 -/**  
11 - * 作者: 吴奎庆  
12 - * <p>  
13 - * 时间: 2018/6/14  
14 - * <p>  
15 - * 简介:  
16 - */  
17 -  
18 -public class PreviewAdapter extends FragmentStatePagerAdapter {  
19 - List<Fragment> fragmentList;  
20 - public PreviewAdapter(FragmentManager fm , List<Fragment> fragmentList) {  
21 - super(fm);  
22 - this.fragmentList=fragmentList;  
23 - }  
24 -  
25 - @Override  
26 - public Fragment getItem(int position) {  
27 - return fragmentList.get(position);  
28 - }  
29 -  
30 - @Override  
31 - public int getCount() {  
32 - return fragmentList!=null?fragmentList.size():0;  
33 - }  
34 -}  
core/imageload/src/main/java/com/cnlive/core/imageload/preview/adapter/PreviewBaseRecyclerAdapter.java deleted 100644 → 0
1 -package com.cnlive.core.imageload.preview.adapter;  
2 -  
3 -import android.content.Context;  
4 -  
5 -import java.util.ArrayList;  
6 -import java.util.Collections;  
7 -import java.util.List;  
8 -  
9 -import androidx.recyclerview.widget.RecyclerView;  
10 -  
11 -/**  
12 - * 作者: 吴奎庆  
13 - * <p>  
14 - * 时间: 2018/12/20  
15 - * <p>  
16 - * 简介:  
17 - */  
18 -  
19 -public abstract class PreviewBaseRecyclerAdapter<T> extends RecyclerView.Adapter<RecyclerView.ViewHolder> {  
20 - protected List<T> mItems;  
21 - protected Context mContext;  
22 -  
23 - public PreviewBaseRecyclerAdapter(Context context) {  
24 - this.mContext = context;  
25 - this.mItems = new ArrayList();  
26 - }  
27 -  
28 - public List<T> getList() {  
29 - return this.mItems;  
30 - }  
31 -  
32 - public void addItem(T item) {  
33 - this.addItem(this.mItems.size(), item);  
34 - }  
35 -  
36 - public void addItem(int index, T item) {  
37 - if (item != null) {  
38 - this.mItems.add(index, item);  
39 -  
40 - try {  
41 - this.notifyItemInserted(index);  
42 - } catch (Exception var4) {  
43 -  
44 - }  
45 -  
46 - }  
47 - }  
48 -  
49 - public void addItems(List<T> items) {  
50 - if (items != null) {  
51 - int position = this.mItems.size() - 1;  
52 - this.mItems.addAll(items);  
53 - this.notifyDataSetChanged();  
54 - }  
55 - }  
56 -  
57 - public void addItems(int indext, List<T> items) {  
58 - if (items != null) {  
59 - this.mItems.addAll(indext, items);  
60 - this.notifyItemRangeInserted(indext, items.size());  
61 - }  
62 - }  
63 -  
64 - public boolean containsAll(List<T> items) {  
65 - return this.mItems.containsAll(items);  
66 - }  
67 -  
68 - public void updateItem(T tasks, int position) {  
69 - if (tasks != null) {  
70 - this.mItems.set(position, tasks);  
71 -  
72 - try {  
73 - this.notifyItemChanged(position);  
74 - } catch (Exception var4) {  
75 -  
76 - }  
77 -  
78 - }  
79 - }  
80 -  
81 - public void updateItems(List<T> items) {  
82 - if (items != null) {  
83 - this.mItems.clear();  
84 - this.mItems.addAll(items);  
85 - this.notifyDataSetChanged();  
86 - }  
87 - }  
88 -  
89 - public int indexOf(T item) {  
90 - return item != null && this.mItems != null && this.mItems.size() > 0 ? this.mItems.indexOf(item) : -1;  
91 - }  
92 -  
93 - public void removeItem(int index) {  
94 - this.mItems.remove(index);  
95 - this.notifyItemRemoved(index);  
96 - }  
97 -  
98 - public void removeAllItems() {  
99 - this.mItems.clear();  
100 - this.notifyDataSetChanged();  
101 - }  
102 -  
103 - public void moveItem(T item, int fromPosition, int toPosition) {  
104 - if (fromPosition > toPosition) {  
105 - Collections.rotate(this.mItems.subList(toPosition, fromPosition + 1), 1);  
106 - } else {  
107 - Collections.rotate(this.mItems.subList(fromPosition, toPosition + 1), -1);  
108 - }  
109 -  
110 - this.notifyItemMoved(fromPosition, toPosition);  
111 - this.mItems.set(toPosition, item);  
112 - this.notifyItemChanged(toPosition);  
113 - }  
114 -  
115 - public void getView(int position, RecyclerView.ViewHolder viewHolder, int type, T item) {  
116 - }  
117 -  
118 - public T getItem(int location) {  
119 - return this.mItems.get(location);  
120 - }  
121 -  
122 - public int getItemCount() {  
123 - return this.mItems == null ? 0 : this.mItems.size();  
124 - }  
125 -}  
core/imageload/src/main/java/com/cnlive/core/imageload/preview/adapter/PreviewBindingViewHolder.java deleted 100644 → 0
1 -package com.cnlive.core.imageload.preview.adapter;  
2 -  
3 -/**  
4 - * 作者: 吴奎庆  
5 - * <p>  
6 - * 时间: 2018/12/20  
7 - * <p>  
8 - * 简介:  
9 - */  
10 -  
11 -import android.view.View;  
12 -  
13 -import androidx.databinding.ViewDataBinding;  
14 -import androidx.recyclerview.widget.RecyclerView;  
15 -  
16 -public class PreviewBindingViewHolder extends RecyclerView.ViewHolder {  
17 - private ViewDataBinding binding;  
18 -  
19 - public PreviewBindingViewHolder(View itemView) {  
20 - super(itemView);  
21 - }  
22 -  
23 - public void setBinding(ViewDataBinding binding) {  
24 - this.binding = binding;  
25 - }  
26 -  
27 - public ViewDataBinding getBinding() {  
28 - return this.binding;  
29 - }  
30 -}  
core/imageload/src/main/java/com/cnlive/core/imageload/preview/adapter/ProcessHtmlAdapter.java deleted 100644 → 0
1 -package com.cnlive.core.imageload.preview.adapter;  
2 -  
3 -import android.content.Context;  
4 -  
5 -import com.cnlive.core.imageload.R;  
6 -import com.cnlive.core.imageload.BR;  
7 -import com.cnlive.core.imageload.databinding.ItemProcessHtmlBinding;  
8 -import com.cnlive.core.imageload.preview.model.ProcessImageInfo;  
9 -  
10 -import androidx.recyclerview.widget.RecyclerView;  
11 -  
12 -/**  
13 - * 作者: 吴奎庆  
14 - * <p>  
15 - * 时间: 2018/9/19  
16 - * <p>  
17 - * 简介:  
18 - */  
19 -  
20 -public class ProcessHtmlAdapter extends PrevieBindingAdapter<ProcessImageInfo> {  
21 - Context mContext;  
22 - OnItemClickListener listener;  
23 -  
24 - public void setItemClickListener(OnItemClickListener listener) {  
25 - this.listener = listener;  
26 - }  
27 -  
28 - public ProcessHtmlAdapter(Context context) {  
29 - super(context, R.layout.item_process_html, BR.data);  
30 - mContext = context;  
31 - }  
32 -  
33 - @Override  
34 - public void onBindViewHolder(RecyclerView.ViewHolder holder, int position) {  
35 - super.onBindViewHolder(holder, position);  
36 - PreviewBindingViewHolder itemHolder = (PreviewBindingViewHolder) holder;  
37 - ItemProcessHtmlBinding binding = (ItemProcessHtmlBinding) itemHolder.getBinding();  
38 - binding.tvItem.setText(getItem(position).funName);  
39 - binding.root.setOnClickListener(v -> {  
40 - listener.OnItemClick(getItem(position));  
41 - });  
42 - }  
43 -  
44 - public interface OnItemClickListener {  
45 - void OnItemClick(ProcessImageInfo item);  
46 - }  
47 -}  
core/imageload/src/main/java/com/cnlive/core/imageload/preview/model/FeedBackInfo.java deleted 100644 → 0
1 -package com.cnlive.core.imageload.preview.model;  
2 -  
3 -/**  
4 - * Created by Lynn on 2018/9/4.  
5 - */  
6 -  
7 -public class FeedBackInfo {  
8 - private String imageUrl;  
9 - private long imageWidth;  
10 - private long imageHeight;  
11 -  
12 - public String getImageUrl() {  
13 - return imageUrl;  
14 - }  
15 -  
16 - public void setImageUrl(String imageUrl) {  
17 - this.imageUrl = imageUrl;  
18 - }  
19 -  
20 - public long getImageWidth() {  
21 - return imageWidth;  
22 - }  
23 -  
24 - public void setImageWidth(long imageWidth) {  
25 - this.imageWidth = imageWidth;  
26 - }  
27 -  
28 - public long getImageHeight() {  
29 - return imageHeight;  
30 - }  
31 -  
32 - public void setImageHeight(long imageHeight) {  
33 - this.imageHeight = imageHeight;  
34 - }  
35 -  
36 - @Override  
37 - public String toString() {  
38 - return "FeedBackInfo{" +  
39 - "imageUrl='" + imageUrl + '\'' +  
40 - ", imageWidth=" + imageWidth +  
41 - ", imageHeight=" + imageHeight +  
42 - '}';  
43 - }  
44 -}  
core/imageload/src/main/java/com/cnlive/core/imageload/preview/model/ImagePreviewShowInfo.java deleted 100644 → 0
1 -package com.cnlive.core.imageload.preview.model;  
2 -  
3 -import java.io.Serializable;  
4 -  
5 -/**  
6 - * created by hanyayun  
7 - * on 2019/11/26  
8 - */  
9 -public class ImagePreviewShowInfo implements Serializable {  
10 - private String imgPath;  
11 - private String previewPath;  
12 -  
13 - public String getImgPath() {  
14 - return imgPath;  
15 - }  
16 -  
17 - public void setImgPath(String imgPath) {  
18 - this.imgPath = imgPath;  
19 - }  
20 -  
21 - public String getPreviewPath() {  
22 - return previewPath;  
23 - }  
24 -  
25 - public void setPreviewPath(String previewPath) {  
26 - this.previewPath = previewPath;  
27 - }  
28 -}  
core/imageload/src/main/java/com/cnlive/core/imageload/preview/model/PreviewData.java deleted 100644 → 0
1 -package com.cnlive.core.imageload.preview.model;  
2 -  
3 -import java.io.Serializable;  
4 -import java.util.ArrayList;  
5 -  
6 -/**  
7 - * Created by xiansong on 2018/4/4.  
8 - */  
9 -  
10 -public class PreviewData implements Serializable {  
11 -  
12 - //moment/sub  
13 - private String collectionType;  
14 - private String sid;  
15 - // 0:文本, 1:图片, 2:视频, 3:h5  
16 - private String type;  
17 - private String itemId;  
18 - private boolean isCollection;  
19 - private String userId;  
20 - //预览的图片 以及视频的预览图  
21 - private String showImg;  
22 - private String videoVid;  
23 - private String videoPath;  
24 - //是否是本地视频  
25 - private boolean isLocal;  
26 - //本地视频的地址  
27 - private String videoLocalPath;  
28 - //是否展示 保存 收藏的弹框  
29 - private boolean isHideDialog;  
30 - //保存文件  
31 - private boolean isSave;  
32 - //本地视频必须传此参数  
33 - private int locwid;  
34 - private int lochei;  
35 - //是否展示好友(默认转发)  
36 - private boolean isFriend = true;  
37 - //是否展示转发生活圈(默认展示)  
38 - private boolean isLife = false;  
39 -  
40 - //是否展示扫描二维码  
41 - private boolean isScan = true;  
42 - private boolean isHide;  
43 -  
44 - private ArrayList<ImagePreviewShowInfo> picList;  
45 -  
46 - public String getCollectionType() {  
47 - return collectionType;  
48 - }  
49 -  
50 - public void setCollectionType(String collectionType) {  
51 - this.collectionType = collectionType;  
52 - }  
53 -  
54 - public boolean isScan() {  
55 - return isScan;  
56 - }  
57 -  
58 - public void setScan(boolean scan) {  
59 - isScan = scan;  
60 - }  
61 -  
62 - public boolean isFriend() {  
63 - return isFriend;  
64 - }  
65 -  
66 - public void setFriend(boolean friend) {  
67 - isFriend = friend;  
68 - }  
69 -  
70 - public boolean isLife() {  
71 - return isLife;  
72 - }  
73 -  
74 - public void setLife(boolean life) {  
75 - isLife = life;  
76 - }  
77 -  
78 - public int getLocwid() {  
79 - return locwid;  
80 - }  
81 -  
82 - public void setLocwid(int locwid) {  
83 - this.locwid = locwid;  
84 - }  
85 -  
86 - public int getLochei() {  
87 - return lochei;  
88 - }  
89 -  
90 - public void setLochei(int lochei) {  
91 - this.lochei = lochei;  
92 - }  
93 -  
94 -  
95 - public boolean isSave() {  
96 - return isSave;  
97 - }  
98 -  
99 - public void setSave(boolean save) {  
100 - isSave = save;  
101 - }  
102 -  
103 - public String getVideoLocalPath() {  
104 - return videoLocalPath;  
105 - }  
106 -  
107 - public void setVideoLocalPath(String videoLocalPath) {  
108 - this.videoLocalPath = videoLocalPath;  
109 - }  
110 -  
111 - public boolean isHideDialog() {  
112 - return isHideDialog;  
113 - }  
114 -  
115 - public void setHideDialog(boolean hideDialog) {  
116 - isHideDialog = hideDialog;  
117 - }  
118 -  
119 -  
120 - public boolean isHide() {  
121 - return isHide;  
122 - }  
123 -  
124 - public void setHide(boolean hide) {  
125 - isHide = hide;  
126 - }  
127 -  
128 - public boolean isCollection() {  
129 - return isCollection;  
130 - }  
131 -  
132 - public void setCollection(boolean collection) {  
133 - isCollection = collection;  
134 - }  
135 -  
136 - public String getShowImg() {  
137 - return showImg;  
138 - }  
139 -  
140 - public void setShowImg(String showImg) {  
141 - this.showImg = showImg;  
142 - }  
143 -  
144 - public String getVideoVid() {  
145 - return videoVid;  
146 - }  
147 -  
148 - public void setVideoVid(String videoVid) {  
149 - this.videoVid = videoVid;  
150 - }  
151 -  
152 - public boolean isLocal() {  
153 - return isLocal;  
154 - }  
155 -  
156 - public void setLocal(boolean local) {  
157 - isLocal = local;  
158 - }  
159 -  
160 - public ArrayList<ImagePreviewShowInfo> getPicList() {  
161 - return picList;  
162 - }  
163 -  
164 - public void setPicList(ArrayList<ImagePreviewShowInfo> picList) {  
165 - this.picList = picList;  
166 - }  
167 -  
168 - public String getVideoPath() {  
169 - return videoPath;  
170 - }  
171 -  
172 - public void setVideoPath(String videoPath) {  
173 - this.videoPath = videoPath;  
174 - }  
175 -  
176 - public String getSid() {  
177 - return sid;  
178 - }  
179 -  
180 - public void setSid(String sid) {  
181 - this.sid = sid;  
182 - }  
183 -  
184 - public String getType() {  
185 - return type;  
186 - }  
187 -  
188 - public void setType(String type) {  
189 - this.type = type;  
190 - }  
191 -  
192 - public String getItemId() {  
193 - return itemId;  
194 - }  
195 -  
196 - public void setItemId(String itemId) {  
197 - this.itemId = itemId;  
198 - }  
199 -  
200 - public String getUserId() {  
201 - return userId;  
202 - }  
203 -  
204 - public void setUserId(String userId) {  
205 - this.userId = userId;  
206 - }  
207 -}  
core/imageload/src/main/java/com/cnlive/core/imageload/preview/model/ProcessImageInfo.java deleted 100644 → 0
1 -package com.cnlive.core.imageload.preview.model;  
2 -  
3 -import android.os.Parcel;  
4 -import android.os.Parcelable;  
5 -  
6 -import androidx.databinding.BaseObservable;  
7 -  
8 -/**  
9 - * 作者: 吴奎庆  
10 - * <p>  
11 - * 时间: 2018/9/1  
12 - * <p>  
13 - * 简介:  
14 - */  
15 -  
16 -public class ProcessImageInfo extends BaseObservable implements Parcelable {  
17 - public String funName;  
18 - public String type;  
19 - public String qrContent;  
20 -  
21 - public ProcessImageInfo(String funName, String type, String qrContent) {  
22 - this.funName = funName;  
23 - this.type = type;  
24 - this.qrContent = qrContent;  
25 - }  
26 -  
27 - protected ProcessImageInfo(Parcel in) {  
28 - funName = in.readString();  
29 - type = in.readString();  
30 - qrContent = in.readString();  
31 - }  
32 -  
33 - public static final Creator<ProcessImageInfo> CREATOR = new Creator<ProcessImageInfo>() {  
34 - @Override  
35 - public ProcessImageInfo createFromParcel(Parcel in) {  
36 - return new ProcessImageInfo(in);  
37 - }  
38 -  
39 - @Override  
40 - public ProcessImageInfo[] newArray(int size) {  
41 - return new ProcessImageInfo[size];  
42 - }  
43 - };  
44 -  
45 - public String getFunName() {  
46 - return funName;  
47 - }  
48 -  
49 - public void setFunName(String funName) {  
50 - this.funName = funName;  
51 - }  
52 -  
53 - public String getType() {  
54 - return type;  
55 - }  
56 -  
57 - public void setType(String type) {  
58 - this.type = type;  
59 - }  
60 -  
61 - public String getQrContent() {  
62 - return qrContent;  
63 - }  
64 -  
65 - public void setQrContent(String qrContent) {  
66 - this.qrContent = qrContent;  
67 - }  
68 -  
69 - @Override  
70 - public int describeContents() {  
71 - return 0;  
72 - }  
73 -  
74 - @Override  
75 - public void writeToParcel(Parcel dest, int flags) {  
76 - dest.writeString(funName);  
77 - dest.writeString(type);  
78 - dest.writeString(qrContent);  
79 - }  
80 -}  
core/imageload/src/main/java/com/cnlive/core/imageload/preview/presenter/PreviewImagePresenter.java deleted 100644 → 0
1 -package com.cnlive.core.imageload.preview.presenter;  
2 -  
3 -import android.content.Context;  
4 -import android.content.Intent;  
5 -import android.text.TextUtils;  
6 -  
7 -import com.bumptech.glide.Glide;  
8 -import com.cnlive.core.imageload.preview.PreviewImageViewActivity;  
9 -import com.cnlive.core.imageload.preview.model.ImagePreviewShowInfo;  
10 -import com.cnlive.core.imageload.preview.model.PreviewData;  
11 -import com.cnlive.core.imageload.preview.view.PreviewImageView;  
12 -import com.cnlive.core.libs.base.frame.presenter.BasePresenter;  
13 -import com.cnlive.core.libs.base.util.FileUtils;  
14 -import com.google.gson.Gson;  
15 -  
16 -import java.io.File;  
17 -import java.util.ArrayList;  
18 -  
19 -import cn.bertsir.zbar.utils.QRUtils;  
20 -import io.reactivex.Observable;  
21 -import io.reactivex.ObservableOnSubscribe;  
22 -import io.reactivex.android.schedulers.AndroidSchedulers;  
23 -import io.reactivex.disposables.Disposable;  
24 -import io.reactivex.schedulers.Schedulers;  
25 -  
26 -/**  
27 - * created by hanyayun  
28 - * on 2019/11/26  
29 - */  
30 -public class PreviewImagePresenter extends BasePresenter<PreviewImageView> {  
31 - //收藏 Event  
32 - private Disposable disposable;  
33 -  
34 - /**  
35 - * 识别是否是二维码  
36 - *  
37 - * @return  
38 - */  
39 - public void isQr(Context context, String path, int position) {  
40 - if (disposable != null) disposable.dispose();  
41 - if (context == null || TextUtils.isEmpty(path)) return;  
42 - disposable = Observable  
43 - .create((ObservableOnSubscribe<String>) emitter -> {  
44 - File scanFile = null;  
45 - if (FileUtils.isFileExists(path) && FileUtils.getFileByPath(path).length() > 0) {  
46 - scanFile = FileUtils.getFileByPath(path);  
47 - } else {  
48 - if (path.contains("http")) {  
49 - File file = Glide.with(context).asFile().load(path).submit().get();  
50 - if (file != null && file.exists() && file.length() > 0) {  
51 - scanFile = file;  
52 - } else {  
53 - emitter.onError(new Throwable("图片地址异常"));  
54 - }  
55 - } else {  
56 - emitter.onError(new Throwable("图片地址异常"));  
57 - }  
58 - }  
59 - if (scanFile != null && FileUtils.isFileExists(scanFile) && scanFile.length() > 0) {  
60 - String content = null;  
61 - content = QRUtils.getInstance().decodeQRcode(scanFile.getAbsolutePath());  
62 - if (TextUtils.isEmpty(scanFile.getAbsolutePath())) {  
63 - content = QRUtils.getInstance().decodeQRcodeByZxing(scanFile.getAbsolutePath());  
64 - }  
65 - if (content != null && content.length() > 0) {  
66 - emitter.onNext(content);  
67 - } else {  
68 - emitter.onNext("");  
69 - }  
70 - } else {  
71 - emitter.onError(new Throwable("图片地址异常"));  
72 - }  
73 - })  
74 - .subscribeOn(Schedulers.io()) //指定被观察者中的方法在io线程中进行处理  
75 - .observeOn(AndroidSchedulers.mainThread()) //指定观察者接收数据在主线程中  
76 - .subscribe(content -> {  
77 - if (content != null && content.length() > 0) {  
78 - ifViewAttached(view -> view.showQrDialog(content, path));  
79 - } else {  
80 - ifViewAttached(view -> view.showQrDialog("", path));  
81 - }  
82 - },  
83 - throwable -> ifViewAttached(view -> view.showMessage("图像解析失败.")));  
84 - }  
85 -  
86 -  
87 - public void cancel() {  
88 - if (disposable != null) disposable.dispose();  
89 - }  
90 -  
91 - /**  
92 - * 处理外部进来的数据  
93 - *  
94 - * @param mActivity  
95 - * @param intent  
96 - */  
97 - public void processData(PreviewImageViewActivity mActivity, Intent intent) {  
98 - if (intent == null) {  
99 - ifViewAttached(view -> view.showError());  
100 - return;  
101 - }  
102 - PreviewData data = (PreviewData) intent.getSerializableExtra("data");  
103 - String type = intent.getStringExtra("type");  
104 - if (mActivity.TYPE_OLENY_IMG.equals(type)) {  
105 - //展示单张图片的逻辑(不能长按操作)  
106 - ifViewAttached(view -> view.showOnlyImg(intent));  
107 - } else if (data != null) {  
108 - mActivity.showPic = data.getShowImg();  
109 - mActivity.picList = data.getPicList();  
110 - mActivity.data= (PreviewData) intent.getSerializableExtra("data");  
111 - ifViewAttached(view -> view.initData(mActivity.showPic, mActivity.picList));  
112 - } else if (mActivity.TYPE_OLENY_OTHERIMG.equals(type)) {  
113 - //处理其他页面跳转进来的逻辑  
114 - ArrayList<String> preImgList = new ArrayList();  
115 - String showPic = intent.getStringExtra("previewUrl");  
116 - String collectionType = intent.getStringExtra("collectionType");  
117 - if (TextUtils.isEmpty(collectionType))collectionType="moment";  
118 - //展示的图片  
119 - preImgList = intent.getStringArrayListExtra("preImgList");  
120 - mActivity.data=new PreviewData();  
121 - boolean isHide = intent.getBooleanExtra("isHide", false);  
122 - ArrayList<ImagePreviewShowInfo> itemList = new ArrayList<>();  
123 - boolean isFriend = intent.getBooleanExtra("isFriend", false);  
124 - boolean isLife = intent.getBooleanExtra("isLife", false);  
125 - boolean isCollection = intent.getBooleanExtra("isCollection", false);  
126 - mActivity.data = new PreviewData();  
127 - ArrayList list = new ArrayList<>();  
128 - for (String pic : preImgList) {  
129 - try {  
130 - Gson gson = new Gson();  
131 - ImagePreviewShowInfo info = gson.fromJson(pic, ImagePreviewShowInfo.class);  
132 - itemList.add(info);  
133 - }catch (Exception e){  
134 - ifViewAttached(view -> view.showError());  
135 - }  
136 -  
137 - }  
138 - mActivity.data.setPicList(list);  
139 - mActivity.data.setHide(isHide);  
140 - mActivity.data.setLife(isLife);  
141 - mActivity.data.setFriend(isFriend);  
142 - mActivity.data.setCollectionType(collectionType);  
143 - mActivity.data.setCollection(isCollection);  
144 - mActivity.data.setShowImg(showPic);  
145 - mActivity.data.setPicList(itemList);  
146 - mActivity.showPic = showPic;  
147 - mActivity.picList = itemList;  
148 - ifViewAttached(view -> view.initData(mActivity.showPic, mActivity.picList));  
149 -  
150 - }else if (mActivity.TYPE_HTML_IMG.equals(type)){  
151 - //处理其他页面跳转进来的逻辑  
152 - ArrayList<String> preImgList = new ArrayList();  
153 - String showPic = intent.getStringExtra("previewUrl");  
154 - String collectionType = intent.getStringExtra("collectionType");  
155 - if (TextUtils.isEmpty(collectionType))collectionType="moment";  
156 - //展示的图片  
157 - preImgList = intent.getStringArrayListExtra("preImgList");  
158 - mActivity.data=new PreviewData();  
159 - boolean isHide = intent.getBooleanExtra("isHide", false);  
160 - ArrayList<ImagePreviewShowInfo> itemList = new ArrayList<>();  
161 - boolean isFriend = intent.getBooleanExtra("isFriend", false);  
162 - boolean isLife = intent.getBooleanExtra("isLife", false);  
163 - boolean isCollection = intent.getBooleanExtra("isCollection", false);  
164 - mActivity.data = new PreviewData();  
165 - ArrayList list = new ArrayList<>();  
166 - for (String pic : preImgList) {  
167 - try {  
168 - Gson gson = new Gson();  
169 - ImagePreviewShowInfo info = gson.fromJson(pic, ImagePreviewShowInfo.class);  
170 - itemList.add(info);  
171 - }catch (Exception e){  
172 - ifViewAttached(view -> view.showError());  
173 - }  
174 -  
175 - }  
176 - mActivity.data.setPicList(list);  
177 - mActivity.data.setHide(isHide);  
178 - mActivity.data.setLife(isLife);  
179 - mActivity.data.setFriend(isFriend);  
180 - mActivity.data.setCollectionType(collectionType);  
181 - mActivity.data.setCollection(isCollection);  
182 - mActivity.data.setShowImg(showPic);  
183 - mActivity.data.setPicList(itemList);  
184 - mActivity.showPic = showPic;  
185 - mActivity.picList = itemList;  
186 - ifViewAttached(view -> view.initHtml(mActivity.showPic, mActivity.picList));  
187 - }else {  
188 - ifViewAttached(view -> view.showError());  
189 - return;  
190 - }  
191 - }  
192 -}  
193 -  
core/imageload/src/main/java/com/cnlive/core/imageload/preview/presenter/PreviewImgPresenter.java deleted 100644 → 0
1 -package com.cnlive.core.imageload.preview.presenter;  
2 -  
3 -  
4 -import android.content.Context;  
5 -  
6 -import com.bumptech.glide.Glide;  
7 -import com.bumptech.glide.load.DataSource;  
8 -import com.bumptech.glide.load.engine.GlideException;  
9 -import com.bumptech.glide.request.FutureTarget;  
10 -import com.bumptech.glide.request.RequestListener;  
11 -import com.bumptech.glide.request.target.Target;  
12 -import com.cnlive.core.imageload.preview.PreviewImgFragment;  
13 -import com.cnlive.core.imageload.preview.model.ImagePreviewShowInfo;  
14 -import com.cnlive.core.imageload.preview.view.PreviewImgView;  
15 -import com.cnlive.core.libs.base.frame.presenter.BasePresenter;  
16 -import com.cnlive.core.libs.base.util.FileUtils;  
17 -import com.hannesdorfmann.mosby3.mvp.MvpBasePresenter;  
18 -  
19 -import java.io.File;  
20 -  
21 -import androidx.annotation.Nullable;  
22 -  
23 -import io.reactivex.Observable;  
24 -import io.reactivex.ObservableEmitter;  
25 -import io.reactivex.ObservableOnSubscribe;  
26 -import io.reactivex.Observer;  
27 -import io.reactivex.android.schedulers.AndroidSchedulers;  
28 -import io.reactivex.disposables.Disposable;  
29 -import io.reactivex.schedulers.Schedulers;  
30 -  
31 -/**  
32 - * 作者: 吴奎庆  
33 - * <p>  
34 - * 时间: 2018/12/4  
35 - * <p>  
36 - * 简介:  
37 - */  
38 -public class PreviewImgPresenter extends BasePresenter<PreviewImgView> {  
39 -  
40 - public void showImg(Context context, ImagePreviewShowInfo previewData) {  
41 -  
42 - if(FileUtils.isFileExists(new File(previewData.getImgPath()))){  
43 - ifViewAttached(view -> view.showResourceReady());  
44 - ifViewAttached(view -> view.showImg(new File(previewData.getImgPath())));  
45 - }else {  
46 - Observable.create(new ObservableOnSubscribe<File>() {  
47 - @Override  
48 - public void subscribe(ObservableEmitter<File> emitter) {  
49 - FutureTarget<File> file = Glide.with(context).asFile().load(previewData.getImgPath()).listener(new RequestListener<File>() {  
50 - @Override  
51 - public boolean onLoadFailed(@Nullable GlideException e, Object model, Target<File> target, boolean isFirstResource) {  
52 -// ifViewAttached(view -> view.showLoadFail());  
53 - return false;  
54 - }  
55 -  
56 - @Override  
57 - public boolean onResourceReady(File resource, Object model, Target<File> target, DataSource dataSource, boolean isFirstResource) {  
58 -// ifViewAttached(view -> view.showResourceReady());  
59 - return false;  
60 - }  
61 - }).submit();  
62 - try {  
63 - File imgfile = file.get();  
64 - if (FileUtils.isFileExists(imgfile)) {  
65 - emitter.onNext(imgfile);  
66 - } else {  
67 - emitter.onError(new Throwable("加载失败"));  
68 - }  
69 - } catch (Exception e) {  
70 - emitter.onError(new Throwable("加载失败"));  
71 - }  
72 -  
73 - }  
74 - }).subscribeOn(Schedulers.io()).observeOn(AndroidSchedulers.mainThread()).subscribe(new Observer<File>() {  
75 -  
76 -  
77 - @Override  
78 - public void onSubscribe(Disposable d) {  
79 -  
80 - }  
81 -  
82 - @Override  
83 - public void onNext(File filse) {  
84 -  
85 - ifViewAttached(view -> view.showResourceReady());  
86 - ifViewAttached(view -> view.showImg(filse));  
87 - }  
88 -  
89 - @Override  
90 - public void onError(Throwable e) {  
91 - ifViewAttached(view -> view.showLoadFail());  
92 - if (e != null) {  
93 - ifViewAttached(view -> view.showMessage(e.getMessage()));  
94 - }  
95 -  
96 - }  
97 -  
98 - @Override  
99 - public void onComplete() {  
100 -  
101 - }  
102 - });  
103 - }  
104 -  
105 - }  
106 -}  
core/imageload/src/main/java/com/cnlive/core/imageload/preview/presenter/ProcessHtmlPresenter.java deleted 100644 → 0
1 -package com.cnlive.core.imageload.preview.presenter;  
2 -  
3 -import android.app.Activity;  
4 -import android.content.Context;  
5 -import android.content.Intent;  
6 -import android.net.Uri;  
7 -import android.os.Environment;  
8 -import android.text.TextUtils;  
9 -import android.util.Log;  
10 -  
11 -import com.bumptech.glide.Glide;  
12 -import com.cnlive.core.imageload.api.ApiServiceStock;  
13 -import com.cnlive.core.imageload.preview.DataProcessingActivity;  
14 -import com.cnlive.core.imageload.preview.model.PreviewData;  
15 -import com.cnlive.core.imageload.preview.view.ProcessHtmlView;  
16 -import com.cnlive.core.libs.base.application.AppConfig;  
17 -import com.cnlive.core.libs.base.frame.presenter.BasePresenter;  
18 -import com.cnlive.core.libs.base.util.FileTypeUtil;  
19 -import com.cnlive.core.libs.base.util.FileUtils;  
20 -import com.cnlive.core.libs.base.util.MD5Util;  
21 -import com.cnlive.core.network.model.BaseResult;  
22 -import com.cnlive.core.network.HttpConn;  
23 -import com.cnlive.core.network.NetCallBack;  
24 -import com.cnlive.core.network.request.BaseRequest;  
25 -import com.cnlive.core.network.upload.UploadLogic;  
26 -import com.cnlive.cloud.user.auth.UserService;  
27 -  
28 -import java.io.File;  
29 -import java.io.FileInputStream;  
30 -import java.io.FileOutputStream;  
31 -import java.io.InputStream;  
32 -import java.util.ArrayList;  
33 -import java.util.HashMap;  
34 -import java.util.List;  
35 -import java.util.Map;  
36 -  
37 -import cn.bertsir.zbar.utils.QRUtils;  
38 -import io.reactivex.Observable;  
39 -import io.reactivex.ObservableEmitter;  
40 -import io.reactivex.ObservableOnSubscribe;  
41 -import io.reactivex.Observer;  
42 -import io.reactivex.android.schedulers.AndroidSchedulers;  
43 -import io.reactivex.disposables.Disposable;  
44 -import io.reactivex.schedulers.Schedulers;  
45 -  
46 -/**  
47 - * 作者: 吴奎庆  
48 - * <p>  
49 - * 时间: 2018/9/19  
50 - * <p>  
51 - * 简介:  
52 - */  
53 -  
54 -public class ProcessHtmlPresenter extends BasePresenter<ProcessHtmlView> {  
55 -  
56 - public void processLocalImag(DataProcessingActivity mContext, String imagePath) {  
57 - if (TextUtils.isEmpty(imagePath) && mContext == null) return;  
58 - List<String> list = new ArrayList();  
59 - list.add(imagePath);  
60 -  
61 - UploadLogic.uploadonePic(mContext, true, list, new NetCallBack<List<com.cnlive.core.network.upload.model.FeedBackInfo>>() {  
62 - @Override  
63 - public void onRequestState(int state) {  
64 -  
65 - }  
66 -  
67 - @Override  
68 - public void onSuccess(List<com.cnlive.core.network.upload.model.FeedBackInfo> data) {  
69 - if(data.size() > 0){  
70 - if (data.get(0).getImageUrl().contains("http")) {  
71 - collection(mContext, data.get(0).getImageUrl(), mContext.previewData);  
72 - } else {  
73 - ifViewAttached(view -> view.showMessage("数据异常"));  
74 - }  
75 - }  
76 - }  
77 -  
78 - @Override  
79 - public void onFailure(String errCode, String errMsg, Exception e) {  
80 - ifViewAttached(view -> view.showMessage(errMsg));  
81 - }  
82 - });  
83 -  
84 - }  
85 -  
86 - /**  
87 - * 收藏图片  
88 - *  
89 - * @param context  
90 - * @param imagePath  
91 - */  
92 - public void collectionPic(DataProcessingActivity context, String imagePath) {  
93 - if (context == null && TextUtils.isEmpty(imagePath)) return;  
94 - if (FileUtils.isFileExists(imagePath)) {  
95 - ifViewAttached(view -> processLocalImag(context, imagePath));  
96 - } else {  
97 - if (context.previewData != null) collection(context, imagePath, context.previewData);  
98 - }  
99 -  
100 - }  
101 -  
102 - private void collection(DataProcessingActivity context, String imagePath, PreviewData previewData) {  
103 - if (previewData == null) return;  
104 - String userID = UserService.getUid(context);  
105 - Map<String, String> requestMap = new HashMap<>();  
106 - requestMap.put("appId", AppConfig.getAppId());  
107 - requestMap.put("sid", userID);  
108 - requestMap.put("type", previewData.getType());  
109 - if ("2".equals(previewData.getType())) {  
110 - requestMap.put("videoImg", previewData.getShowImg());  
111 - requestMap.put("videoId", previewData.getVideoVid());  
112 - }  
113 - if ("3".equals(previewData.getType())) {  
114 - //收藏网址暂未实现  
115 - requestMap.put("shareUrl", previewData.getShowImg());  
116 - }  
117 - if (TextUtils.isEmpty(previewData.getItemId())) {  
118 - int index = imagePath.lastIndexOf("/");  
119 - if (index != -1) {  
120 - String collectionId = imagePath.substring(index + 1);  
121 - requestMap.put("collectionId", collectionId);  
122 - } else {  
123 - requestMap.put("collectionId", imagePath);  
124 - }  
125 - }  
126 - requestMap.put("img", imagePath);  
127 - if (TextUtils.isEmpty(previewData.getCollectionType())) {  
128 - requestMap.put("collectionType", "moment");  
129 - } else {  
130 - requestMap.put("collectionType", previewData.getCollectionType());  
131 - }  
132 -  
133 - if (context != null && context.previewData != null && context.previewData.getUserId() != null) {  
134 - requestMap.put("userId", context.previewData.getUserId());  
135 - }  
136 -  
137 - HttpConn.action(BaseRequest.init()  
138 - .service(ApiServiceStock.class)  
139 - .collection(requestMap), new NetCallBack<BaseResult>() {  
140 - @Override  
141 - public void onRequestState(int state) {  
142 -  
143 - }  
144 -  
145 - @Override  
146 - public void onSuccess(BaseResult data) {  
147 - ifViewAttached(view -> view.sucessful("收藏成功"));  
148 - }  
149 -  
150 - @Override  
151 - public void onFailure(String errCode, String errMsg, Exception e) {  
152 - ifViewAttached(view -> view.showMessage(errMsg));  
153 - }  
154 - });  
155 - }  
156 -  
157 - /**  
158 - * 保存图片  
159 - *  
160 - * @param url  
161 - */  
162 - public void savePicture(Context context, String url) {  
163 - ifViewAttached(view -> view.hideLoading());  
164 - if (TextUtils.isEmpty(url)) {  
165 - ifViewAttached(view -> view.showMessage("非法图片地址"));  
166 - return;  
167 - }  
168 - if (FileUtils.isFileExists(url)) {  
169 -// 本地图片 做copy操作  
170 - ifViewAttached(view -> view.saveLocalImg(url));  
171 - } else {  
172 - if (!url.contains("http")) {  
173 - ifViewAttached(view -> view.showMessage("非法图片地址"));  
174 - return;  
175 - }  
176 - Observable.create(new ObservableOnSubscribe<String>() {  
177 - @Override  
178 - public void subscribe(ObservableEmitter<String> emitter) throws Exception {  
179 - if (url.contains("http")) {  
180 - File file = Glide.with(context).asFile().load(url).submit().get();  
181 - if (file != null && file.exists() && file.length() > 0) {  
182 - String path = file.getAbsolutePath();  
183 - emitter.onNext(path);  
184 - } else {  
185 - emitter.onError(new Throwable("非法图片地址"));  
186 - }  
187 - } else {  
188 - emitter.onError(new Throwable("非法图片地址"));  
189 - }  
190 - }  
191 - }).subscribeOn(Schedulers.io()).observeOn(AndroidSchedulers.mainThread()).subscribe(new Observer<String>() {  
192 - @Override  
193 - public void onSubscribe(Disposable d) {  
194 -  
195 - }  
196 -  
197 - @Override  
198 - public void onNext(String s) {  
199 - if (!TextUtils.isEmpty(s)) {  
200 - ifViewAttached(view -> view.saveLocalImg(s));  
201 - } else {  
202 - ifViewAttached(view -> view.showMessage("数据异常"));  
203 - }  
204 - }  
205 -  
206 - @Override  
207 - public void onError(Throwable e) {  
208 - ifViewAttached(view -> view.showMessage(e.getMessage()));  
209 - }  
210 -  
211 - @Override  
212 - public void onComplete() {  
213 -  
214 - }  
215 - });  
216 - }  
217 -  
218 - }  
219 -  
220 - public void getForwardingImgPath(Context mContext, String type, String imgUrl) {  
221 - if (TextUtils.isEmpty(imgUrl)) return;  
222 - if (mContext == null) return;  
223 - Observable.create((ObservableOnSubscribe<String>) emitter -> {  
224 - if (FileUtils.isFileExists(imgUrl) && FileUtils.getFileByPath(imgUrl).length() > 0) {  
225 - emitter.onNext(imgUrl);  
226 - } else {  
227 - if (imgUrl.contains("http")) {  
228 - File file = Glide.with(mContext).asFile().load(imgUrl).submit().get();  
229 - if (file != null && file.exists() && file.length() > 0) {  
230 - String path = file.getAbsolutePath();  
231 - emitter.onNext(path);  
232 - } else {  
233 - emitter.onError(new Throwable("非法图片地址"));  
234 - }  
235 - } else {  
236 - emitter.onError(new Throwable("非法图片地址"));  
237 - }  
238 -  
239 - }  
240 -  
241 - }).subscribeOn(Schedulers.io()).observeOn(AndroidSchedulers.mainThread()).subscribe(new Observer<String>() {  
242 - @Override  
243 - public void onSubscribe(Disposable d) {  
244 -  
245 - }  
246 -  
247 - @Override  
248 - public void onNext(String content) {  
249 - ifViewAttached(view -> view.hideLoading());  
250 - if (!TextUtils.isEmpty(content)) {  
251 - if (type.equals("friends")) {  
252 - ifViewAttached(view -> view.forwardFriends(content));  
253 - } else if (type.equals("life")) {  
254 - ifViewAttached(view -> view.forwardLife(content));  
255 - } else {  
256 - ifViewAttached(view -> view.showMessage("类型异常"));  
257 - }  
258 - } else {  
259 - ifViewAttached(view -> view.showMessage("非法图片地址"));  
260 - }  
261 - }  
262 -  
263 - @Override  
264 - public void onError(Throwable e) {  
265 - ifViewAttached(view -> {  
266 - view.hideLoading();  
267 - view.showMessage(e.getMessage());  
268 - });  
269 - }  
270 -  
271 - @Override  
272 - public void onComplete() {  
273 -  
274 - }  
275 - });  
276 -  
277 - }  
278 -  
279 -  
280 - public void saveVideo(Activity activity, String imgUrl) {  
281 - if (TextUtils.isEmpty(imgUrl)) {  
282 - ifViewAttached(view -> view.showMessage("数据异常"));  
283 - return;  
284 - }  
285 - if (imgUrl.contains("http")) {  
286 - ifViewAttached(view -> view.saveNetVideo(imgUrl));  
287 - } else {  
288 - saveVideo(activity, FileUtils.getFileByPath(imgUrl));  
289 - }  
290 - }  
291 -  
292 - /**  
293 - * 复制文件 MD5 保存文件(保证文件唯一)  
294 - *  
295 - * @param context  
296 - * @param file  
297 - */  
298 - public void saveVideo(Activity context, File file) {  
299 - try {  
300 - String filePath = "Strike" + File.separator + "video";  
301 - String md5 = MD5Util.getMD5(file);  
302 - InputStream inStream = new FileInputStream(file); //读入原文件  
303 - File appDir = new File(Environment.getExternalStorageDirectory(), filePath);  
304 - if (!appDir.exists()) appDir.mkdir();  
305 -  
306 - String type = FileTypeUtil.getFileType(file.getAbsolutePath());  
307 - String extension;//初始文件扩展名  
308 - if (TextUtils.isEmpty(type)) {  
309 - extension = ".mp4";  
310 - } else {  
311 - extension = "." + type;  
312 - }  
313 -  
314 - File newFile = new File(appDir, md5 + extension);  
315 - FileOutputStream outputStream = new FileOutputStream(newFile);  
316 -  
317 - int byteread = 0;  
318 - byte[] buffer2 = new byte[1444];  
319 - while ((byteread = inStream.read(buffer2)) != -1)  
320 - outputStream.write(buffer2, 0, byteread);  
321 - inStream.close();  
322 - outputStream.close();  
323 -  
324 - context.sendBroadcast(new Intent(Intent.ACTION_MEDIA_SCANNER_SCAN_FILE, Uri.parse(newFile.getAbsolutePath())));  
325 - ifViewAttached(view -> view.showSucessfulMessage("保存成功"));  
326 - context.finish();  
327 - } catch (Exception e) {  
328 - Log.e("文件保存异常:", "Exception ", e);  
329 - }  
330 - }  
331 -  
332 - public void identifyTheQRCode(Context mActivity, String path) {  
333 -  
334 - if (TextUtils.isEmpty(path) && mActivity != null) return;  
335 - Observable.create(new ObservableOnSubscribe<String>() {  
336 - @Override  
337 - public void subscribe(ObservableEmitter<String> emitter) throws Exception {  
338 - File scanFile = null;  
339 - if (FileUtils.isFileExists(path) && FileUtils.getFileByPath(path).length() > 0) {  
340 - scanFile = FileUtils.getFileByPath(path);  
341 - } else {  
342 - if (path.contains("http")) {  
343 - File file = Glide.with(mActivity).asFile().load(path).submit().get();  
344 - if (file != null && file.exists() && file.length() > 0) {  
345 - scanFile = file;  
346 - } else {  
347 - emitter.onError(new Throwable("非法图片地址"));  
348 - }  
349 - } else {  
350 - emitter.onError(new Throwable("非法图片地址"));  
351 - }  
352 - }  
353 - if (scanFile != null && FileUtils.isFileExists(scanFile) && scanFile.length() > 0) {  
354 - String content = null;  
355 - content = QRUtils.getInstance().decodeQRcode(scanFile.getAbsolutePath());  
356 - if (TextUtils.isEmpty(scanFile.getAbsolutePath())) {  
357 - content = QRUtils.getInstance().decodeQRcodeByZxing(scanFile.getAbsolutePath());  
358 - }  
359 - if (content != null && content.length() > 0) {  
360 - emitter.onNext(content);  
361 - } else {  
362 - emitter.onNext("");  
363 - }  
364 - } else {  
365 - emitter.onError(new Throwable("非法图片地址"));  
366 - }  
367 -  
368 - }  
369 - }).subscribeOn(Schedulers.io()) //指定被观察者中的方法在io线程中进行处理  
370 - .observeOn(AndroidSchedulers.mainThread())  
371 - //指定观察者接收数据在主线程中  
372 - .subscribe(new Observer<String>() {  
373 - @Override  
374 - public void onSubscribe(Disposable d) {  
375 - }  
376 -  
377 - @Override  
378 - public void onNext(String qrContent) {  
379 -// if (getView()!=null)getView().hideLoading();  
380 - if (qrContent != null && qrContent.length() > 0) {  
381 - ifViewAttached(view -> view.processQrContent(qrContent));  
382 - } else {  
383 - ifViewAttached(view -> view.showMessage("未识别二维码"));  
384 - }  
385 - }  
386 -  
387 - @Override  
388 - public void onError(Throwable e) {  
389 - ifViewAttached(view -> view.hideLoading());  
390 - ifViewAttached(view -> view.showMessage(e.getMessage()));  
391 - }  
392 -  
393 - @Override  
394 - public void onComplete() {  
395 -  
396 - }  
397 - });  
398 -  
399 - }  
400 -}  
core/imageload/src/main/java/com/cnlive/core/imageload/preview/view/PreviewImageView.java deleted 100644 → 0
1 -package com.cnlive.core.imageload.preview.view;  
2 -  
3 -import android.content.Intent;  
4 -import android.text.TextUtils;  
5 -import android.view.View;  
6 -  
7 -import com.cnlive.core.imageload.preview.DataProcessingActivity;  
8 -import com.cnlive.core.imageload.preview.PreviewImageViewActivity;  
9 -import com.cnlive.core.imageload.preview.PreviewImgFragment;  
10 -import com.cnlive.core.imageload.preview.adapter.PreviewAdapter;  
11 -import com.cnlive.core.imageload.preview.model.ImagePreviewShowInfo;  
12 -import com.cnlive.core.imageload.preview.model.PreviewData;  
13 -import com.cnlive.core.imageload.preview.model.ProcessImageInfo;  
14 -import com.cnlive.core.libs.base.frame.view.BaseView;  
15 -import com.cnlive.core.libs.base.util.AlertUtil;  
16 -import com.cnlive.cloud.user.auth.UserService;  
17 -import com.google.gson.Gson;  
18 -  
19 -import java.util.ArrayList;  
20 -  
21 -import androidx.core.view.ViewCompat;  
22 -import androidx.viewpager.widget.ViewPager;  
23 -  
24 -/**  
25 - * created by hanyayun  
26 - * on 2019/11/26  
27 - */  
28 -public class PreviewImageView extends BaseView implements ViewPager.OnPageChangeListener {  
29 - PreviewImageViewActivity mActivity;  
30 -  
31 - public PreviewImageView(PreviewImageViewActivity activity) {  
32 - this.mActivity = activity;  
33 - }  
34 -  
35 - public void showQrDialog(String qrContent, String path) {  
36 - if (mActivity.data == null || mActivity.picList.size() == 0 || mActivity.data == null)  
37 - return;  
38 - if (mActivity.data.isHide()) return;  
39 - ArrayList<ProcessImageInfo> itemList = new ArrayList<>();  
40 - if (mActivity.data.isFriend())  
41 - itemList.add(new ProcessImageInfo("转发好友", "friends", qrContent));  
42 - if (mActivity.data.isLife())  
43 - itemList.add(new ProcessImageInfo("转发生活圈", "life", qrContent));  
44 - if (mActivity.data.isCollection())  
45 - itemList.add(new ProcessImageInfo("收藏", "collection", qrContent));  
46 - itemList.add(new ProcessImageInfo("保存图片", "save", qrContent));  
47 - PreviewData previewData = new PreviewData();  
48 - previewData.setCollectionType(mActivity.data.getCollectionType());  
49 - previewData.setType("1");  
50 - previewData.setShowImg(mActivity.data.getShowImg());  
51 - previewData.setUserId(UserService.getUid(mActivity));  
52 - previewData.setScan(mActivity.data.isScan());  
53 - DataProcessingActivity.startActivity(mActivity, itemList, path, previewData);  
54 - }  
55 -  
56 -  
57 - public void showMessage(String message) {  
58 - if (mActivity == null) return;  
59 - AlertUtil.showDeftToast(mActivity, message);  
60 - }  
61 -  
62 - public void showOnlyImg(Intent intent) {  
63 - String type = intent.getStringExtra("type");  
64 - String collectionType = intent.getStringExtra("collectionType");  
65 - if (TextUtils.isEmpty(type)) {  
66 - showError();  
67 - }  
68 - if (mActivity.TYPE_OLENY_IMG.equals(type)) {  
69 - String previewUrl = intent.getStringExtra("previewUrl");  
70 - String imgUrl = intent.getStringExtra("imgUrl");  
71 - mActivity.data = new PreviewData();  
72 - mActivity.data.setShowImg(imgUrl);  
73 - mActivity.data.setCollectionType(collectionType);  
74 - ArrayList list = new ArrayList<>();  
75 - ImagePreviewShowInfo info = new ImagePreviewShowInfo();  
76 - info.setPreviewPath(previewUrl);  
77 - info.setImgPath(imgUrl);  
78 - list.add(info);  
79 - mActivity.data.setPicList(list);  
80 - mActivity.data.setLife(false);  
81 - mActivity.data.setFriend(false);  
82 - mActivity.data.setScan(false);  
83 - mActivity.data.setCollection(false);  
84 - mActivity.showPic = mActivity.data.getShowImg();  
85 - mActivity.picList = mActivity.data.getPicList();  
86 - initData(mActivity.showPic, mActivity.picList);  
87 - } else {  
88 - showError();  
89 - }  
90 -  
91 - }  
92 -  
93 - public void initData(String showPic, ArrayList<ImagePreviewShowInfo> picList) {  
94 - if (mActivity == null) return;  
95 - if (mActivity.fragmentList == null) {  
96 - mActivity.fragmentList = new ArrayList<>();  
97 - } else {  
98 - mActivity.fragmentList.clear();  
99 - }  
100 -  
101 - for (ImagePreviewShowInfo info : picList) {  
102 - if (showPic.equals(info.getImgPath())) {  
103 - mActivity.currentItem = picList.indexOf(info);  
104 - }  
105 - mActivity.fragmentList.add(PreviewImgFragment.newInstance(info));  
106 - }  
107 -  
108 - mActivity.fragmentAdapter = new PreviewAdapter(mActivity.getSupportFragmentManager(), mActivity.fragmentList);  
109 - mActivity.binding.vpPhotos.setAdapter(mActivity.fragmentAdapter);  
110 - mActivity.binding.vpPhotos.setCurrentItem(mActivity.currentItem);  
111 - if (mActivity.picList.size() == 1 || mActivity.picList.size() == 0) {  
112 - mActivity.binding.rlIndicator.setVisibility(View.GONE);  
113 - } else {  
114 - mActivity.binding.rlIndicator.setVisibility(View.VISIBLE);  
115 - setIndicator(mActivity.currentItem, mActivity.picList.size());  
116 - }  
117 - mActivity.binding.vpPhotos.addOnPageChangeListener(this);  
118 - ViewCompat.setTransitionName(mActivity.binding.vpPhotos, "transition");  
119 - }  
120 -  
121 - public void setIndicator(int position, int all) {  
122 - if (mActivity==null)return;  
123 - mActivity.binding.tvCurrent.setText(position + 1 + "");  
124 - mActivity.binding.tvAll.setText(all + "");  
125 - }  
126 -  
127 - public void initHtml(String showPic, ArrayList<ImagePreviewShowInfo> picList) {  
128 - if (mActivity == null) return;  
129 - if (mActivity.fragmentList == null) {  
130 - mActivity.fragmentList = new ArrayList<>();  
131 - } else {  
132 - mActivity.fragmentList.clear();  
133 - }  
134 - Gson gson = new Gson();  
135 - ImagePreviewShowInfo imagePreviewShowInfo = gson.fromJson(showPic, ImagePreviewShowInfo.class);  
136 - for (ImagePreviewShowInfo info : picList) {  
137 -  
138 - if (imagePreviewShowInfo != null  
139 - && imagePreviewShowInfo.getImgPath().equals(info.getImgPath())) {  
140 - mActivity.currentItem = picList.indexOf(info);  
141 - }  
142 - mActivity.fragmentList.add(PreviewImgFragment.newInstance(info));  
143 - }  
144 -  
145 - mActivity.fragmentAdapter = new PreviewAdapter(mActivity.getSupportFragmentManager(), mActivity.fragmentList);  
146 - mActivity.binding.vpPhotos.setAdapter(mActivity.fragmentAdapter);  
147 - mActivity.binding.vpPhotos.setCurrentItem(mActivity.currentItem);  
148 - mActivity.binding.vpPhotos.addOnPageChangeListener(this);  
149 - if (mActivity.picList.size() == 1 || mActivity.picList.size() == 0) {  
150 - mActivity.binding.rlIndicator.setVisibility(View.GONE);  
151 - } else {  
152 - mActivity.binding.rlIndicator.setVisibility(View.VISIBLE);  
153 - setIndicator(mActivity.currentItem, mActivity.picList.size());  
154 - }  
155 - ViewCompat.setTransitionName(mActivity.binding.vpPhotos, "transition");  
156 - }  
157 -  
158 - public void showError() {  
159 - mActivity.binding.rlIndicator.setVisibility(View.GONE);  
160 - mActivity.binding.vpPhotos.setVisibility(View.GONE);  
161 - mActivity.binding.ivError.setVisibility(View.VISIBLE);  
162 - }  
163 -  
164 - @Override  
165 - public void onPageScrolled(int i, float v, int i1) {  
166 -  
167 - }  
168 -  
169 - @Override  
170 - public void onPageSelected(int i) {  
171 - setIndicator(i, mActivity.picList.size());  
172 - }  
173 -  
174 - @Override  
175 - public void onPageScrollStateChanged(int i) {  
176 -  
177 - }  
178 -}  
core/imageload/src/main/java/com/cnlive/core/imageload/preview/view/PreviewImgView.java deleted 100644 → 0
1 -package com.cnlive.core.imageload.preview.view;  
2 -  
3 -import android.text.TextUtils;  
4 -import android.view.View;  
5 -  
6 -import com.bumptech.glide.Glide;  
7 -import com.bumptech.glide.load.engine.DiskCacheStrategy;  
8 -import com.bumptech.glide.request.RequestOptions;  
9 -import com.cnlive.core.imageload.R;  
10 -import com.cnlive.core.imageload.preview.PreviewImageViewActivity;  
11 -import com.cnlive.core.imageload.preview.PreviewImgFragment;  
12 -import com.cnlive.core.imageload.preview.model.ImagePreviewShowInfo;  
13 -import com.cnlive.core.libs.base.frame.view.BaseView;  
14 -import com.cnlive.core.libs.base.util.AlertUtil;  
15 -import com.cnlive.core.libs.base.util.FileTypeUtil;  
16 -import com.cnlive.largeimage.factory.FileBitmapDecoderFactory;  
17 -  
18 -import java.io.File;  
19 -import java.util.Timer;  
20 -import java.util.TimerTask;  
21 -  
22 -/**  
23 - * 作者: 吴奎庆  
24 - * <p>  
25 - * 时间: 2018/12/4  
26 - * <p>  
27 - * 简介:  
28 - */  
29 -public class PreviewImgView extends BaseView {  
30 - PreviewImgFragment mFragment;  
31 - private Timer timer;  
32 -  
33 - public PreviewImgView(PreviewImgFragment mFragment) {  
34 - this.mFragment = mFragment;  
35 - }  
36 -  
37 - public void initView(ImagePreviewShowInfo previewData) {  
38 - RequestOptions options = new RequestOptions();  
39 - options.diskCacheStrategy(DiskCacheStrategy.ALL);  
40 - options.skipMemoryCache(true);  
41 - String previewPath = previewData.getPreviewPath();  
42 - if (!TextUtils.isEmpty(previewPath))  
43 - Glide.with(mFragment).asDrawable().load(previewPath).apply(options).into(mFragment.binding.preview);  
44 -// mFragment.binding.lvLoading.setViewColor(mFragment.getActivity().getResources().getColor(R.color.transparent90_white));  
45 -// mFragment.binding.lvLoading.startAnim();  
46 - mFragment.getPresenter().showImg(mFragment.getActivity(), previewData);  
47 - mFragment.binding.gifview.setOnLongClickListener(new View.OnLongClickListener() {  
48 - @Override  
49 - public boolean onLongClick(View v) {  
50 - PreviewImageViewActivity activity = (PreviewImageViewActivity) mFragment.getActivity();  
51 - if (activity != null)  
52 - activity.showProcessDialog(previewData);  
53 -  
54 - return false;  
55 - }  
56 - });  
57 -  
58 - mFragment.binding.imageView.setOnLongClickListener(new View.OnLongClickListener() {  
59 - @Override  
60 - public boolean onLongClick(View v) {  
61 - PreviewImageViewActivity activity = (PreviewImageViewActivity) mFragment.getActivity();  
62 - if (activity != null)  
63 - activity.showProcessDialog(previewData);  
64 -  
65 - return false;  
66 - }  
67 - });  
68 -  
69 - mFragment.binding.imageView.setOnClickListener(v -> {  
70 - PreviewImageViewActivity activity = (PreviewImageViewActivity) mFragment.getActivity();  
71 - if (activity != null)  
72 - activity.onBackPressed();  
73 -  
74 - });  
75 -  
76 - mFragment.binding.gifview.setOnClickListener(v -> {  
77 - PreviewImageViewActivity activity = (PreviewImageViewActivity) mFragment.getActivity();  
78 - if (activity != null)  
79 - activity.onBackPressed();  
80 -  
81 - });  
82 -  
83 - }  
84 -  
85 - public void showLoadFail() {  
86 -// mFragment.binding.lvLoading.stopAnim();  
87 - mFragment.binding.lvLoading.setVisibility(View.GONE);  
88 - mFragment.binding.preview.setVisibility(View.VISIBLE);  
89 - Glide.with(mFragment).asDrawable().load(R.drawable.preview_zwtp).into(mFragment.binding.preview);  
90 - mFragment.binding.preview.setOnClickListener(v -> {  
91 - PreviewImageViewActivity activity = (PreviewImageViewActivity) mFragment.getActivity();  
92 - if (activity != null)  
93 - activity.onBackPressed();  
94 - });  
95 - mFragment.binding.imageView.setVisibility(View.GONE);  
96 - }  
97 -  
98 - public void showResourceReady() {  
99 -// mFragment.binding.lvLoading.stopAnim();  
100 - mFragment.binding.lvLoading.setVisibility(View.GONE);  
101 - }  
102 -  
103 - public void showMessage(String message) {  
104 - if (mFragment == null) return;  
105 - AlertUtil.showDeftToast(mFragment.getActivity(), message);  
106 - }  
107 -  
108 - public void showImg(File filse) {  
109 - if ("gif".equals(FileTypeUtil.getFileType(filse.getPath()))) {  
110 - mFragment.binding.gifview.setVisibility(View.VISIBLE);  
111 - RequestOptions options = new RequestOptions();  
112 - options.diskCacheStrategy(DiskCacheStrategy.ALL);  
113 - Glide.with(mFragment).asGif().load(filse).apply(options).into(mFragment.binding.gifview);  
114 - } else {  
115 - mFragment.binding.imageView.setVisibility(View.VISIBLE);  
116 - mFragment.binding.imageView.setImage(new FileBitmapDecoderFactory(filse));  
117 -  
118 - }  
119 - hidView(mFragment.binding.preview);  
120 - }  
121 -  
122 - private void hidView(View view) {  
123 -  
124 - TimerTask task = new TimerTask() {  
125 - @Override  
126 - public void run() {  
127 - mFragment.getActivity().runOnUiThread(new Runnable() {  
128 - @Override  
129 - public void run() {  
130 - view.setVisibility(View.GONE);  
131 - }  
132 - });  
133 -  
134 - }  
135 - };  
136 - timer = new Timer();  
137 - timer.schedule(task, 50);//3秒后执行TimeTask的run方法  
138 - }  
139 -  
140 - public void timerCancel() {  
141 - if (timer != null) timer.cancel();  
142 - }  
143 -  
144 -}  
core/imageload/src/main/java/com/cnlive/core/imageload/preview/view/ProcessHtmlView.java deleted 100644 → 0
1 -package com.cnlive.core.imageload.preview.view;  
2 -  
3 -import android.annotation.SuppressLint;  
4 -import android.content.ContentResolver;  
5 -import android.content.ContentValues;  
6 -import android.content.Context;  
7 -import android.content.Intent;  
8 -import android.net.Uri;  
9 -import android.os.Environment;  
10 -import android.provider.MediaStore;  
11 -import android.text.TextUtils;  
12 -import android.util.Log;  
13 -import android.view.View;  
14 -  
15 -import com.bumptech.glide.Glide;  
16 -import com.bumptech.glide.request.FutureTarget;  
17 -import com.bumptech.glide.request.target.Target;  
18 -import com.cnlive.core.imageload.preview.DataProcessingActivity;  
19 -import com.cnlive.core.imageload.preview.adapter.ProcessHtmlAdapter;  
20 -import com.cnlive.core.imageload.preview.model.PreviewData;  
21 -import com.cnlive.core.imageload.preview.model.ProcessImageInfo;  
22 -import com.cnlive.core.imageload.preview.router.PreviewRouters;  
23 -import com.cnlive.core.imageload.preview.widget.CustomTipDialog;  
24 -import com.cnlive.core.imageload.preview.widget.DownloadUtil;  
25 -import com.cnlive.core.libs.base.frame.view.BaseView;  
26 -import com.cnlive.core.libs.base.util.AlertUtil;  
27 -import com.cnlive.core.libs.base.util.FileTypeUtil;  
28 -import com.cnlive.core.libs.base.util.FileUtils;  
29 -import com.cnlive.core.libs.base.util.MD5Util;  
30 -import com.cnlive.core.libs.base.util.NetworkUtil;  
31 -import com.cnlive.cloud.moudle.qr.uitl.IdentifyTheQRCodeCallback;  
32 -import com.cnlive.cloud.moudle.qr.uitl.QrContentUtil;  
33 -import com.qmuiteam.qmui.widget.dialog.QMUITipDialog;  
34 -import com.cnlive.media.picker.entity.Media;  
35 -  
36 -import java.io.File;  
37 -import java.io.FileInputStream;  
38 -import java.io.FileOutputStream;  
39 -import java.io.InputStream;  
40 -import java.util.ArrayList;  
41 -  
42 -import androidx.annotation.Nullable;  
43 -import androidx.recyclerview.widget.LinearLayoutManager;  
44 -import cn.bertsir.zbar.utils.QRUtils;  
45 -import io.reactivex.Observable;  
46 -import io.reactivex.ObservableEmitter;  
47 -import io.reactivex.ObservableOnSubscribe;  
48 -import io.reactivex.Observer;  
49 -import io.reactivex.android.schedulers.AndroidSchedulers;  
50 -import io.reactivex.disposables.Disposable;  
51 -import io.reactivex.schedulers.Schedulers;  
52 -  
53 -  
54 -/**  
55 - * 作者: 吴奎庆  
56 - * <p>  
57 - * 时间: 2018/9/19  
58 - * <p>  
59 - * 简介:  
60 - */  
61 -  
62 -public class ProcessHtmlView extends BaseView {  
63 - DataProcessingActivity mContext;  
64 - private CustomTipDialog loadingDiaog;  
65 - private ProcessHtmlAdapter adapter;  
66 -  
67 - public ProcessHtmlView(DataProcessingActivity processHtmlActivity) {  
68 - mContext = processHtmlActivity;  
69 - }  
70 -  
71 - ProcessHtmlAdapter.OnItemClickListener listener = new ProcessHtmlAdapter.OnItemClickListener() {  
72 - @Override  
73 - public void OnItemClick(ProcessImageInfo data) {  
74 - if (mContext == null || mContext.imgUrl == null || mContext.getPresenter() == null)  
75 - return;  
76 - showLoading();  
77 - switch (data.type) {  
78 - case "save":  
79 - mContext.getPresenter().savePicture(mContext, mContext.imgUrl);  
80 - break;  
81 - case "collection":  
82 - mContext.getPresenter().collectionPic(mContext, mContext.imgUrl);  
83 - break;  
84 - case "scan":  
85 - mContext.getPresenter().identifyTheQRCode(mContext, mContext.imgUrl);  
86 - break;  
87 - case "friends":  
88 - mContext.getPresenter().getForwardingImgPath(mContext, "friends", mContext.imgUrl);  
89 - break;  
90 - case "life":  
91 - mContext.getPresenter().getForwardingImgPath(mContext, "life", mContext.imgUrl);  
92 - break;  
93 - case "videoSave":  
94 - mContext.getPresenter().saveVideo(mContext, mContext.previewData.getVideoPath());  
95 - break;  
96 - }  
97 - }  
98 - };  
99 -  
100 - DownloadUtil.OnDownloadListener downloadListener = new DownloadUtil.OnDownloadListener() {  
101 - @Override  
102 - public void onDownloadSuccess(String path) {  
103 - jumpMain(path);  
104 - }  
105 -  
106 - @Override  
107 - public void onDownloading(int progress) {  
108 -  
109 - }  
110 -  
111 - @Override  
112 - public void onDownloadFailed(String message) {  
113 - showMessage(message);  
114 - hideLoading();  
115 -  
116 - }  
117 - };  
118 -  
119 -  
120 - public void jumpMain(String path) {  
121 - Observable.create(new ObservableOnSubscribe<String>() {  
122 - @Override  
123 - public void subscribe(ObservableEmitter<String> emitter) throws Exception {  
124 - if (!TextUtils.isEmpty(path)) {  
125 - emitter.onNext(path);  
126 - } else {  
127 - emitter.onError(new Throwable("文件地址为空"));  
128 - }  
129 - }  
130 -  
131 - }).subscribeOn(Schedulers.io()) //指定被观察者中的方法在io线程中进行处理  
132 - .observeOn(AndroidSchedulers.mainThread()) //指定观察者接收数据在主线程中  
133 - .subscribe(new Observer<String>() {  
134 - @Override  
135 - public void onSubscribe(Disposable d) {  
136 - }  
137 -  
138 - @Override  
139 - public void onNext(String s) {  
140 - hideLoading();  
141 - showSucessfulMessage("下载完成");  
142 - if (mContext != null) {  
143 - try {  
144 - File file = FileUtils.getFileByPath(s);  
145 - if (file != null && file.exists()) {  
146 - ContentResolver localContentResolver = mContext.getContentResolver();  
147 - if (localContentResolver != null) {  
148 - ContentValues localContentValues = getVideoContentValues(file);  
149 - if (localContentValues != null)  
150 - localContentResolver.insert(MediaStore.Video.Media.EXTERNAL_CONTENT_URI, localContentValues);  
151 - }  
152 - mContext.sendBroadcast(new Intent(Intent.ACTION_MEDIA_SCANNER_SCAN_FILE, Uri.parse(s)));  
153 - }  
154 - } catch (Exception e) {  
155 - e.printStackTrace();  
156 - }  
157 -  
158 - }  
159 - }  
160 -  
161 - @Override  
162 - public void onError(Throwable e) {  
163 - showMessage(e.getMessage());  
164 - }  
165 -  
166 - @Override  
167 - public void onComplete() {  
168 -  
169 - }  
170 - });  
171 - }  
172 -  
173 - public ContentValues getVideoContentValues(File paramFile) {  
174 - long paramLong = System.currentTimeMillis();  
175 - if (paramFile == null || !paramFile.exists()) return null;  
176 - ContentValues localContentValues = new ContentValues();  
177 - localContentValues.put("title", paramFile.getName());  
178 - localContentValues.put("_display_name", paramFile.getName());  
179 - localContentValues.put("mime_type", "video/3gp");  
180 - localContentValues.put("datetaken", Long.valueOf(paramLong));  
181 - localContentValues.put("date_modified", Long.valueOf(paramLong));  
182 - localContentValues.put("date_added", Long.valueOf(paramLong));  
183 - localContentValues.put("_data", paramFile.getAbsolutePath());  
184 - localContentValues.put("_size", Long.valueOf(paramFile.length()));  
185 - return localContentValues;  
186 - }  
187 -  
188 - public void initView() {  
189 - adapter = new ProcessHtmlAdapter(mContext);  
190 - mContext.binding.rv.setLayoutManager(new LinearLayoutManager(mContext));  
191 - mContext.binding.rv.setAdapter(adapter);  
192 - adapter.addItems(mContext.list);  
193 - mContext.binding.tvCancel.setOnClickListener(v -> {  
194 - if (mContext != null) mContext.finish();  
195 - });  
196 - mContext.binding.root.setOnClickListener(v -> {  
197 - if (mContext != null) mContext.finish();  
198 - });  
199 - adapter.setItemClickListener(listener);  
200 - if (mContext.previewData != null && mContext.previewData.isScan())  
201 - processImage(mContext.imgUrl);  
202 -  
203 - }  
204 -  
205 - public void showMessage(String message) {  
206 - if (mContext == null) return;  
207 - AlertUtil.showDeftToast(mContext, message);  
208 - hideLoading();  
209 - }  
210 -  
211 - public void showSucessfulMessage(String message) {  
212 - if (mContext == null) return;  
213 - AlertUtil.showSuccessToast(mContext, message);  
214 - }  
215 -  
216 - public void forwardFriends(String content) {  
217 - if (mContext == null) return;  
218 - PreviewRouters.startSelectFriend(mContext, content, 0x2002, 0x1002);  
219 - if (mContext == null) mContext.finish();  
220 - }  
221 -  
222 - public void forwardLife(String content) {  
223 - File file = new File(content); //pic 1 video 3  
224 - if (!FileUtils.isFileExists(content)) return;  
225 - ArrayList<Media> medialist = new ArrayList<>();  
226 - Media media = new Media(file.getPath(), file.getName(), 1, 1, file.length(), 0, "");  
227 - medialist.add(media);  
228 - PreviewRouters.startReleaseManagementAcityity(mContext, file.getPath(), file.getName(), 1, 1, file.length(), 0, "");  
229 - if (mContext == null) mContext.finish();  
230 - }  
231 -  
232 - public void sucessful(String message) {  
233 - showSucessfulMessage(message);  
234 - hideLoading();  
235 -  
236 - }  
237 -  
238 - /**  
239 - * 复制本地图片到指定文件夹下  
240 - *  
241 - * @param imagePath  
242 - */  
243 - public void saveLocalImg(String imagePath) {  
244 - saveImageToGallery(mContext, new File(imagePath));  
245 - }  
246 -  
247 - public void saveImageToGallery(Context context, File file) {  
248 - try {  
249 - String md5 = MD5Util.getMD5(file);  
250 - InputStream inStream = new FileInputStream(file); //读入原文件  
251 - File appDir = new File(Environment.getExternalStorageDirectory(), "strike");  
252 - if (!appDir.exists()) appDir.mkdir();  
253 -  
254 - String type = FileTypeUtil.getFileType(file.getAbsolutePath(), true);  
255 - String extension;//初始文件扩展名  
256 - if (TextUtils.isEmpty(type)) {  
257 - extension = ".jpg";  
258 - } else {  
259 - extension = "." + type;  
260 - }  
261 -  
262 - File newFile = new File(appDir, md5 + extension);  
263 - FileOutputStream outputStream = new FileOutputStream(newFile);  
264 -  
265 - int byteread = 0;  
266 - byte[] buffer2 = new byte[1444];  
267 - while ((byteread = inStream.read(buffer2)) != -1)  
268 - outputStream.write(buffer2, 0, byteread);  
269 - inStream.close();  
270 - outputStream.close();  
271 - if (newFile != null) {  
272 - MediaStore.Images.Media.insertImage(context.getContentResolver(),  
273 - file.getAbsolutePath(), newFile.getName(), null);  
274 -  
275 - }  
276 - context.sendBroadcast(new Intent(Intent.ACTION_MEDIA_SCANNER_SCAN_FILE, Uri.parse(newFile.getAbsolutePath())));  
277 - showSucessfulMessage("保存成功");  
278 - } catch (Exception e) {  
279 - if (e != null && e.getMessage() != null)  
280 - Log.e("保存图片异常", e.getMessage());  
281 - }  
282 - }  
283 -  
284 -  
285 - @SuppressLint("WrongConstant")  
286 - public void showLoading() {  
287 - if (mContext == null) return;  
288 - if (loadingDiaog == null) {  
289 - loadingDiaog = new CustomTipDialog.Builder(mContext)  
290 - .setIconType(QMUITipDialog.Builder.ICON_TYPE_LOADING)  
291 - .setTipWord("请稍后")  
292 - .create();  
293 - }  
294 - loadingDiaog.show();  
295 - mContext.binding.root.setVisibility(View.GONE);  
296 - }  
297 -  
298 - public void hideLoading() {  
299 - if (loadingDiaog != null) loadingDiaog.dismiss();  
300 - if (mContext != null) mContext.finish();  
301 - }  
302 -  
303 - public void saveNetVideo(String imgUrl) {  
304 - showLoading();  
305 - String saveDir = "Strike" + File.separator + "video";  
306 - DownloadUtil.getInstance().download(imgUrl, saveDir, downloadListener);  
307 - }  
308 -  
309 - /**  
310 - * 这是处理 html5页面 图片预览的逻辑  
311 - */  
312 - public void initHtm5Type() {  
313 - if (mContext.list == null) mContext.list = new ArrayList<>();  
314 - mContext.list.add(new ProcessImageInfo("转发好友", "friends", ""));  
315 - mContext.list.add(new ProcessImageInfo("转发生活圈", "life", ""));  
316 - mContext.list.add(new ProcessImageInfo("收藏", "collection", ""));  
317 - mContext.list.add(new ProcessImageInfo("保存图片", "save", ""));  
318 - if (mContext.previewData == null) mContext.previewData = new PreviewData();  
319 - mContext.previewData.setType("1");  
320 - mContext.previewData.setShowImg(mContext.imgUrl);  
321 - mContext.previewData.setCollectionType("html");  
322 - }  
323 -  
324 - public void processImage(String imgUrl) {  
325 - if (TextUtils.isEmpty(imgUrl)) {  
326 - showMessage("图片获取失败");  
327 - return;  
328 - }  
329 - if (!NetworkUtil.isConnectInternet(mContext)) {  
330 - showMessage("网络异常");  
331 - return;  
332 - }  
333 - Observable.create(new ObservableOnSubscribe<String>() {  
334 - @Override  
335 - public void subscribe(ObservableEmitter<String> emitter) throws Exception {  
336 - File scanFile = getFile(emitter, imgUrl, mContext);  
337 - if (scanFile != null && FileUtils.isFileExists(scanFile) && scanFile.length() > 0) {  
338 -  
339 - String content = null;  
340 - content = QRUtils.getInstance().decodeQRcode(scanFile.getAbsolutePath());  
341 - if (TextUtils.isEmpty(scanFile.getAbsolutePath())) {  
342 - content = QRUtils.getInstance().decodeQRcodeByZxing(scanFile.getAbsolutePath());  
343 - }  
344 - if (content != null && content.length() > 0) {  
345 - emitter.onNext(content);  
346 - } else emitter.onNext("");  
347 - } else {  
348 - emitter.onError(new Throwable("图片解析异常"));  
349 - }  
350 -  
351 - }  
352 -  
353 - }).subscribeOn(Schedulers.io()) //指定被观察者中的方法在io线程中进行处理  
354 - .observeOn(AndroidSchedulers.mainThread()) //指定观察者接收数据在主线程中  
355 - .subscribe(new Observer<String>() {  
356 - @Override  
357 - public void onSubscribe(Disposable d) {  
358 - }  
359 -  
360 - @Override  
361 - public void onNext(String s) {  
362 - showProcessDialog(s);  
363 - }  
364 -  
365 - @Override  
366 - public void onError(Throwable e) {  
367 - showMessage(e.getMessage());  
368 - }  
369 -  
370 - @Override  
371 - public void onComplete() {  
372 -  
373 - }  
374 - });  
375 - }  
376 -  
377 - @Nullable  
378 - private File getFile(ObservableEmitter<String> emitter, String imgUrl, Context mContext) throws InterruptedException, java.util.concurrent.ExecutionException {  
379 - File scanFile = null;  
380 - if (FileUtils.isFileExists(imgUrl) && FileUtils.getFileByPath(imgUrl).length() > 0) {  
381 - scanFile = FileUtils.getFileByPath(imgUrl);  
382 - } else {  
383 - if (imgUrl.contains("http")) {  
384 -// File file = Glide.with(mContext).asFile().load(imgUrl).submit().get();  
385 -  
386 - FutureTarget<File> future = Glide.with(mContext)  
387 - .load(imgUrl)  
388 - .downloadOnly(Target.SIZE_ORIGINAL, Target.SIZE_ORIGINAL);  
389 - File file = future.get();  
390 - if (file != null && file.exists() && file.length() > 0) {  
391 - scanFile = file;  
392 - } else {  
393 - emitter.onError(new Throwable("图片解析异常"));  
394 - }  
395 - } else {  
396 - emitter.onError(new Throwable("图片解析异常"));  
397 - }  
398 - }  
399 - return scanFile;  
400 - }  
401 -  
402 -  
403 - private void showProcessDialog(String content) {  
404 - if (content.length() > 0 && adapter != null) {  
405 - adapter.addItem(new ProcessImageInfo("识别二维码", "scan", content));  
406 - }  
407 - }  
408 -  
409 - public void processQrContent(String qrContent) {  
410 - if (mContext == null) return;  
411 - QrContentUtil.getInstance().getQrContent(mContext, qrContent, new IdentifyTheQRCodeCallback() {  
412 - @Override  
413 - public void qRCodeCallback(boolean isIdentify, String message) {  
414 - hideLoading();  
415 - if (!isIdentify) {  
416 - showMessage(message);  
417 - }  
418 - if (mContext != null) mContext.finish();  
419 - }  
420 - });  
421 - }  
422 -}  
core/imageload/src/main/java/com/cnlive/core/imageload/preview/widget/MutipleTouchViewPager.java deleted 100644 → 0
1 -package com.cnlive.core.imageload.preview.widget;  
2 -  
3 -import android.content.Context;  
4 -import android.util.AttributeSet;  
5 -import android.view.MotionEvent;  
6 -  
7 -import androidx.annotation.NonNull;  
8 -import androidx.annotation.Nullable;  
9 -import androidx.viewpager.widget.ViewPager;  
10 -  
11 -/**  
12 - * created by hanyayun  
13 - * on 2019/11/26  
14 - * 解决 pointerIndex out of range的异常  
15 - */  
16 -public class MutipleTouchViewPager extends ViewPager {  
17 -  
18 - private boolean mIsDisallowIntercept = false;  
19 -  
20 - public MutipleTouchViewPager(@NonNull Context context) {  
21 - super(context);  
22 - }  
23 -  
24 - public MutipleTouchViewPager(@NonNull Context context, @Nullable AttributeSet attrs) {  
25 - super(context, attrs);  
26 - }  
27 -  
28 - @Override  
29 - public void requestDisallowInterceptTouchEvent(boolean disallowIntercept) {  
30 - mIsDisallowIntercept = disallowIntercept;  
31 - super.requestDisallowInterceptTouchEvent(disallowIntercept);  
32 - }  
33 -  
34 - @Override  
35 - public boolean dispatchTouchEvent(MotionEvent ev) {  
36 - if (ev.getPointerCount() > 1 && mIsDisallowIntercept) {  
37 - requestDisallowInterceptTouchEvent(false);  
38 - boolean handled = super.dispatchTouchEvent(ev);  
39 - requestDisallowInterceptTouchEvent(true);  
40 - return handled;  
41 - } else {  
42 - return super.dispatchTouchEvent(ev);  
43 - }  
44 - }  
45 -}  
core/imageload/src/main/java/com/cnlive/core/imagepreview/ImagePreView.java
@@ -129,9 +129,9 @@ public class ImagePreView extends FrameLayout implements ViewPager.OnPageChangeL @@ -129,9 +129,9 @@ public class ImagePreView extends FrameLayout implements ViewPager.OnPageChangeL
129 viewPager = new ImageViewPager(getContext()); 129 viewPager = new ImageViewPager(getContext());
130 viewPager.setOffscreenPageLimit(1); 130 viewPager.setOffscreenPageLimit(1);
131 viewPager.addOnPageChangeListener(this); 131 viewPager.addOnPageChangeListener(this);
132 - addView(viewPager, new FrameLayout.LayoutParams(  
133 - FrameLayout.LayoutParams.MATCH_PARENT,  
134 - FrameLayout.LayoutParams.MATCH_PARENT)); 132 + addView(viewPager, new LayoutParams(
  133 + LayoutParams.MATCH_PARENT,
  134 + LayoutParams.MATCH_PARENT));
135 135
136 setVisibility(View.INVISIBLE); 136 setVisibility(View.INVISIBLE);
137 137
@@ -533,7 +533,7 @@ public class ImagePreView extends FrameLayout implements ViewPager.OnPageChangeL @@ -533,7 +533,7 @@ public class ImagePreView extends FrameLayout implements ViewPager.OnPageChangeL
533 // } 533 // }
534 // }); 534 // });
535 // 单击事件 535 // 单击事件
536 - drawee.getImageView().setOnClickListener(new View.OnClickListener() { 536 + drawee.getImageView().setOnClickListener(new OnClickListener() {
537 @Override 537 @Override
538 public void onClick(View v) { 538 public void onClick(View v) {
539 if (!hasAnimRunning && mItemClickListener != null) { 539 if (!hasAnimRunning && mItemClickListener != null) {
@@ -547,7 +547,7 @@ public class ImagePreView extends FrameLayout implements ViewPager.OnPageChangeL @@ -547,7 +547,7 @@ public class ImagePreView extends FrameLayout implements ViewPager.OnPageChangeL
547 } 547 }
548 }); 548 });
549 // 长按事件 549 // 长按事件
550 - drawee.getImageView().setOnLongClickListener(new View.OnLongClickListener() { 550 + drawee.getImageView().setOnLongClickListener(new OnLongClickListener() {
551 @Override 551 @Override
552 public boolean onLongClick(View v) { 552 public boolean onLongClick(View v) {
553 if (!hasAnimRunning && mItemLongPressListener != null) { 553 if (!hasAnimRunning && mItemLongPressListener != null) {
core/imageload/src/main/java/com/cnlive/core/imagepreview/PhotoLoader.java
@@ -5,8 +5,6 @@ import android.widget.ImageView; @@ -5,8 +5,6 @@ import android.widget.ImageView;
5 5
6 import com.bumptech.glide.request.target.CustomViewTarget; 6 import com.bumptech.glide.request.target.CustomViewTarget;
7 import com.bumptech.glide.request.transition.Transition; 7 import com.bumptech.glide.request.transition.Transition;
8 -import com.cnlive.core.imageload.config.ScaleMode;  
9 -import com.cnlive.core.imageload.loader.ImageLoader;  
10 import com.cnlive.core.libs.base.application.GlideApp; 8 import com.cnlive.core.libs.base.application.GlideApp;
11 9
12 import androidx.annotation.NonNull; 10 import androidx.annotation.NonNull;
core/imageload/src/main/java/com/cnlive/core/imageload/preview/router/PreviewRouters.java renamed to core/imageload/src/main/java/com/cnlive/core/imagepreview/router/PreviewRouters.java
1 -package com.cnlive.core.imageload.preview.router; 1 +package com.cnlive.core.imagepreview.router;
2 2
3 import android.content.Context; 3 import android.content.Context;
4 4
5 import com.alibaba.android.arouter.launcher.ARouter; 5 import com.alibaba.android.arouter.launcher.ARouter;
6 6
7 -/**  
8 - * 作者: 吴奎庆  
9 - * <p>  
10 - * 时间: 2018/12/20  
11 - * <p>  
12 - * 简介: 路由打开页面  
13 - */  
14 public class PreviewRouters { 7 public class PreviewRouters {
15 //打开转发好友页面 8 //打开转发好友页面
16 public static void startSelectFriend(Context context,String content, int shareType, int inType) { 9 public static void startSelectFriend(Context context,String content, int shareType, int inType) {
core/imageload/src/main/java/com/cnlive/core/imageload/preview/widget/CustomTipDialog.java renamed to core/imageload/src/main/java/com/cnlive/core/imagepreview/uti/CustomTipDialog.java
1 -package com.cnlive.core.imageload.preview.widget; 1 +package com.cnlive.core.imagepreview.uti;
2 2
3 import android.app.Dialog; 3 import android.app.Dialog;
4 import android.content.Context; 4 import android.content.Context;
core/imageload/src/main/java/com/cnlive/core/imageload/preview/widget/DownloadUtil.java renamed to core/imageload/src/main/java/com/cnlive/core/imagepreview/uti/DownloadUtil.java
1 -package com.cnlive.core.imageload.preview.widget; 1 +package com.cnlive.core.imagepreview.uti;
2 2
  3 +import android.content.Context;
3 import android.os.Environment; 4 import android.os.Environment;
4 import android.os.Handler; 5 import android.os.Handler;
5 import android.os.Message; 6 import android.os.Message;
6 7
7 8
8 -import com.cnlive.core.libs.base.util.FileUtils;  
9 -  
10 import java.io.File; 9 import java.io.File;
11 import java.io.FileOutputStream; 10 import java.io.FileOutputStream;
12 import java.io.IOException; 11 import java.io.IOException;
@@ -18,13 +17,6 @@ import okhttp3.OkHttpClient; @@ -18,13 +17,6 @@ import okhttp3.OkHttpClient;
18 import okhttp3.Request; 17 import okhttp3.Request;
19 import okhttp3.Response; 18 import okhttp3.Response;
20 19
21 -/**  
22 - * 创建:wukuiqing  
23 - * <p>  
24 - * 时间:2018/3/19  
25 - * <p>  
26 - * 描述: 下载视频  
27 - */  
28 20
29 public class DownloadUtil { 21 public class DownloadUtil {
30 public static final int DOWNLOAD_FAIL = 0; 22 public static final int DOWNLOAD_FAIL = 0;
@@ -46,7 +38,7 @@ public class DownloadUtil { @@ -46,7 +38,7 @@ public class DownloadUtil {
46 } 38 }
47 39
48 40
49 - public void download(final String url, final String saveDir, final OnDownloadListener listener) { 41 + public void download(Context context,final String url, final String saveDir, final OnDownloadListener listener) {
50 this.listener = listener; 42 this.listener = listener;
51 Request request = new Request.Builder().url(url).build(); 43 Request request = new Request.Builder().url(url).build();
52 call = okHttpClient.newCall(request); 44 call = okHttpClient.newCall(request);
@@ -71,7 +63,7 @@ public class DownloadUtil { @@ -71,7 +63,7 @@ public class DownloadUtil {
71 FileOutputStream fos = null; 63 FileOutputStream fos = null;
72 //储存下载文件的目录 64 //储存下载文件的目录
73 65
74 - String filePath = Environment.getExternalStorageDirectory() + File.separator + saveDir; 66 + String filePath = (AndroidQUtil.isAndroidQ()? context.getExternalFilesDir("") : Environment.getExternalStorageDirectory()) + File.separator + saveDir;
75 String savePath = isExistDir(filePath); 67 String savePath = isExistDir(filePath);
76 try { 68 try {
77 is = response.body().byteStream(); 69 is = response.body().byteStream();
core/imageload/src/main/java/com/cnlive/core/ui/activity/PreViewImageActivity.java
@@ -8,7 +8,6 @@ import android.widget.ImageView; @@ -8,7 +8,6 @@ import android.widget.ImageView;
8 import com.alibaba.android.arouter.facade.annotation.Route; 8 import com.alibaba.android.arouter.facade.annotation.Route;
9 import com.cnlive.core.imageload.R; 9 import com.cnlive.core.imageload.R;
10 import com.cnlive.core.imageload.databinding.ActivityPreviewImageBinding; 10 import com.cnlive.core.imageload.databinding.ActivityPreviewImageBinding;
11 -import com.cnlive.core.imageload.preview.PreviewImageViewActivity;  
12 import com.cnlive.core.imagepreview.ViewerStatus; 11 import com.cnlive.core.imagepreview.ViewerStatus;
13 import com.cnlive.core.imagepreview.listener.OnItemClickListener; 12 import com.cnlive.core.imagepreview.listener.OnItemClickListener;
14 import com.cnlive.core.libs.base.frame.activity.BaseActivity; 13 import com.cnlive.core.libs.base.frame.activity.BaseActivity;
@@ -16,7 +15,6 @@ import com.cnlive.core.ui.model.PreViewImgData; @@ -16,7 +15,6 @@ import com.cnlive.core.ui.model.PreViewImgData;
16 import com.cnlive.core.ui.presenter.PreViewImagePresenter; 15 import com.cnlive.core.ui.presenter.PreViewImagePresenter;
17 import com.cnlive.core.ui.view.PreViewImageView; 16 import com.cnlive.core.ui.view.PreViewImageView;
18 17
19 -  
20 import java.util.ArrayList; 18 import java.util.ArrayList;
21 import java.util.List; 19 import java.util.List;
22 20
@@ -32,7 +30,7 @@ public class PreViewImageActivity extends BaseActivity&lt;PreViewImageView, PreView @@ -32,7 +30,7 @@ public class PreViewImageActivity extends BaseActivity&lt;PreViewImageView, PreView
32 public List<String> picList = new ArrayList<>(); 30 public List<String> picList = new ArrayList<>();
33 31
34 public static void startPreViewActivity(Activity context, View transitionView, PreViewImgData data) { 32 public static void startPreViewActivity(Activity context, View transitionView, PreViewImgData data) {
35 - Intent intent = new Intent(context, PreviewImageViewActivity.class); 33 + Intent intent = new Intent(context, PreViewImageActivity.class);
36 intent.putExtra("data", data); 34 intent.putExtra("data", data);
37 context.startActivity(intent); 35 context.startActivity(intent);
38 } 36 }
core/imageload/src/main/java/com/cnlive/core/ui/presenter/PreViewImagePresenter.java
@@ -11,9 +11,7 @@ import android.util.Log; @@ -11,9 +11,7 @@ import android.util.Log;
11 import com.bumptech.glide.Glide; 11 import com.bumptech.glide.Glide;
12 import com.bumptech.glide.request.FutureTarget; 12 import com.bumptech.glide.request.FutureTarget;
13 import com.bumptech.glide.request.target.Target; 13 import com.bumptech.glide.request.target.Target;
14 -import com.cnlive.cloud.user.auth.UserService;  
15 import com.cnlive.core.imageload.api.ApiServiceStock; 14 import com.cnlive.core.imageload.api.ApiServiceStock;
16 -import com.cnlive.core.libs.base.application.AppConfig;  
17 import com.cnlive.core.libs.base.frame.presenter.BasePresenter; 15 import com.cnlive.core.libs.base.frame.presenter.BasePresenter;
18 import com.cnlive.core.libs.base.util.FileTypeUtil; 16 import com.cnlive.core.libs.base.util.FileTypeUtil;
19 import com.cnlive.core.libs.base.util.FileUtils; 17 import com.cnlive.core.libs.base.util.FileUtils;
@@ -65,7 +63,6 @@ public class PreViewImagePresenter extends BasePresenter&lt;PreViewImageView&gt; { @@ -65,7 +63,6 @@ public class PreViewImagePresenter extends BasePresenter&lt;PreViewImageView&gt; {
65 if (TextUtils.isEmpty(imgUrl)) return; 63 if (TextUtils.isEmpty(imgUrl)) return;
66 if (mContext == null) return; 64 if (mContext == null) return;
67 if(getView() != null) getView().showLoading(); 65 if(getView() != null) getView().showLoading();
68 -// ifViewAttached(view -> view.showLoading());  
69 Observable.create((ObservableOnSubscribe<String>) emitter -> { 66 Observable.create((ObservableOnSubscribe<String>) emitter -> {
70 if (FileUtils.isFileExists(imgUrl) && FileUtils.getFileByPath(imgUrl).length() > 0) { 67 if (FileUtils.isFileExists(imgUrl) && FileUtils.getFileByPath(imgUrl).length() > 0) {
71 emitter.onNext(imgUrl); 68 emitter.onNext(imgUrl);
@@ -91,34 +88,25 @@ public class PreViewImagePresenter extends BasePresenter&lt;PreViewImageView&gt; { @@ -91,34 +88,25 @@ public class PreViewImagePresenter extends BasePresenter&lt;PreViewImageView&gt; {
91 @Override 88 @Override
92 public void onNext(String content) { 89 public void onNext(String content) {
93 if(getView() != null) getView().hideLoading(); 90 if(getView() != null) getView().hideLoading();
94 -// ifViewAttached(view -> view.hideLoading());  
95 if (!TextUtils.isEmpty(content)) { 91 if (!TextUtils.isEmpty(content)) {
96 if (type.equals("friends")) { 92 if (type.equals("friends")) {
97 if(getView() != null) getView().shareFriends(content); 93 if(getView() != null) getView().shareFriends(content);
98 -// ifViewAttached(view -> view.shareFriends(content));  
99 } else if (type.equals("life")) { 94 } else if (type.equals("life")) {
100 if(getView() != null) getView().shareLife(content); 95 if(getView() != null) getView().shareLife(content);
101 -// ifViewAttached(view -> view.shareLife(content));  
102 } else { 96 } else {
103 if(getView() != null) getView().showMessage("类型异常"); 97 if(getView() != null) getView().showMessage("类型异常");
104 -// ifViewAttached(view -> view.showMessage("类型异常"));  
105 } 98 }
106 } else { 99 } else {
107 if(getView() != null) getView().showMessage("非法图片地址"); 100 if(getView() != null) getView().showMessage("非法图片地址");
108 -// ifViewAttached(view -> view.showMessage("非法图片地址"));  
109 } 101 }
110 } 102 }
111 103
112 @Override 104 @Override
113 public void onError(Throwable e) { 105 public void onError(Throwable e) {
114 -// ifViewAttached(view -> {  
115 if(getView() != null) { 106 if(getView() != null) {
116 getView().hideLoading(); 107 getView().hideLoading();
117 getView().showMessage(e.getMessage()); 108 getView().showMessage(e.getMessage());
118 } 109 }
119 -// view.hideLoading();  
120 -// view.showMessage(e.getMessage());  
121 -// });  
122 } 110 }
123 111
124 @Override 112 @Override
@@ -140,14 +128,14 @@ public class PreViewImagePresenter extends BasePresenter&lt;PreViewImageView&gt; { @@ -140,14 +128,14 @@ public class PreViewImagePresenter extends BasePresenter&lt;PreViewImageView&gt; {
140 if (FileUtils.isFileExists(imagePath)) { 128 if (FileUtils.isFileExists(imagePath)) {
141 List<String> list = new ArrayList(); 129 List<String> list = new ArrayList();
142 list.add(imagePath); 130 list.add(imagePath);
143 - UploadLogic.uploadonePic(context, true, list, new NetCallBack<List<FeedBackInfo>>() { 131 + UploadLogic.uploadonePic(FLAG,context, true, list, new NetCallBack<List<FeedBackInfo>>() {
144 @Override 132 @Override
145 public void onRequestState(int state) { 133 public void onRequestState(int state) {
146 134
147 } 135 }
148 136
149 @Override 137 @Override
150 - public void onSuccess(List<com.cnlive.core.network.upload.model.FeedBackInfo> data) { 138 + public void onSuccess(List<FeedBackInfo> data) {
151 if (data.size() > 0) { 139 if (data.size() > 0) {
152 if (data.get(0).getImageUrl().contains("http")) { 140 if (data.get(0).getImageUrl().contains("http")) {
153 collection(context, data.get(0).getImageUrl(), context.data); 141 collection(context, data.get(0).getImageUrl(), context.data);
@@ -171,7 +159,7 @@ public class PreViewImagePresenter extends BasePresenter&lt;PreViewImageView&gt; { @@ -171,7 +159,7 @@ public class PreViewImagePresenter extends BasePresenter&lt;PreViewImageView&gt; {
171 private void collection(PreViewImageActivity context, String imagePath, PreViewImgData previewData) { 159 private void collection(PreViewImageActivity context, String imagePath, PreViewImgData previewData) {
172 if (previewData == null) return; 160 if (previewData == null) return;
173 Map<String, String> requestMap = new HashMap<>(); 161 Map<String, String> requestMap = new HashMap<>();
174 - requestMap.put("appId", AppConfig.getAppId()); 162 + requestMap.put("appId", BuildConfig.APP_ID);
175 requestMap.put("sid", previewData.getUserId()); 163 requestMap.put("sid", previewData.getUserId());
176 requestMap.put("type", previewData.getType()); 164 requestMap.put("type", previewData.getType());
177 requestMap.put("img", imagePath); 165 requestMap.put("img", imagePath);
@@ -202,7 +190,7 @@ public class PreViewImagePresenter extends BasePresenter&lt;PreViewImageView&gt; { @@ -202,7 +190,7 @@ public class PreViewImagePresenter extends BasePresenter&lt;PreViewImageView&gt; {
202 requestMap.put("collectionType", previewData.getCollectionType()); 190 requestMap.put("collectionType", previewData.getCollectionType());
203 } 191 }
204 192
205 - HttpConn.action(BaseRequest.init() 193 + HttpConn.action(FLAG, BaseRequest.init()
206 .service(ApiServiceStock.class) 194 .service(ApiServiceStock.class)
207 .collection(requestMap), new NetCallBack<BaseResult>() { 195 .collection(requestMap), new NetCallBack<BaseResult>() {
208 @Override 196 @Override
@@ -213,13 +201,11 @@ public class PreViewImagePresenter extends BasePresenter&lt;PreViewImageView&gt; { @@ -213,13 +201,11 @@ public class PreViewImagePresenter extends BasePresenter&lt;PreViewImageView&gt; {
213 @Override 201 @Override
214 public void onSuccess(BaseResult data) { 202 public void onSuccess(BaseResult data) {
215 if(getView() != null) getView().showSucessfulMessage("收藏成功"); 203 if(getView() != null) getView().showSucessfulMessage("收藏成功");
216 -// ifViewAttached(view -> view.showSucessfulMessage("收藏成功"));  
217 } 204 }
218 205
219 @Override 206 @Override
220 public void onFailure(String errCode, String errMsg, Exception e) { 207 public void onFailure(String errCode, String errMsg, Exception e) {
221 if(getView() != null) getView().showMessage(errMsg); 208 if(getView() != null) getView().showMessage(errMsg);
222 -// ifViewAttached(view -> view.showMessage(errMsg));  
223 } 209 }
224 }); 210 });
225 } 211 }
@@ -243,7 +229,7 @@ public class PreViewImagePresenter extends BasePresenter&lt;PreViewImageView&gt; { @@ -243,7 +229,7 @@ public class PreViewImagePresenter extends BasePresenter&lt;PreViewImageView&gt; {
243 String filePath = "Strike" + File.separator + "video"; 229 String filePath = "Strike" + File.separator + "video";
244 String md5 = MD5Util.getMD5(file); 230 String md5 = MD5Util.getMD5(file);
245 InputStream inStream = new FileInputStream(file); //读入原文件 231 InputStream inStream = new FileInputStream(file); //读入原文件
246 - File appDir = new File(Environment.getExternalStorageDirectory(), filePath); 232 + File appDir = new File((AndroidQUtil.isAndroidQ()? activity.getExternalFilesDir("") : Environment.getExternalStorageDirectory()), filePath);
247 if (!appDir.exists()) appDir.mkdir(); 233 if (!appDir.exists()) appDir.mkdir();
248 234
249 String type = FileTypeUtil.getFileType(file.getAbsolutePath()); 235 String type = FileTypeUtil.getFileType(file.getAbsolutePath());
core/imageload/src/main/java/com/cnlive/core/ui/view/PreViewImageView.java
@@ -18,17 +18,15 @@ import android.view.ViewGroup; @@ -18,17 +18,15 @@ import android.view.ViewGroup;
18 import android.view.Window; 18 import android.view.Window;
19 import android.widget.ImageView; 19 import android.widget.ImageView;
20 20
21 -import com.cnlive.cloud.moudle.qr.uitl.IdentifyTheQRCodeCallback;  
22 -import com.cnlive.cloud.moudle.qr.uitl.QrContentUtil;  
23 import com.cnlive.core.imageload.R; 21 import com.cnlive.core.imageload.R;
24 import com.cnlive.core.imageload.callback.ImageDownLoadCallBack; 22 import com.cnlive.core.imageload.callback.ImageDownLoadCallBack;
25 import com.cnlive.core.imageload.loader.ImageLoader; 23 import com.cnlive.core.imageload.loader.ImageLoader;
26 -import com.cnlive.core.imageload.preview.router.PreviewRouters;  
27 -import com.cnlive.core.imageload.preview.widget.CustomTipDialog;  
28 -import com.cnlive.core.imageload.preview.widget.DownloadUtil;  
29 import com.cnlive.core.imageload.util.DownLoadImageService; 24 import com.cnlive.core.imageload.util.DownLoadImageService;
30 import com.cnlive.core.imagepreview.listener.OnDragStatusListener; 25 import com.cnlive.core.imagepreview.listener.OnDragStatusListener;
31 import com.cnlive.core.imagepreview.listener.OnItemLongPressListener; 26 import com.cnlive.core.imagepreview.listener.OnItemLongPressListener;
  27 +import com.cnlive.core.imagepreview.router.PreviewRouters;
  28 +import com.cnlive.core.imagepreview.uti.CustomTipDialog;
  29 +import com.cnlive.core.imagepreview.uti.DownloadUtil;
32 import com.cnlive.core.libs.base.frame.view.BaseView; 30 import com.cnlive.core.libs.base.frame.view.BaseView;
33 import com.cnlive.core.libs.base.interfaces.OnPermissionResponseListener; 31 import com.cnlive.core.libs.base.interfaces.OnPermissionResponseListener;
34 import com.cnlive.core.libs.base.util.AlertUtil; 32 import com.cnlive.core.libs.base.util.AlertUtil;
@@ -81,25 +79,38 @@ public class PreViewImageView extends BaseView { @@ -81,25 +79,38 @@ public class PreViewImageView extends BaseView {
81 79
82 public void getData(Intent intent) { 80 public void getData(Intent intent) {
83 activity.data = (PreViewImgData) intent.getSerializableExtra("data"); 81 activity.data = (PreViewImgData) intent.getSerializableExtra("data");
  82 + if(!activity.data.isCollection() && !activity.data.isFriend() && !activity.data.isLife() && !activity.data.isSave()){
  83 + activity.data.setShowDialog(false);
  84 + }else {
  85 + activity.data.setShowDialog(true);
  86 + }
84 activity.type = activity.data.getType(); 87 activity.type = activity.data.getType();
85 if (TextUtils.isEmpty(activity.type)) { 88 if (TextUtils.isEmpty(activity.type)) {
86 showError(); 89 showError();
87 } 90 }
88 if (activity.type.equals("1")) { 91 if (activity.type.equals("1")) {
89 preViewImgList = activity.data.getPicInfoList(); 92 preViewImgList = activity.data.getPicInfoList();
90 - if (preViewImgList.size() == 1) { 93 + if(preViewImgList == null){
  94 + preViewImgList = new ArrayList<>();
  95 + preViewImgList.add(activity.data.getCurrPrewInfo());
91 activity.position = 0; 96 activity.position = 0;
92 - } else {  
93 - PreViewImgInfo curPreInfo = activity.data.getCurrPrewInfo();  
94 - for (int i = 0; i < preViewImgList.size(); i++) {  
95 - activity.picList.add(TextUtils.isEmpty(preViewImgList.get(i).getPreviewImgUrl()) ? preViewImgList.get(i).getImgUrl() : preViewImgList.get(i).getPreviewImgUrl());  
96 - if ((!TextUtils.isEmpty(preViewImgList.get(i).getPreviewImgUrl()) && !TextUtils.isEmpty(curPreInfo.getPreviewImgUrl()) && curPreInfo.getPreviewImgUrl().equals(preViewImgList.get(i).getPreviewImgUrl()))  
97 - || (!TextUtils.isEmpty(preViewImgList.get(i).getImgUrl()) && !TextUtils.isEmpty(curPreInfo.getImgUrl()) && curPreInfo.getImgUrl().equals(preViewImgList.get(i).getImgUrl()))) {  
98 - activity.position = i; 97 + activity.picList.add(TextUtils.isEmpty(preViewImgList.get(0).getPreviewImgUrl()) ? preViewImgList.get(0).getImgUrl() : preViewImgList.get(0).getPreviewImgUrl());
  98 + }else {
  99 + if (preViewImgList.size() == 1) {
  100 + activity.position = 0;
  101 + activity.picList.add(TextUtils.isEmpty(preViewImgList.get(0).getPreviewImgUrl()) ? preViewImgList.get(0).getImgUrl() : preViewImgList.get(0).getPreviewImgUrl());
  102 + } else {
  103 + PreViewImgInfo curPreInfo = activity.data.getCurrPrewInfo();
  104 + for (int i = 0; i < preViewImgList.size(); i++) {
  105 + activity.picList.add(TextUtils.isEmpty(preViewImgList.get(i).getPreviewImgUrl()) ? preViewImgList.get(i).getImgUrl() : preViewImgList.get(i).getPreviewImgUrl());
  106 + if ((!TextUtils.isEmpty(preViewImgList.get(i).getPreviewImgUrl()) && !TextUtils.isEmpty(curPreInfo.getPreviewImgUrl()) && curPreInfo.getPreviewImgUrl().equals(preViewImgList.get(i).getPreviewImgUrl()))
  107 + || (!TextUtils.isEmpty(preViewImgList.get(i).getImgUrl()) && !TextUtils.isEmpty(curPreInfo.getImgUrl()) && curPreInfo.getImgUrl().equals(preViewImgList.get(i).getImgUrl()))) {
  108 + activity.position = i;
  109 + }
99 } 110 }
100 } 111 }
101 - setPreview();  
102 } 112 }
  113 + setPreview();
103 } else if (activity.data.getType().equals("2")) { 114 } else if (activity.data.getType().equals("2")) {
104 115
105 } 116 }
@@ -122,17 +133,19 @@ public class PreViewImageView extends BaseView { @@ -122,17 +133,19 @@ public class PreViewImageView extends BaseView {
122 activity.binding.imagePre.setOnItemLongPressListener(new OnItemLongPressListener() { 133 activity.binding.imagePre.setOnItemLongPressListener(new OnItemLongPressListener() {
123 @Override 134 @Override
124 public boolean onItemLongPress(int position, ImageView imageView) { 135 public boolean onItemLongPress(int position, ImageView imageView) {
125 - activity.requestPermission(String.valueOf(R.string.dialog_imagepicker_permission_save_pic),new String[]{Manifest.permission.WRITE_EXTERNAL_STORAGE}, new OnPermissionResponseListener() {  
126 - @Override  
127 - public void onSuccess(String[] permissions) {  
128 - activity.getPresenter().isScan(activity,activity.picList.get(position),position);  
129 - } 136 + if(activity.data.isShowDialog()){
  137 + activity.requestPermission(String.valueOf(R.string.dialog_imagepicker_permission_save_pic),new String[]{Manifest.permission.WRITE_EXTERNAL_STORAGE}, new OnPermissionResponseListener() {
  138 + @Override
  139 + public void onSuccess(String[] permissions) {
  140 + activity.getPresenter().isScan(activity,activity.picList.get(position),position);
  141 + }
130 142
131 - @Override  
132 - public void onFail() { 143 + @Override
  144 + public void onFail() {
133 145
134 - }  
135 - }); 146 + }
  147 + });
  148 + }
136 return false; 149 return false;
137 } 150 }
138 }); 151 });
@@ -217,7 +230,7 @@ public class PreViewImageView extends BaseView { @@ -217,7 +230,7 @@ public class PreViewImageView extends BaseView {
217 File file = new File(content); //pic 1 video 3 230 File file = new File(content); //pic 1 video 3
218 if (!FileUtils.isFileExists(content)) return; 231 if (!FileUtils.isFileExists(content)) return;
219 ArrayList<Media> medialist = new ArrayList<>(); 232 ArrayList<Media> medialist = new ArrayList<>();
220 - Media media = new Media(file.getPath(), file.getName(), 1, 1, file.length(), 0, ""); 233 + Media media = new Media(file.getPath(), file.getName(), 1, 1, file.length(), 0, "",Uri.fromFile(file).toString());
221 medialist.add(media); 234 medialist.add(media);
222 PreviewRouters.startReleaseManagementAcityity(activity, file.getPath(), file.getName(), 1, 1, file.length(), 0, ""); 235 PreviewRouters.startReleaseManagementAcityity(activity, file.getPath(), file.getName(), 1, 1, file.length(), 0, "");
223 if (activity == null) activity.finish(); 236 if (activity == null) activity.finish();
@@ -255,7 +268,7 @@ public class PreViewImageView extends BaseView { @@ -255,7 +268,7 @@ public class PreViewImageView extends BaseView {
255 public void saveNetVideo(String imgUrl) { 268 public void saveNetVideo(String imgUrl) {
256 showLoading(); 269 showLoading();
257 String saveDir = "Strike" + File.separator + "video"; 270 String saveDir = "Strike" + File.separator + "video";
258 - DownloadUtil.getInstance().download(imgUrl, saveDir, new DownloadUtil.OnDownloadListener() { 271 + DownloadUtil.getInstance().download(activity,imgUrl, saveDir, new DownloadUtil.OnDownloadListener() {
259 @Override 272 @Override
260 public void onDownloadSuccess(String path) { 273 public void onDownloadSuccess(String path) {
261 jumpMain(path); 274 jumpMain(path);
@@ -350,17 +363,18 @@ public class PreViewImageView extends BaseView { @@ -350,17 +363,18 @@ public class PreViewImageView extends BaseView {
350 */ 363 */
351 public void processQrContent(String qrContent) { 364 public void processQrContent(String qrContent) {
352 if (activity == null) return; 365 if (activity == null) return;
353 - QrContentUtil.getInstance().getQrContent(activity, qrContent, new IdentifyTheQRCodeCallback() {  
354 - @Override  
355 - public void qRCodeCallback(boolean isIdentify, String message) {  
356 - hideLoading();  
357 - if (!isIdentify) {  
358 - showMessage(message);  
359 - }else {  
360 - if (activity != null) activity.finish();  
361 - }  
362 - }  
363 - }); 366 + //TODO 二维码处理
  367 +// QrContentUtil.getInstance().getQrContent(activity, qrContent, new IdentifyTheQRCodeCallback() {
  368 +// @Override
  369 +// public void qRCodeCallback(boolean isIdentify, String message) {
  370 +// hideLoading();
  371 +// if (!isIdentify) {
  372 +// showMessage(message);
  373 +// }else {
  374 +// if (activity != null) activity.finish();
  375 +// }
  376 +// }
  377 +// });
364 } 378 }
365 379
366 public void showSucessfulMessage(String message) { 380 public void showSucessfulMessage(String message) {