|
@@ -0,0 +1,195 @@
|
|
|
+package com.cooleshow.base.ui.activity.tools;
|
|
|
+
|
|
|
+import android.content.Intent;
|
|
|
+import android.content.res.Configuration;
|
|
|
+import android.os.Bundle;
|
|
|
+import android.os.Parcelable;
|
|
|
+import android.view.KeyEvent;
|
|
|
+import android.view.LayoutInflater;
|
|
|
+import android.view.View;
|
|
|
+import android.view.ViewGroup;
|
|
|
+import android.widget.TextView;
|
|
|
+
|
|
|
+import com.alibaba.android.arouter.facade.annotation.Route;
|
|
|
+import com.cooleshow.base.R;
|
|
|
+import com.cooleshow.base.constanst.StyleConfig;
|
|
|
+import com.cooleshow.base.databinding.ActivityPhotoPreviewBinding;
|
|
|
+import com.cooleshow.base.router.RouterPath;
|
|
|
+import com.cooleshow.base.ui.activity.BaseActivity;
|
|
|
+import com.cooleshow.base.ui.activity.BaseMVPActivity;
|
|
|
+import com.cooleshow.base.utils.GlideUtils;
|
|
|
+import com.cooleshow.base.utils.helper.QMUIStatusBarHelper;
|
|
|
+import com.luck.picture.lib.entity.LocalMedia;
|
|
|
+import com.luck.picture.lib.photoview.PhotoView;
|
|
|
+
|
|
|
+import java.util.ArrayList;
|
|
|
+import java.util.List;
|
|
|
+
|
|
|
+import androidx.annotation.NonNull;
|
|
|
+import androidx.annotation.Nullable;
|
|
|
+import androidx.viewpager.widget.PagerAdapter;
|
|
|
+import androidx.viewpager.widget.ViewPager;
|
|
|
+
|
|
|
+/**
|
|
|
+ * 创建日期:2022/6/13 14:30
|
|
|
+ *
|
|
|
+ * @author Ryan
|
|
|
+ * 类说明:
|
|
|
+ */
|
|
|
+@Route(path = RouterPath.BaseCenter.CHAT_PHOTO_PREVIEW)
|
|
|
+public class PhotoPreviewActivity extends BaseActivity<ActivityPhotoPreviewBinding> implements View.OnClickListener {
|
|
|
+ @Override
|
|
|
+ public void onClick(View v) {
|
|
|
+
|
|
|
+ }
|
|
|
+ private TextView tv_title;
|
|
|
+ ViewPager viewpager;
|
|
|
+ private boolean isRemove;
|
|
|
+ private List<LocalMedia> selectList;
|
|
|
+ private int selectedPosition = 0;
|
|
|
+ private PhotoPreviewListAdapter adapter;
|
|
|
+
|
|
|
+ @Override
|
|
|
+ protected void onCreate(@Nullable Bundle savedInstanceState) {
|
|
|
+ super.onCreate(savedInstanceState);
|
|
|
+ QMUIStatusBarHelper.setStatusBarLightMode(this);
|
|
|
+ }
|
|
|
+
|
|
|
+ @Override
|
|
|
+ protected void initView() {
|
|
|
+ selectList = getIntent().getParcelableArrayListExtra("list");
|
|
|
+ selectedPosition = getIntent().getIntExtra("position", 0);
|
|
|
+ isRemove = getIntent().getBooleanExtra("isRemove", true);
|
|
|
+ if (selectList == null) {
|
|
|
+ selectList = new ArrayList<>();
|
|
|
+ selectedPosition = 0;
|
|
|
+ }
|
|
|
+ initMidTitleToolBar(viewBinding.toolbarInclude.toolbar, "");
|
|
|
+ tv_title= viewBinding.toolbarInclude.title;
|
|
|
+ tv_title.setText((selectedPosition + 1) + "/" + selectList.size());
|
|
|
+ adapter = new PhotoPreviewListAdapter();
|
|
|
+ viewpager=viewBinding.viewpager;
|
|
|
+ viewpager.setAdapter(adapter);
|
|
|
+ viewpager.setCurrentItem(selectedPosition);
|
|
|
+ viewpager.setOnPageChangeListener(new ViewPager.OnPageChangeListener() {
|
|
|
+ @Override
|
|
|
+ public void onPageScrolled(int position, float positionOffset, int positionOffsetPixels) {
|
|
|
+
|
|
|
+ }
|
|
|
+
|
|
|
+ @Override
|
|
|
+ public void onPageSelected(int position) {
|
|
|
+ selectedPosition = position;
|
|
|
+ tv_title.setText((position + 1) + "/" + selectList.size());
|
|
|
+ }
|
|
|
+
|
|
|
+ @Override
|
|
|
+ public void onPageScrollStateChanged(int state) {
|
|
|
+
|
|
|
+ }
|
|
|
+ });
|
|
|
+
|
|
|
+ if (isRemove) {
|
|
|
+ viewBinding.toolbarInclude.tvRight.setVisibility(View.VISIBLE);
|
|
|
+ viewBinding.toolbarInclude.tvRight.setBackgroundResource(com.cooleshow.base.R.drawable.ic_delete);
|
|
|
+ viewBinding.toolbarInclude.tvRight.setOnClickListener(view -> {
|
|
|
+ if (selectList.size() > 0) {
|
|
|
+ if (selectedPosition > selectList.size() - 1) {
|
|
|
+ selectedPosition -= 1;
|
|
|
+ }
|
|
|
+ selectList.remove(selectedPosition);
|
|
|
+ if (selectList.size() == 0) {
|
|
|
+ initResult();
|
|
|
+ return;
|
|
|
+ }
|
|
|
+ adapter = null;
|
|
|
+ adapter = new PhotoPreviewListAdapter();
|
|
|
+ viewpager.setAdapter(adapter);
|
|
|
+ if (selectedPosition == selectList.size()) {
|
|
|
+ viewpager.setCurrentItem(0);
|
|
|
+ tv_title.setText("1/" + selectList.size());
|
|
|
+ } else {
|
|
|
+ viewpager.setCurrentItem(selectedPosition);
|
|
|
+ }
|
|
|
+ if (selectedPosition == 0) {
|
|
|
+ tv_title.setText("1/" + selectList.size());
|
|
|
+ }
|
|
|
+
|
|
|
+ }
|
|
|
+ });
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ @Override
|
|
|
+ protected ActivityPhotoPreviewBinding getLayoutView() {
|
|
|
+ return ActivityPhotoPreviewBinding.inflate(getLayoutInflater());
|
|
|
+ }
|
|
|
+
|
|
|
+ @Override
|
|
|
+ public void onBackPressed() {
|
|
|
+ initResult();
|
|
|
+ }
|
|
|
+
|
|
|
+ private void initResult() {
|
|
|
+ Intent intent = new Intent();
|
|
|
+ intent.putParcelableArrayListExtra("list", (ArrayList<? extends Parcelable>) selectList);
|
|
|
+ setResult(RESULT_OK, intent);
|
|
|
+ finish();
|
|
|
+ }
|
|
|
+ /**
|
|
|
+ * 需要拦截press的事件
|
|
|
+ *
|
|
|
+ * @param keyCode
|
|
|
+ * @param event
|
|
|
+ * @return
|
|
|
+ */
|
|
|
+ @Override
|
|
|
+ public boolean onKeyDown(int keyCode, KeyEvent event) {
|
|
|
+ if (keyCode == KeyEvent.KEYCODE_BACK) {
|
|
|
+ initResult();
|
|
|
+ return true;
|
|
|
+ } else {
|
|
|
+ return super.onKeyDown(keyCode, event);
|
|
|
+ }
|
|
|
+
|
|
|
+ }
|
|
|
+
|
|
|
+ public class PhotoPreviewListAdapter extends PagerAdapter {
|
|
|
+
|
|
|
+ @Override
|
|
|
+ public int getCount() {
|
|
|
+ return selectList.size();
|
|
|
+ }
|
|
|
+
|
|
|
+ @Override
|
|
|
+ public boolean isViewFromObject(@NonNull View view, @NonNull Object object) {
|
|
|
+ return view == object;
|
|
|
+ }
|
|
|
+
|
|
|
+ @Override
|
|
|
+ public Object instantiateItem(ViewGroup container, int position) {
|
|
|
+ View inflater = LayoutInflater.from(PhotoPreviewActivity.this).inflate(R.layout.photo_preview_list_item, null);
|
|
|
+ PhotoView ivIcon = inflater.findViewById(R.id.iv_icon);
|
|
|
+ GlideUtils.INSTANCE.loadImage(PhotoPreviewActivity.this,selectList.get(position).getPath(),ivIcon);
|
|
|
+ container.addView(inflater);
|
|
|
+ return inflater;
|
|
|
+
|
|
|
+
|
|
|
+ }
|
|
|
+
|
|
|
+ @Override
|
|
|
+ public void destroyItem(ViewGroup container, int position, Object object) {
|
|
|
+ container.removeView((View) object);
|
|
|
+ }
|
|
|
+
|
|
|
+ }
|
|
|
+
|
|
|
+ @Override
|
|
|
+ public void onConfigurationChanged(Configuration newConfig) {
|
|
|
+ super.onConfigurationChanged(newConfig);
|
|
|
+ adapter = new PhotoPreviewListAdapter();
|
|
|
+ viewpager.setAdapter(adapter);
|
|
|
+ }
|
|
|
+
|
|
|
+
|
|
|
+}
|