|  | @@ -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);
 | 
	
		
			
				|  |  | +    }
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +}
 |