|
|
@@ -0,0 +1,161 @@
|
|
|
+package com.mgtech.base_library.util;
|
|
|
+
|
|
|
+import android.content.Context;
|
|
|
+import android.graphics.Rect;
|
|
|
+import android.os.Build;
|
|
|
+import android.view.LayoutInflater;
|
|
|
+import android.view.View;
|
|
|
+import android.view.ViewGroup;
|
|
|
+import android.widget.LinearLayout;
|
|
|
+import android.widget.PopupWindow;
|
|
|
+
|
|
|
+import androidx.annotation.NonNull;
|
|
|
+import androidx.viewpager.widget.PagerAdapter;
|
|
|
+import androidx.viewpager.widget.ViewPager;
|
|
|
+
|
|
|
+import com.luck.picture.lib.photoview.PhotoView;
|
|
|
+import com.mgtech.base_library.R;
|
|
|
+import com.mgtech.base_library.custom.MyTitleView;
|
|
|
+import com.mgtech.base_library.custom.MyViewPager;
|
|
|
+
|
|
|
+import java.util.ArrayList;
|
|
|
+import java.util.List;
|
|
|
+
|
|
|
+/**
|
|
|
+ * @ProjectName: BaseLibrary
|
|
|
+ * @Package: com.mgtech.base_library.custom
|
|
|
+ * @ClassName: CommonPreviewPopWindow
|
|
|
+ * @Description: 预览
|
|
|
+ * @Author: 牛松涛
|
|
|
+ * @CreateDate: 2020/6/12 16:08
|
|
|
+ * @UpdateUser: 更新者:
|
|
|
+ * @UpdateDate: 2020/6/12 16:08
|
|
|
+ * @UpdateRemark: 更新说明:
|
|
|
+ * @Version: 1.0
|
|
|
+ */
|
|
|
+public class CommonPreviewPopWindow extends PopupWindow {
|
|
|
+ private final View view;
|
|
|
+ private MyTitleView myTitleView;
|
|
|
+ private MyViewPager viewPager;
|
|
|
+ private Context context;
|
|
|
+ private List<View> viewList = new ArrayList<>();
|
|
|
+
|
|
|
+ private List<String> photoSelectList;
|
|
|
+
|
|
|
+ private int currPage = 1;
|
|
|
+
|
|
|
+ private PreviewAdapter previewAdapter = new PreviewAdapter();
|
|
|
+
|
|
|
+
|
|
|
+ public CommonPreviewPopWindow(Context context) {
|
|
|
+ this.context = context;
|
|
|
+ view = LayoutInflater.from(context).inflate(R.layout.common_preview_popupwindow,null);
|
|
|
+ initView();
|
|
|
+ initPopWindow();
|
|
|
+ }
|
|
|
+
|
|
|
+ public void setPhotoSelectList(int currPage,List<String> photoSelectList){
|
|
|
+ this.photoSelectList = photoSelectList;
|
|
|
+ this.currPage = currPage;
|
|
|
+ myTitleView.setTitleText(currPage + "/" +photoSelectList.size());
|
|
|
+ viewPager.setCurrentItem(currPage);
|
|
|
+ addView();
|
|
|
+ }
|
|
|
+
|
|
|
+
|
|
|
+ private void initView(){
|
|
|
+ myTitleView = view.findViewById(R.id.my_title);
|
|
|
+ viewPager = view.findViewById(R.id.photo_preview);
|
|
|
+
|
|
|
+ myTitleView.setLeftClick(this::popDismiss);
|
|
|
+ viewPager.setAdapter(previewAdapter);
|
|
|
+ viewPager.addOnPageChangeListener(new ViewPager.OnPageChangeListener() {
|
|
|
+ @Override
|
|
|
+ public void onPageScrolled(int i, float v, int i1) {
|
|
|
+
|
|
|
+ }
|
|
|
+
|
|
|
+ @Override
|
|
|
+ public void onPageSelected(int i) {
|
|
|
+ currPage = i + 1;
|
|
|
+ myTitleView.setTitleText(currPage + "/" +photoSelectList.size());
|
|
|
+ }
|
|
|
+
|
|
|
+ @Override
|
|
|
+ public void onPageScrollStateChanged(int i) {
|
|
|
+
|
|
|
+ }
|
|
|
+ });
|
|
|
+ }
|
|
|
+
|
|
|
+ private void addView(){
|
|
|
+ if (photoSelectList == null || photoSelectList.size() == 0)
|
|
|
+ return;
|
|
|
+ viewList.clear();
|
|
|
+ for (String image : photoSelectList){
|
|
|
+ LinearLayout.LayoutParams params = new LinearLayout.LayoutParams(ViewGroup.LayoutParams.MATCH_PARENT,
|
|
|
+ ViewGroup.LayoutParams.WRAP_CONTENT);
|
|
|
+ PhotoView imageView = new PhotoView(context);
|
|
|
+ imageView.setLayoutParams(params);
|
|
|
+ GlideUtil.loadThumbnailImage(image,imageView);
|
|
|
+ viewList.add(imageView);
|
|
|
+ }
|
|
|
+ previewAdapter.notifyDataSetChanged();
|
|
|
+ }
|
|
|
+
|
|
|
+ private void initPopWindow() {
|
|
|
+ this.setContentView(view);
|
|
|
+ // 设置弹出窗体的宽
|
|
|
+ this.setWidth(ViewGroup.LayoutParams.MATCH_PARENT);
|
|
|
+ // 设置弹出窗体的高
|
|
|
+ this.setHeight(ViewGroup.LayoutParams.MATCH_PARENT);
|
|
|
+ // 设置弹出窗体可点击()
|
|
|
+ this.setFocusable(true);
|
|
|
+ this.setOutsideTouchable(true);
|
|
|
+ //设置SelectPicPopupWindow弹出窗体动画效果
|
|
|
+// this.setAnimationStyle(R.style.base_pop_top);
|
|
|
+ }
|
|
|
+
|
|
|
+
|
|
|
+ public void popDismiss(){
|
|
|
+ if (isShowing())
|
|
|
+ dismiss();
|
|
|
+ }
|
|
|
+
|
|
|
+ public void showAsDropDown(View paramView) {
|
|
|
+ if (Build.VERSION.SDK_INT >= 24) {
|
|
|
+ Rect localRect = new Rect();
|
|
|
+ paramView.getGlobalVisibleRect(localRect);
|
|
|
+ setHeight(paramView.getResources().getDisplayMetrics().heightPixels - localRect.bottom);
|
|
|
+ }
|
|
|
+ super.showAsDropDown(paramView);
|
|
|
+ }
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+ class PreviewAdapter extends PagerAdapter {
|
|
|
+
|
|
|
+ @Override
|
|
|
+ public int getCount() {
|
|
|
+ return viewList.size();
|
|
|
+ }
|
|
|
+
|
|
|
+ @Override
|
|
|
+ public boolean isViewFromObject(@NonNull View view, @NonNull Object o) {
|
|
|
+ return view == o;
|
|
|
+ }
|
|
|
+
|
|
|
+ @NonNull
|
|
|
+ @Override
|
|
|
+ public Object instantiateItem(@NonNull ViewGroup container, int position) {
|
|
|
+ container.addView(viewList.get(position));
|
|
|
+ return viewList.get(position);
|
|
|
+ }
|
|
|
+
|
|
|
+ @Override
|
|
|
+ public void destroyItem(@NonNull ViewGroup container, int position, @NonNull Object object) {
|
|
|
+ container.removeView(viewList.get(position));
|
|
|
+ }
|
|
|
+ }
|
|
|
+}
|