Commit 5412eba44e6f74c3bf72749e2f92d32199a8a563

Authored by 吴奎庆
1 parent 8df30b8d

处理默认

app/src/main/java/com/cnlive/strike/debug/MainActivity.java
@@ -15,7 +15,6 @@ import com.cnlive.media.PickerConfig; @@ -15,7 +15,6 @@ import com.cnlive.media.PickerConfig;
15 import com.cnlive.media.media.entity.Media; 15 import com.cnlive.media.media.entity.Media;
16 import com.cnlive.media.utils.AndroidQUtil; 16 import com.cnlive.media.utils.AndroidQUtil;
17 import com.cnlive.media.utils.GlideCacheUtil; 17 import com.cnlive.media.utils.GlideCacheUtil;
18 -import com.cnlive.strike.debug.R;  
19 import com.cnlive.strike.debug.databinding.ActivityMainBinding; 18 import com.cnlive.strike.debug.databinding.ActivityMainBinding;
20 19
21 import java.io.File; 20 import java.io.File;
@@ -70,12 +69,11 @@ public class MainActivity extends AppCompatActivity implements View.OnClickListe @@ -70,12 +69,11 @@ public class MainActivity extends AppCompatActivity implements View.OnClickListe
70 .maxNum(5) 69 .maxNum(5)
71 .setSelectGif(false) 70 .setSelectGif(false)
72 .maxImageSize(25 * 1024 * 1024) 71 .maxImageSize(25 * 1024 * 1024)
  72 + .maxVideoSize(100*1024*1024)
73 .isReturnUri(AndroidQUtil.isAndroidQ()) 73 .isReturnUri(AndroidQUtil.isAndroidQ())
74 - .selectMode(PickerConfig.PICKER_ONLY_ONE_TYPE) 74 + .selectMode(PickerConfig.PICKER_IMAGE_VIDEO)
75 .defaultSelectList(new ArrayList<Media>()) 75 .defaultSelectList(new ArrayList<Media>())
76 - .needCamera(true)  
77 - .cachePath(fileDir + "/strike/file/")  
78 - .setJumpCameraMode(PickerConfig.CAMERA_MODE_PIC) 76 + .needCamera(false)
79 .builder() 77 .builder()
80 // .doCrop(1, 1, 900, 900) 78 // .doCrop(1, 1, 900, 900)
81 .start(this, PickerConfig.PICKER_IMAGE, PickerConfig.DEFAULT_RESULT_CODE); 79 .start(this, PickerConfig.PICKER_IMAGE, PickerConfig.DEFAULT_RESULT_CODE);
config.gradle
@@ -21,7 +21,7 @@ ext { @@ -21,7 +21,7 @@ ext {
21 //编译方式 21 //编译方式
22 debug : false, 22 debug : false,
23 //版本号 23 //版本号
24 - version: "1.0.2.3", 24 + version: "1.0.2.4",
25 //Lib库前缀 25 //Lib库前缀
26 packeg : "com.cnlive.media", 26 packeg : "com.cnlive.media",
27 //Lib库名称 27 //Lib库名称
lib_media/src/main/java/com/cnlive/media/PickerConfig.java
@@ -10,10 +10,14 @@ public class PickerConfig { @@ -10,10 +10,14 @@ public class PickerConfig {
10 //视频文件最大时长 10 //视频文件最大时长
11 public static final String MAX_TIME = "max_time"; 11 public static final String MAX_TIME = "max_time";
12 // 默认视频时长 12 // 默认视频时长
13 - public static final int DEFAULT_MAX_TIME = 60 * 1000; 13 + public static final int DEFAULT_MAX_TIME = Integer.MAX_VALUE;
  14 + //最大选择个数
  15 + public static final int DEFAULT_MAX_NUM= Integer.MAX_VALUE;
  16 +
  17 + // 默认视频大小
  18 + public static final int DEFAULT_MAX_VIDEO_SIZE = Integer.MAX_VALUE;
  19 + public static final int DEFAULT_MAX_IMAGE_SIZE = Integer.MAX_VALUE;
14 20
15 - // 默认视频时长  
16 - public static final int DEFAULT_MAX_VIDEO_TIME = 600 * 1000;  
17 //界面跳转options的键值 21 //界面跳转options的键值
18 public static final String INTENT_KEY_OPTIONS = "options"; 22 public static final String INTENT_KEY_OPTIONS = "options";
19 //图片选择模式,默认选视频和图片 23 //图片选择模式,默认选视频和图片
@@ -40,6 +44,8 @@ public class PickerConfig { @@ -40,6 +44,8 @@ public class PickerConfig {
40 public static final int PICKER_IMAGE_VIDEO = 101; 44 public static final int PICKER_IMAGE_VIDEO = 101;
41 //只能选择一种类型 45 //只能选择一种类型
42 public static final int PICKER_ONLY_ONE_TYPE = 103; 46 public static final int PICKER_ONLY_ONE_TYPE = 103;
  47 + //视频选一个 图片选九个
  48 + public static final int PICKER_ONE_VIDEO_TYPE = 103;
43 //展示图片的列数行数 49 //展示图片的列数行数
44 public static int GridSpanCount = 3; 50 public static int GridSpanCount = 3;
45 public static int GridSpace = 4; 51 public static int GridSpace = 4;
lib_media/src/main/java/com/cnlive/media/frame/presenter/MediaPickerFragmentPresenter.java
@@ -59,7 +59,6 @@ public class MediaPickerFragmentPresenter extends MvpBasePresenter&lt;MediaPickerFr @@ -59,7 +59,6 @@ public class MediaPickerFragmentPresenter extends MvpBasePresenter&lt;MediaPickerFr
59 mediaPickerActivity.maxNum = mediaPickerActivity.mOptions .getMaxNum(); 59 mediaPickerActivity.maxNum = mediaPickerActivity.mOptions .getMaxNum();
60 mediaPickerActivity.maxVideoSize = mediaPickerActivity.mOptions .getMaxVideoSize(); 60 mediaPickerActivity.maxVideoSize = mediaPickerActivity.mOptions .getMaxVideoSize();
61 mediaPickerActivity.selectMode = mediaPickerActivity.mOptions .getSelectMode(); 61 mediaPickerActivity.selectMode = mediaPickerActivity.mOptions .getSelectMode();
62 - mediaPickerActivity.maxTime = mediaPickerActivity.mOptions .getMaxTime();  
63 mediaPickerActivity.isReturnUri = mediaPickerActivity.mOptions .isReturnUri(); 62 mediaPickerActivity.isReturnUri = mediaPickerActivity.mOptions .isReturnUri();
64 mediaPickerActivity.isFrendCircle = mediaPickerActivity.mOptions .isFriendCircle(); 63 mediaPickerActivity.isFrendCircle = mediaPickerActivity.mOptions .isFriendCircle();
65 mediaPickerActivity.needCrop = mediaPickerActivity.mOptions .isNeedCrop(); 64 mediaPickerActivity.needCrop = mediaPickerActivity.mOptions .isNeedCrop();
lib_media/src/main/java/com/cnlive/media/frame/presenter/MediaPresenter.java
@@ -36,7 +36,6 @@ public class MediaPresenter extends MvpBasePresenter&lt;MediaView&gt; { @@ -36,7 +36,6 @@ public class MediaPresenter extends MvpBasePresenter&lt;MediaView&gt; {
36 if (TextUtils.isEmpty(mediaPickerActivity.cachePath)) { 36 if (TextUtils.isEmpty(mediaPickerActivity.cachePath)) {
37 if (AndroidQUtil.isAndroidQ()) { 37 if (AndroidQUtil.isAndroidQ()) {
38 mediaPickerActivity.cachePath = mediaPickerActivity.getExternalFilesDir("").getPath() + File.separator + "MediaPickerPic"; 38 mediaPickerActivity.cachePath = mediaPickerActivity.getExternalFilesDir("").getPath() + File.separator + "MediaPickerPic";
39 -  
40 } else { 39 } else {
41 mediaPickerActivity.cachePath = Environment.getExternalStorageDirectory().getPath() + File.separator + "MediaPickerPic"; 40 mediaPickerActivity.cachePath = Environment.getExternalStorageDirectory().getPath() + File.separator + "MediaPickerPic";
42 } 41 }
@@ -70,7 +69,6 @@ public class MediaPresenter extends MvpBasePresenter&lt;MediaView&gt; { @@ -70,7 +69,6 @@ public class MediaPresenter extends MvpBasePresenter&lt;MediaView&gt; {
70 mediaPickerActivity.maxNum = mediaPickerActivity.mOptions.getMaxNum(); 69 mediaPickerActivity.maxNum = mediaPickerActivity.mOptions.getMaxNum();
71 mediaPickerActivity.maxVideoSize = mediaPickerActivity.mOptions.getMaxVideoSize(); 70 mediaPickerActivity.maxVideoSize = mediaPickerActivity.mOptions.getMaxVideoSize();
72 mediaPickerActivity.selectMode = mediaPickerActivity.mOptions.getSelectMode(); 71 mediaPickerActivity.selectMode = mediaPickerActivity.mOptions.getSelectMode();
73 - mediaPickerActivity.maxTime = mediaPickerActivity.mOptions.getMaxTime();  
74 mediaPickerActivity.isReturnUri = mediaPickerActivity.mOptions.isReturnUri(); 72 mediaPickerActivity.isReturnUri = mediaPickerActivity.mOptions.isReturnUri();
75 mediaPickerActivity.isFrendCircle = mediaPickerActivity.mOptions.isFriendCircle(); 73 mediaPickerActivity.isFrendCircle = mediaPickerActivity.mOptions.isFriendCircle();
76 mediaPickerActivity.needCrop = mediaPickerActivity.mOptions.isNeedCrop(); 74 mediaPickerActivity.needCrop = mediaPickerActivity.mOptions.isNeedCrop();
lib_media/src/main/java/com/cnlive/media/frame/view/MediaPickerFragmentView.java
@@ -80,7 +80,14 @@ public class MediaPickerFragmentView implements MvpView { @@ -80,7 +80,14 @@ public class MediaPickerFragmentView implements MvpView {
80 @Override 80 @Override
81 public void itemClick(Media media) { 81 public void itemClick(Media media) {
82 if (DoublePressed.onDoublePressed()) return; 82 if (DoublePressed.onDoublePressed()) return;
83 - if (mActivity.mOptions.isSinglePick() || mActivity.mOptions.maxNum == 1) { 83 + if (PickerConfig.PICKER_ONLY_ONE_TYPE == mActivity.selectMode && media.mediaType == 3) {
  84 + if (mActivity.selects.size() > 0) {
  85 + showMessage(mFragment.getResources().getString(R.string.msg_type_limit));
  86 + } else {
  87 + MeidaResultObservable.getInstance().finishMedia(true, media);
  88 + }
  89 +
  90 + } else if (mActivity.mOptions.isSinglePick() || mActivity.mOptions.maxNum == 1) {
84 91
85 if (mActivity.mOptions.isNeedCrop()) { 92 if (mActivity.mOptions.isNeedCrop()) {
86 if (media.mediaType != 1) { 93 if (media.mediaType != 1) {
@@ -160,7 +167,7 @@ public class MediaPickerFragmentView implements MvpView { @@ -160,7 +167,7 @@ public class MediaPickerFragmentView implements MvpView {
160 return false; 167 return false;
161 } 168 }
162 //视频时长限制 169 //视频时长限制
163 - if (media.mediaType == 3 && media.duration > mActivity.maxTime) { 170 + if (media.mediaType == 3 && media.duration > mActivity.maxVideoTime) {
164 showMessage(mFragment.getResources().getString(R.string.media_msg_time_limit) + (MediaStringUtils.gennerMinSec(mActivity.maxVideoTime / 1000))); 171 showMessage(mFragment.getResources().getString(R.string.media_msg_time_limit) + (MediaStringUtils.gennerMinSec(mActivity.maxVideoTime / 1000)));
165 return false; 172 return false;
166 } 173 }
@@ -196,7 +203,6 @@ public class MediaPickerFragmentView implements MvpView { @@ -196,7 +203,6 @@ public class MediaPickerFragmentView implements MvpView {
196 mediaActivity.allMedias.get(mediaActivity.allMedias.indexOf(select)).setSelect(true); 203 mediaActivity.allMedias.get(mediaActivity.allMedias.indexOf(select)).setSelect(true);
197 } 204 }
198 } 205 }
199 -// List<Media> listMedias = medias.get(0).getMedias();  
200 if (mediaActivity.needCamera && medias.get(0) != null && medias.get(0).getMedias() != null 206 if (mediaActivity.needCamera && medias.get(0) != null && medias.get(0).getMedias() != null
201 && medias.get(0).getMedias().get(0) != null && medias.get(0).getMedias().get(0).mediaType != 0) { 207 && medias.get(0).getMedias().get(0) != null && medias.get(0).getMedias().get(0).mediaType != 0) {
202 mediaActivity.allMedias.add(0, new Media(0)); 208 mediaActivity.allMedias.add(0, new Media(0));
lib_media/src/main/java/com/cnlive/media/frame/view/MediaView.java
@@ -336,8 +336,8 @@ public class MediaView implements MvpView { @@ -336,8 +336,8 @@ public class MediaView implements MvpView {
336 return false; 336 return false;
337 } 337 }
338 //视频时长限制 338 //视频时长限制
339 - if (media.mediaType == 3 && media.duration > mActivity.maxTime) {  
340 - showMessage(mActivity.getResources().getString(R.string.media_msg_time_limit) + (MediaStringUtils.gennerMinSec(mActivity.maxTime / 1000))); 339 + if (media.mediaType == 3 && media.duration > mActivity.maxVideoTime) {
  340 + showMessage(mActivity.getResources().getString(R.string.media_msg_time_limit) + (MediaStringUtils.gennerMinSec(mActivity.maxVideoTime / 1000)));
341 return false; 341 return false;
342 } 342 }
343 //判断是否支持gif 343 //判断是否支持gif
lib_media/src/main/java/com/cnlive/media/model/ImagePickerOptions.java
@@ -17,11 +17,11 @@ public class ImagePickerOptions implements Parcelable { @@ -17,11 +17,11 @@ public class ImagePickerOptions implements Parcelable {
17 } 17 }
18 18
19 //最大个数 19 //最大个数
20 - public int maxNum = 40; 20 + public int maxNum = PickerConfig.DEFAULT_MAX_NUM;
21 //视频的最大 的大小 21 //视频的最大 的大小
22 - public long maxVideoSize = 188743680L; 22 + public long maxVideoSize = PickerConfig.DEFAULT_MAX_VIDEO_SIZE;
23 //图片的最大大小 23 //图片的最大大小
24 - public long maxImageSize = 188743680L; 24 + public long maxImageSize = PickerConfig.DEFAULT_MAX_IMAGE_SIZE;
25 //是否展示相机 25 //是否展示相机
26 public boolean needCamera = false; 26 public boolean needCamera = false;
27 //选择模式 27 //选择模式
lib_media/src/main/java/com/cnlive/media/ui/activity/MediaActivity.java
@@ -79,11 +79,11 @@ public class MediaActivity extends MvpBindingActivity&lt;MediaView, MediaPresenter, @@ -79,11 +79,11 @@ public class MediaActivity extends MvpBindingActivity&lt;MediaView, MediaPresenter,
79 // 结果的code 79 // 结果的code
80 public int resultCode; 80 public int resultCode;
81 //最大 81 //最大
82 - public int maxNum = 40; 82 + public int maxNum = 9;
83 //视频的最大 的大小 83 //视频的最大 的大小
84 - public long maxVideoSize = 188743680L; 84 + public long maxVideoSize = Integer.MAX_VALUE;
85 //图片的最大大小 85 //图片的最大大小
86 - public long maxImageSize = 188743680L; 86 + public long maxImageSize = Integer.MAX_VALUE;
87 //是否展示相机 87 //是否展示相机
88 public boolean needCamera = false; 88 public boolean needCamera = false;
89 //选择模式 89 //选择模式
@@ -94,8 +94,6 @@ public class MediaActivity extends MvpBindingActivity&lt;MediaView, MediaPresenter, @@ -94,8 +94,6 @@ public class MediaActivity extends MvpBindingActivity&lt;MediaView, MediaPresenter,
94 public String cachePath; 94 public String cachePath;
95 //剪辑视频存储路径 95 //剪辑视频存储路径
96 public String videoTrimPath; 96 public String videoTrimPath;
97 - //是否是朋友圈  
98 - public boolean friendCircle = false;  
99 //裁剪的数据 97 //裁剪的数据
100 public ImagePickerCropParams cropParams; 98 public ImagePickerCropParams cropParams;
101 //是否需要裁剪 99 //是否需要裁剪
@@ -104,8 +102,7 @@ public class MediaActivity extends MvpBindingActivity&lt;MediaView, MediaPresenter, @@ -104,8 +102,7 @@ public class MediaActivity extends MvpBindingActivity&lt;MediaView, MediaPresenter,
104 public boolean singlePick = false; 102 public boolean singlePick = false;
105 //展示时长 103 //展示时长
106 public boolean showTime = false; 104 public boolean showTime = false;
107 - public int maxTime = 60 * 60_000;  
108 - public int maxVideoTime = PickerConfig.DEFAULT_MAX_VIDEO_TIME; 105 + public int maxVideoTime = PickerConfig.DEFAULT_MAX_TIME;
109 //是否选择Gif 106 //是否选择Gif
110 public boolean selectGift = true; 107 public boolean selectGift = true;
111 //处理返回uri地址 108 //处理返回uri地址
@@ -162,7 +159,8 @@ public class MediaActivity extends MvpBindingActivity&lt;MediaView, MediaPresenter, @@ -162,7 +159,8 @@ public class MediaActivity extends MvpBindingActivity&lt;MediaView, MediaPresenter,
162 } else if (type == PickerConfig.PICKER_ONLY_ONE_TYPE) { 159 } else if (type == PickerConfig.PICKER_ONLY_ONE_TYPE) {
163 loaderM = MediaLoader.getInstance(this, this); 160 loaderM = MediaLoader.getInstance(this, this);
164 getLoaderManager().initLoader(type, null, (MediaLoader) loaderM); 161 getLoaderManager().initLoader(type, null, (MediaLoader) loaderM);
165 - } else if (type == PickerConfig.PICKER_IMAGE) { 162 + }
  163 + else if (type == PickerConfig.PICKER_IMAGE) {
166 loaderM = ImageLoader.getInstance(this, this); 164 loaderM = ImageLoader.getInstance(this, this);
167 getLoaderManager().initLoader(type, null, (ImageLoader) loaderM); 165 getLoaderManager().initLoader(type, null, (ImageLoader) loaderM);
168 } else if (type == PickerConfig.PICKER_VIDEO) { 166 } else if (type == PickerConfig.PICKER_VIDEO) {
lib_media/src/main/java/com/cnlive/media/ui/adapter/MediaAdapter.java
@@ -90,6 +90,7 @@ public class MediaAdapter extends BaseRecyclerViewAdapter&lt;Media&gt; { @@ -90,6 +90,7 @@ public class MediaAdapter extends BaseRecyclerViewAdapter&lt;Media&gt; {
90 break; 90 break;
91 } 91 }
92 } 92 }
  93 +
93 @Override 94 @Override
94 public int getItemViewType(int position) { 95 public int getItemViewType(int position) {
95 Media meida = getItem(position); 96 Media meida = getItem(position);
@@ -109,10 +110,11 @@ public class MediaAdapter extends BaseRecyclerViewAdapter&lt;Media&gt; { @@ -109,10 +110,11 @@ public class MediaAdapter extends BaseRecyclerViewAdapter&lt;Media&gt; {
109 110
110 /** 111 /**
111 * 处理图像展示的逻辑 112 * 处理图像展示的逻辑
  113 + *
112 * @param mediaViewHolder 114 * @param mediaViewHolder
113 */ 115 */
114 private void showMedia(MediaViewHolder mediaViewHolder, int position) { 116 private void showMedia(MediaViewHolder mediaViewHolder, int position) {
115 - Media mMedia=getItem(position); 117 + Media mMedia = getItem(position);
116 binding = (MediaImageItemBinding) mediaViewHolder.getBinding(); 118 binding = (MediaImageItemBinding) mediaViewHolder.getBinding();
117 GlideCacheUtil.intoItemImageThumbnail(mContext, mMedia, binding.mediaImage, null); 119 GlideCacheUtil.intoItemImageThumbnail(mContext, mMedia, binding.mediaImage, null);
118 if (mMedia.mediaType == 1) { 120 if (mMedia.mediaType == 1) {
@@ -122,7 +124,7 @@ public class MediaAdapter extends BaseRecyclerViewAdapter&lt;Media&gt; { @@ -122,7 +124,7 @@ public class MediaAdapter extends BaseRecyclerViewAdapter&lt;Media&gt; {
122 binding.textViewSize.setText(showTime ? StringUtils.gennerTime(mMedia.duration / 1000) : FileUtils.getSizeByUnit(mMedia.size)); 124 binding.textViewSize.setText(showTime ? StringUtils.gennerTime(mMedia.duration / 1000) : FileUtils.getSizeByUnit(mMedia.size));
123 } 125 }
124 //单选 126 //单选
125 - if (mOptions.singlePick||mOptions.isNeedCrop()||mOptions.maxNum==1) { 127 + if (mOptions.singlePick || mOptions.isNeedCrop() || mOptions.maxNum == 1 || (mOptions.getSelectMode() == PickerConfig.PICKER_ONLY_ONE_TYPE && mMedia.mediaType == 3)) {
126 binding.checkImage.setVisibility(View.GONE); 128 binding.checkImage.setVisibility(View.GONE);
127 } else { 129 } else {
128 binding.checkImage.setVisibility(View.VISIBLE); 130 binding.checkImage.setVisibility(View.VISIBLE);
@@ -140,14 +142,17 @@ public class MediaAdapter extends BaseRecyclerViewAdapter&lt;Media&gt; { @@ -140,14 +142,17 @@ public class MediaAdapter extends BaseRecyclerViewAdapter&lt;Media&gt; {
140 142
141 /** 143 /**
142 * 处理选中的事件 144 * 处理选中的事件
  145 + *
143 * @param binding 146 * @param binding
144 */ 147 */
145 private void progressSelectItem(MediaImageItemBinding binding, int position) { 148 private void progressSelectItem(MediaImageItemBinding binding, int position) {
146 - if (listener != null) listener.itemSelect(getItem(position).isSelect(), getItem(position),position); 149 + if (listener != null)
  150 + listener.itemSelect(getItem(position).isSelect(), getItem(position), position);
147 } 151 }
148 152
149 /** 153 /**
150 * 处理相机点击事件 154 * 处理相机点击事件
  155 + *
151 * @param mediaViewHolder 156 * @param mediaViewHolder
152 */ 157 */
153 private void showCamera(MediaViewHolder mediaViewHolder, int position) { 158 private void showCamera(MediaViewHolder mediaViewHolder, int position) {
@@ -157,6 +162,4 @@ public class MediaAdapter extends BaseRecyclerViewAdapter&lt;Media&gt; { @@ -157,6 +162,4 @@ public class MediaAdapter extends BaseRecyclerViewAdapter&lt;Media&gt; {
157 } 162 }
158 163
159 164
160 -  
161 -  
162 } 165 }