diff --git a/multilibrary/src/main/java/com/zhongjh/albumcamerarecorder/camera/CameraLayout.java b/multilibrary/src/main/java/com/zhongjh/albumcamerarecorder/camera/CameraLayout.java index fca7a918..6facb7df 100644 --- a/multilibrary/src/main/java/com/zhongjh/albumcamerarecorder/camera/CameraLayout.java +++ b/multilibrary/src/main/java/com/zhongjh/albumcamerarecorder/camera/CameraLayout.java @@ -1,5 +1,16 @@ package com.zhongjh.albumcamerarecorder.camera; +import static com.otaliastudios.cameraview.controls.Mode.PICTURE; +import static com.otaliastudios.cameraview.controls.Mode.VIDEO; +import static com.zhongjh.albumcamerarecorder.camera.constants.FlashModels.TYPE_FLASH_AUTO; +import static com.zhongjh.albumcamerarecorder.camera.constants.FlashModels.TYPE_FLASH_OFF; +import static com.zhongjh.albumcamerarecorder.camera.constants.FlashModels.TYPE_FLASH_ON; +import static com.zhongjh.albumcamerarecorder.utils.MediaStoreUtils.MediaTypes.TYPE_PICTURE; +import static com.zhongjh.albumcamerarecorder.widget.clickorlongbutton.ClickOrLongButton.BUTTON_STATE_BOTH; +import static com.zhongjh.albumcamerarecorder.widget.clickorlongbutton.ClickOrLongButton.BUTTON_STATE_CLICK_AND_HOLD; +import static com.zhongjh.albumcamerarecorder.widget.clickorlongbutton.ClickOrLongButton.BUTTON_STATE_ONLY_CLICK; +import static com.zhongjh.albumcamerarecorder.widget.clickorlongbutton.ClickOrLongButton.BUTTON_STATE_ONLY_LONG_CLICK; + import android.content.Context; import android.content.res.TypedArray; import android.graphics.Bitmap; @@ -69,17 +80,6 @@ import it.sephiroth.android.library.imagezoom.ImageViewTouch; -import static com.otaliastudios.cameraview.controls.Mode.PICTURE; -import static com.otaliastudios.cameraview.controls.Mode.VIDEO; -import static com.zhongjh.albumcamerarecorder.camera.constants.FlashModels.TYPE_FLASH_AUTO; -import static com.zhongjh.albumcamerarecorder.camera.constants.FlashModels.TYPE_FLASH_OFF; -import static com.zhongjh.albumcamerarecorder.camera.constants.FlashModels.TYPE_FLASH_ON; -import static com.zhongjh.albumcamerarecorder.utils.MediaStoreUtils.MediaTypes.TYPE_PICTURE; -import static com.zhongjh.albumcamerarecorder.widget.clickorlongbutton.ClickOrLongButton.BUTTON_STATE_BOTH; -import static com.zhongjh.albumcamerarecorder.widget.clickorlongbutton.ClickOrLongButton.BUTTON_STATE_CLICK_AND_HOLD; -import static com.zhongjh.albumcamerarecorder.widget.clickorlongbutton.ClickOrLongButton.BUTTON_STATE_ONLY_CLICK; -import static com.zhongjh.albumcamerarecorder.widget.clickorlongbutton.ClickOrLongButton.BUTTON_STATE_ONLY_LONG_CLICK; - /** * @author zhongjh * @date 2018/7/23. @@ -1358,18 +1358,19 @@ public void onClick() { /** * 多图进行删除的时候 * - * @param position 数据的索引 + * @param bitmapData 数据 */ @Override - public void onDelete(int position) { + public void onDelete(BitmapData bitmapData) { // 删除文件 - FileUtil.deleteFile(mBitmapData.get(position).getPath()); + FileUtil.deleteFile(bitmapData.getPath()); // 回调接口:删除图片后剩下的相关数据 mCaptureListener.remove(mBitmapData); - // 当列表全部删掉的话,就隐藏,为什么是 <= 1,因为是先删除实体,再删除数据源,所以这个判断结束后,就会删除数据源实际是0了 - if (mBitmapData.size() <= 1) { + // 当列表全部删掉隐藏列表框的UI + Log.d(TAG,"onDelete " + mBitmapData.size()); + if (mBitmapData.size() <= 0) { // 隐藏横版列表 mViewHolder.rlPhoto.setVisibility(View.GONE); diff --git a/multilibrary/src/main/java/com/zhongjh/albumcamerarecorder/camera/adapter/PhotoAdapter.java b/multilibrary/src/main/java/com/zhongjh/albumcamerarecorder/camera/adapter/PhotoAdapter.java index 2ef865c7..b0c08c22 100644 --- a/multilibrary/src/main/java/com/zhongjh/albumcamerarecorder/camera/adapter/PhotoAdapter.java +++ b/multilibrary/src/main/java/com/zhongjh/albumcamerarecorder/camera/adapter/PhotoAdapter.java @@ -1,5 +1,9 @@ package com.zhongjh.albumcamerarecorder.camera.adapter; +import static com.zhongjh.albumcamerarecorder.album.model.SelectedItemCollection.COLLECTION_IMAGE; +import static com.zhongjh.albumcamerarecorder.album.model.SelectedItemCollection.STATE_COLLECTION_TYPE; +import static com.zhongjh.albumcamerarecorder.album.model.SelectedItemCollection.STATE_SELECTION; + import android.content.Context; import android.content.Intent; import android.os.Bundle; @@ -27,10 +31,6 @@ import java.util.ArrayList; import java.util.List; -import static com.zhongjh.albumcamerarecorder.album.model.SelectedItemCollection.COLLECTION_IMAGE; -import static com.zhongjh.albumcamerarecorder.album.model.SelectedItemCollection.STATE_COLLECTION_TYPE; -import static com.zhongjh.albumcamerarecorder.album.model.SelectedItemCollection.STATE_SELECTION; - /** * 横向形式显示多个图片的 * @@ -74,18 +74,19 @@ public PhotoViewHolder onCreateViewHolder(@NonNull ViewGroup parent, int viewTyp @Override public void onBindViewHolder(@NonNull PhotoViewHolder holder, int position) { - mGlobalSpec.getImageEngine().loadUriImage(mContext, holder.imgPhoto, mListData.get(position).getUri()); + BitmapData bitmapData = mListData.get(position); + mGlobalSpec.getImageEngine().loadUriImage(mContext, holder.imgPhoto, bitmapData.getUri()); // 点击图片 holder.itemView.setOnClickListener(new OnMoreClickListener() { @Override public void onMoreClickListener(@NotNull View v) { - onClickListener(position); + onClickListener(bitmapData); } }); holder.imgCancel.setOnClickListener(new OnMoreClickListener() { @Override public void onMoreClickListener(@NotNull View v) { - removePosition(position); + removePosition(bitmapData); } }); } @@ -102,46 +103,44 @@ public void setListData(List listData) { /** * 点击事件 * - * @param position 索引 + * @param bitmapData 数据 */ - private void onClickListener(int position) { - if (isOperation()) { - ArrayList items = new ArrayList<>(); - for (BitmapData item : mListData) { - MultiMedia multiMedia = new MultiMedia(); - multiMedia.setId(mListData.indexOf(item)); - multiMedia.setUri(item.getUri()); - multiMedia.setPath(item.getPath()); - multiMedia.setMimeType(MimeType.JPEG.toString()); - multiMedia.setWidth(item.getWidth()); - multiMedia.setHeight(item.getHeight()); - items.add(multiMedia); - } - Bundle bundle = new Bundle(); - bundle.putParcelableArrayList(STATE_SELECTION, items); - bundle.putInt(STATE_COLLECTION_TYPE, COLLECTION_IMAGE); - - Intent intent = new Intent(mContext, AlbumPreviewActivity.class); - - // 获取目前点击的这个item - MultiMedia item = new MultiMedia(); - item.setUri(mListData.get(position).getUri()); - item.setPath(mListData.get(position).getPath()); - item.setMimeType(MimeType.JPEG.toString()); - item.setWidth(mListData.get(position).getWidth()); - item.setHeight(mListData.get(position).getHeight()); - intent.putExtra(AlbumPreviewActivity.EXTRA_ITEM, item); - - intent.putExtra(BasePreviewActivity.EXTRA_DEFAULT_BUNDLE, bundle); - intent.putExtra(BasePreviewActivity.EXTRA_RESULT_ORIGINAL_ENABLE, false); - intent.putExtra(BasePreviewActivity.EXTRA_IS_ALLOW_REPEAT, true); - intent.putExtra(BasePreviewActivity.IS_SELECTED_LISTENER, false); - intent.putExtra(BasePreviewActivity.IS_SELECTED_CHECK, false); - mCameraFragment.mAlbumPreviewActivityResult.launch(intent); - if (mGlobalSpec.getCutscenesEnabled()) { - if (mCameraFragment.getActivity() != null) { - mCameraFragment.getActivity().overridePendingTransition(R.anim.activity_open_zjh, 0); - } + private void onClickListener(BitmapData bitmapData) { + ArrayList items = new ArrayList<>(); + for (BitmapData item : mListData) { + MultiMedia multiMedia = new MultiMedia(); + multiMedia.setId(mListData.indexOf(item)); + multiMedia.setUri(item.getUri()); + multiMedia.setPath(item.getPath()); + multiMedia.setMimeType(MimeType.JPEG.toString()); + multiMedia.setWidth(item.getWidth()); + multiMedia.setHeight(item.getHeight()); + items.add(multiMedia); + } + Bundle bundle = new Bundle(); + bundle.putParcelableArrayList(STATE_SELECTION, items); + bundle.putInt(STATE_COLLECTION_TYPE, COLLECTION_IMAGE); + + Intent intent = new Intent(mContext, AlbumPreviewActivity.class); + + // 获取目前点击的这个item + MultiMedia item = new MultiMedia(); + item.setUri(bitmapData.getUri()); + item.setPath(bitmapData.getPath()); + item.setMimeType(MimeType.JPEG.toString()); + item.setWidth(bitmapData.getWidth()); + item.setHeight(bitmapData.getHeight()); + intent.putExtra(AlbumPreviewActivity.EXTRA_ITEM, item); + + intent.putExtra(BasePreviewActivity.EXTRA_DEFAULT_BUNDLE, bundle); + intent.putExtra(BasePreviewActivity.EXTRA_RESULT_ORIGINAL_ENABLE, false); + intent.putExtra(BasePreviewActivity.EXTRA_IS_ALLOW_REPEAT, true); + intent.putExtra(BasePreviewActivity.IS_SELECTED_LISTENER, false); + intent.putExtra(BasePreviewActivity.IS_SELECTED_CHECK, false); + mCameraFragment.mAlbumPreviewActivityResult.launch(intent); + if (mGlobalSpec.getCutscenesEnabled()) { + if (mCameraFragment.getActivity() != null) { + mCameraFragment.getActivity().overridePendingTransition(R.anim.activity_open_zjh, 0); } } } @@ -149,15 +148,15 @@ private void onClickListener(int position) { /** * 根据索引删除view * - * @param position 索引 + * @param bitmapData 数据 */ - public void removePosition(int position) { - if (isOperation()) { - mPhotoAdapterListener.onDelete(position); - mListData.remove(position); - notifyItemRemoved(position); - notifyItemRangeChanged(position, getItemCount()); - } + public void removePosition(BitmapData bitmapData) { + int position = mListData.indexOf(bitmapData); + Log.d(TAG,"removePosition " + position); + mListData.remove(bitmapData); + notifyItemRemoved(position); + notifyItemRangeChanged(position, mListData.size()); + mPhotoAdapterListener.onDelete(bitmapData); } /** diff --git a/multilibrary/src/main/java/com/zhongjh/albumcamerarecorder/camera/adapter/PhotoAdapterListener.java b/multilibrary/src/main/java/com/zhongjh/albumcamerarecorder/camera/adapter/PhotoAdapterListener.java index 3c5acfa6..7cdf8330 100644 --- a/multilibrary/src/main/java/com/zhongjh/albumcamerarecorder/camera/adapter/PhotoAdapterListener.java +++ b/multilibrary/src/main/java/com/zhongjh/albumcamerarecorder/camera/adapter/PhotoAdapterListener.java @@ -17,8 +17,8 @@ public interface PhotoAdapterListener { /** * 删除该图片 * - * @param position 数据的索引 + * @param bitmapData 数据 */ - void onDelete(int position); + void onDelete(BitmapData bitmapData); } diff --git a/progresslibrary/src/main/java/com/zhongjh/progresslibrary/apapter/PhotoAdapter.kt b/progresslibrary/src/main/java/com/zhongjh/progresslibrary/apapter/PhotoAdapter.kt index c5327fd5..afdc651b 100644 --- a/progresslibrary/src/main/java/com/zhongjh/progresslibrary/apapter/PhotoAdapter.kt +++ b/progresslibrary/src/main/java/com/zhongjh/progresslibrary/apapter/PhotoAdapter.kt @@ -367,7 +367,7 @@ class PhotoAdapter(private val mContext: Context, private val mGridLayoutManage: list.remove(multiMediaView) multiMediaView.maskProgressView.reset() notifyItemRemoved(position) - notifyItemRangeChanged(position, 1) + notifyItemRangeChanged(position, list.size) } /** @@ -389,7 +389,7 @@ class PhotoAdapter(private val mContext: Context, private val mGridLayoutManage: if (list.size + maskProgressLayout.audioList.size >= maxMediaCount && isOperation) { notifyItemRemoved(list.size) - notifyItemRangeChanged(list.size, 1) + notifyItemRangeChanged(list.size, list.size) } }