导航菜单

页面标题

页面副标题

公务员之家 v1.0.1 - ImagePreviewActivity.java 源代码

正在查看: 公务员之家 v1.0.1 应用的 ImagePreviewActivity.java JAVA 源代码文件

本页面展示 JAVA 反编译生成的源代码文件,支持语法高亮显示。 仅供安全研究与技术分析使用,严禁用于任何非法用途。请遵守相关法律法规。


package cc.shinichi.library.view;

import android.app.Activity;
import android.app.ActivityOptions;
import android.content.Context;
import android.content.Intent;
import android.graphics.Color;
import android.os.Bundle;
import android.os.Handler;
import android.os.Message;
import android.text.TextUtils;
import android.view.View;
import android.view.Window;
import android.widget.Button;
import android.widget.FrameLayout;
import android.widget.ImageView;
import android.widget.TextView;
import androidx.appcompat.app.AppCompatActivity;
import androidx.core.app.ActivityCompat;
import androidx.core.content.ContextCompat;
import androidx.viewpager.widget.ViewPager;
import cc.shinichi.library.ImagePreview;
import cc.shinichi.library.R;
import cc.shinichi.library.bean.ImageInfo;
import cc.shinichi.library.glide.FileTarget;
import cc.shinichi.library.glide.ImageLoader;
import cc.shinichi.library.glide.progress.OnProgressListener;
import cc.shinichi.library.glide.progress.ProgressManager;
import cc.shinichi.library.tool.common.HandlerUtils;
import cc.shinichi.library.tool.image.DownloadPictureUtil;
import cc.shinichi.library.tool.ui.ToastUtil;
import cc.shinichi.library.view.listener.OnDownloadClickListener;
import com.bumptech.glide.Glide;
import com.bumptech.glide.RequestBuilder;
import com.bumptech.glide.request.transition.Transition;
import com.bytedance.sdk.openadsdk.TTAdConstant;
import com.bytedance.sdk.openadsdk.TTAdSdk;
import com.google.android.material.transition.platform.MaterialContainerTransform;
import com.google.android.material.transition.platform.MaterialContainerTransformSharedElementCallback;
import java.io.File;
import java.util.List;

public class ImagePreviewActivity extends AppCompatActivity implements Handler.Callback, View.OnClickListener {
    public static final String TAG = "ImagePreview";
    private Button btn_show_origin;
    private Activity context;
    private int currentItem;
    private FrameLayout fm_center_progress_container;
    private FrameLayout fm_image_show_origin_container;
    private HandlerUtils.HandlerHolder handlerHolder;
    private List<ImageInfo> imageInfoList;
    private ImagePreviewAdapter imagePreviewAdapter;
    private ImageView imgCloseButton;
    private ImageView img_download;
    private boolean isShowCloseButton;
    private boolean isShowDownButton;
    private boolean isShowIndicator;
    private boolean isShowOriginButton;
    private View progressParentLayout;
    private View rootView;
    private TextView tv_indicator;
    private HackyViewPager viewPager;
    private boolean isUserCustomProgressView = false;
    private boolean indicatorStatus = false;
    private boolean originalStatus = false;
    private boolean downloadButtonStatus = false;
    private boolean closeButtonStatus = false;
    private String currentItemOriginPathUrl = "";
    private int lastProgress = 0;

    public static void activityStart(Context context) {
        if (context == null) {
            return;
        }
        Intent intent = new Intent();
        intent.setClass(context, ImagePreviewActivity.class);
        View transitionView = ImagePreview.getInstance().getTransitionView();
        String transitionShareElementName = ImagePreview.getInstance().getTransitionShareElementName();
        if (transitionView != null && transitionShareElementName != null) {
            context.startActivity(intent, ActivityOptions.makeSceneTransitionAnimation((Activity) context, transitionView, transitionShareElementName).toBundle());
            return;
        }
        context.startActivity(intent);
        if (context instanceof Activity) {
            ((Activity) context).overridePendingTransition(R.anim.fade_in, R.anim.fade_out);
        }
    }

    protected void onCreate(Bundle bundle) {
        if (!TextUtils.isEmpty(ImagePreview.getInstance().getTransitionShareElementName())) {
            getWindow().requestFeature(13);
            findViewById(android.R.id.content).setTransitionName("shared_element_container");
            setEnterSharedElementCallback(new MaterialContainerTransformSharedElementCallback());
            getWindow().setSharedElementEnterTransition(new MaterialContainerTransform().addTarget(android.R.id.content).setDuration(300L));
            getWindow().setSharedElementReturnTransition(new MaterialContainerTransform().addTarget(android.R.id.content).setDuration(250L));
        }
        super.onCreate(bundle);
        setContentView(R.layout.sh_layout_preview);
        Window window = getWindow();
        window.clearFlags(TTAdConstant.KEY_CLICK_AREA);
        window.getDecorView().setSystemUiVisibility(1280);
        window.addFlags(Integer.MIN_VALUE);
        window.setStatusBarColor(0);
        this.context = this;
        this.handlerHolder = new HandlerUtils.HandlerHolder(this);
        List<ImageInfo> imageInfoList = ImagePreview.getInstance().getImageInfoList();
        this.imageInfoList = imageInfoList;
        if (imageInfoList == null || imageInfoList.size() == 0) {
            onBackPressed();
            return;
        }
        this.currentItem = ImagePreview.getInstance().getIndex();
        this.isShowDownButton = ImagePreview.getInstance().isShowDownButton();
        this.isShowCloseButton = ImagePreview.getInstance().isShowCloseButton();
        this.isShowIndicator = ImagePreview.getInstance().isShowIndicator();
        this.currentItemOriginPathUrl = this.imageInfoList.get(this.currentItem).getOriginUrl();
        boolean isShowOriginButton = ImagePreview.getInstance().isShowOriginButton(this.currentItem);
        this.isShowOriginButton = isShowOriginButton;
        if (isShowOriginButton) {
            checkCache(this.currentItemOriginPathUrl);
        }
        this.rootView = findViewById(R.id.rootView);
        this.viewPager = (HackyViewPager) findViewById(R.id.viewPager);
        this.tv_indicator = (TextView) findViewById(R.id.tv_indicator);
        this.fm_image_show_origin_container = (FrameLayout) findViewById(R.id.fm_image_show_origin_container);
        this.fm_center_progress_container = (FrameLayout) findViewById(R.id.fm_center_progress_container);
        this.fm_image_show_origin_container.setVisibility(8);
        this.fm_center_progress_container.setVisibility(8);
        if (ImagePreview.getInstance().getProgressLayoutId() != -1) {
            View inflate = View.inflate(this.context, ImagePreview.getInstance().getProgressLayoutId(), null);
            this.progressParentLayout = inflate;
            if (inflate != null) {
                this.fm_center_progress_container.removeAllViews();
                this.fm_center_progress_container.addView(this.progressParentLayout);
                this.isUserCustomProgressView = true;
            } else {
                this.isUserCustomProgressView = false;
            }
        } else {
            this.isUserCustomProgressView = false;
        }
        this.btn_show_origin = (Button) findViewById(R.id.btn_show_origin);
        this.img_download = (ImageView) findViewById(R.id.img_download);
        this.imgCloseButton = (ImageView) findViewById(R.id.imgCloseButton);
        this.img_download.setImageResource(ImagePreview.getInstance().getDownIconResId());
        this.imgCloseButton.setImageResource(ImagePreview.getInstance().getCloseIconResId());
        this.imgCloseButton.setOnClickListener(this);
        this.btn_show_origin.setOnClickListener(this);
        this.img_download.setOnClickListener(this);
        if (!this.isShowIndicator) {
            this.tv_indicator.setVisibility(8);
            this.indicatorStatus = false;
        } else if (this.imageInfoList.size() > 1) {
            this.tv_indicator.setVisibility(0);
            this.indicatorStatus = true;
        } else {
            this.tv_indicator.setVisibility(8);
            this.indicatorStatus = false;
        }
        if (ImagePreview.getInstance().getIndicatorShapeResId() > 0) {
            this.tv_indicator.setBackgroundResource(ImagePreview.getInstance().getIndicatorShapeResId());
        }
        if (this.isShowDownButton) {
            this.img_download.setVisibility(0);
            this.downloadButtonStatus = true;
        } else {
            this.img_download.setVisibility(8);
            this.downloadButtonStatus = false;
        }
        if (this.isShowCloseButton) {
            this.imgCloseButton.setVisibility(0);
            this.closeButtonStatus = true;
        } else {
            this.imgCloseButton.setVisibility(8);
            this.closeButtonStatus = false;
        }
        this.tv_indicator.setText(String.format(getString(R.string.indicator), (this.currentItem + 1) + "", "" + this.imageInfoList.size()));
        ImagePreviewAdapter imagePreviewAdapter = new ImagePreviewAdapter(this, this.imageInfoList);
        this.imagePreviewAdapter = imagePreviewAdapter;
        this.viewPager.setAdapter(imagePreviewAdapter);
        this.viewPager.setCurrentItem(this.currentItem);
        this.viewPager.addOnPageChangeListener(new ViewPager.SimpleOnPageChangeListener() {
            @Override
            public void onPageSelected(int i) {
                super.onPageSelected(i);
                if (ImagePreview.getInstance().getBigImagePageChangeListener() != null) {
                    ImagePreview.getInstance().getBigImagePageChangeListener().onPageSelected(i);
                }
                ImagePreviewActivity.this.currentItem = i;
                ImagePreviewActivity imagePreviewActivity = ImagePreviewActivity.this;
                imagePreviewActivity.currentItemOriginPathUrl = ((ImageInfo) imagePreviewActivity.imageInfoList.get(i)).getOriginUrl();
                ImagePreviewActivity.this.isShowOriginButton = ImagePreview.getInstance().isShowOriginButton(ImagePreviewActivity.this.currentItem);
                if (!ImagePreviewActivity.this.isShowOriginButton) {
                    ImagePreviewActivity.this.gone();
                } else {
                    ImagePreviewActivity imagePreviewActivity2 = ImagePreviewActivity.this;
                    imagePreviewActivity2.checkCache(imagePreviewActivity2.currentItemOriginPathUrl);
                }
                ImagePreviewActivity.this.tv_indicator.setText(String.format(ImagePreviewActivity.this.getString(R.string.indicator), (ImagePreviewActivity.this.currentItem + 1) + "", "" + ImagePreviewActivity.this.imageInfoList.size()));
                if (ImagePreviewActivity.this.isUserCustomProgressView) {
                    ImagePreviewActivity.this.fm_center_progress_container.setVisibility(8);
                    ImagePreviewActivity.this.lastProgress = 0;
                }
            }

            @Override
            public void onPageScrolled(int i, float f, int i2) {
                super.onPageScrolled(i, f, i2);
                if (ImagePreview.getInstance().getBigImagePageChangeListener() != null) {
                    ImagePreview.getInstance().getBigImagePageChangeListener().onPageScrolled(i, f, i2);
                }
            }

            @Override
            public void onPageScrollStateChanged(int i) {
                super.onPageScrollStateChanged(i);
                if (ImagePreview.getInstance().getBigImagePageChangeListener() != null) {
                    ImagePreview.getInstance().getBigImagePageChangeListener().onPageScrollStateChanged(i);
                }
            }
        });
    }

    private void downloadCurrentImg() {
        DownloadPictureUtil.downloadPicture(this.context.getApplicationContext(), this.currentItemOriginPathUrl);
    }

    public void onBackPressed() {
        supportFinishAfterTransition();
    }

    public void finish() {
        super.finish();
        overridePendingTransition(R.anim.fade_in, R.anim.fade_out);
        ImagePreview.getInstance().reset();
        ImagePreviewAdapter imagePreviewAdapter = this.imagePreviewAdapter;
        if (imagePreviewAdapter != null) {
            imagePreviewAdapter.closePage();
        }
    }

    public int convertPercentToBlackAlphaColor(float f) {
        String lowerCase = Integer.toHexString((int) (Math.min(1.0f, Math.max(TTAdConstant.ASPECT_CORNER_RADIUS_DEFAULT, f)) * 255.0f)).toLowerCase();
        return Color.parseColor(TTAdSdk.SDK_VERSION_NAME + (lowerCase.length() < 2 ? "0" : "") + lowerCase + "000000");
    }

    public void setAlpha(float f) {
        this.rootView.setBackgroundColor(convertPercentToBlackAlphaColor(f));
        if (f >= 1.0f) {
            if (this.indicatorStatus) {
                this.tv_indicator.setVisibility(0);
            }
            if (this.originalStatus) {
                this.fm_image_show_origin_container.setVisibility(0);
            }
            if (this.downloadButtonStatus) {
                this.img_download.setVisibility(0);
            }
            if (this.closeButtonStatus) {
                this.imgCloseButton.setVisibility(0);
                return;
            }
            return;
        }
        this.tv_indicator.setVisibility(8);
        this.fm_image_show_origin_container.setVisibility(8);
        this.img_download.setVisibility(8);
        this.imgCloseButton.setVisibility(8);
    }

    @Override
    public boolean handleMessage(Message message) {
        if (message.what == 0) {
            String originUrl = this.imageInfoList.get(this.currentItem).getOriginUrl();
            visible();
            if (this.isUserCustomProgressView) {
                gone();
            } else {
                this.btn_show_origin.setText("0 %");
            }
            if (checkCache(originUrl)) {
                Message obtainMessage = this.handlerHolder.obtainMessage();
                Bundle bundle = new Bundle();
                bundle.putString("url", originUrl);
                obtainMessage.what = 1;
                obtainMessage.obj = bundle;
                this.handlerHolder.sendMessage(obtainMessage);
                return true;
            }
            loadOriginImage(originUrl);
        } else if (message.what == 1) {
            String string = ((Bundle) message.obj).getString("url");
            gone();
            if (this.currentItem == getRealIndexWithPath(string)) {
                if (this.isUserCustomProgressView) {
                    this.fm_center_progress_container.setVisibility(8);
                    if (ImagePreview.getInstance().getOnOriginProgressListener() != null) {
                        this.progressParentLayout.setVisibility(8);
                        ImagePreview.getInstance().getOnOriginProgressListener().finish(this.progressParentLayout);
                    }
                    this.imagePreviewAdapter.loadOrigin(this.imageInfoList.get(this.currentItem));
                } else {
                    this.imagePreviewAdapter.loadOrigin(this.imageInfoList.get(this.currentItem));
                }
            }
        } else if (message.what == 2) {
            Bundle bundle2 = (Bundle) message.obj;
            String string2 = bundle2.getString("url");
            int i = bundle2.getInt("progress");
            if (this.currentItem == getRealIndexWithPath(string2)) {
                if (this.isUserCustomProgressView) {
                    gone();
                    this.fm_center_progress_container.setVisibility(0);
                    if (ImagePreview.getInstance().getOnOriginProgressListener() != null) {
                        this.progressParentLayout.setVisibility(0);
                        ImagePreview.getInstance().getOnOriginProgressListener().progress(this.progressParentLayout, i);
                    }
                } else {
                    visible();
                    this.btn_show_origin.setText(String.format("%s %%", Integer.valueOf(i)));
                }
            }
        } else if (message.what == 3) {
            this.btn_show_origin.setText(R.string.btn_original);
            this.fm_image_show_origin_container.setVisibility(8);
            this.originalStatus = false;
        } else if (message.what == 4) {
            this.fm_image_show_origin_container.setVisibility(0);
            this.originalStatus = true;
        }
        return true;
    }

    private int getRealIndexWithPath(String str) {
        for (int i = 0; i < this.imageInfoList.size(); i++) {
            if (str.equalsIgnoreCase(this.imageInfoList.get(i).getOriginUrl())) {
                return i;
            }
        }
        return 0;
    }

    public boolean checkCache(String str) {
        File glideCacheFile = ImageLoader.getGlideCacheFile(this.context, str);
        if (glideCacheFile != null && glideCacheFile.exists()) {
            gone();
            return true;
        }
        visible();
        return false;
    }

    @Override
    public void onClick(View view) {
        int id = view.getId();
        if (id == R.id.img_download) {
            OnDownloadClickListener downloadClickListener = ImagePreview.getInstance().getDownloadClickListener();
            if (downloadClickListener != null) {
                if (!downloadClickListener.isInterceptDownload()) {
                    checkAndDownload();
                }
                ImagePreview.getInstance().getDownloadClickListener().onClick(this.context, view, this.currentItem);
                return;
            }
            checkAndDownload();
            return;
        }
        if (id == R.id.btn_show_origin) {
            this.handlerHolder.sendEmptyMessage(0);
        } else if (id == R.id.imgCloseButton) {
            onBackPressed();
        }
    }

    private void checkAndDownload() {
        if (ContextCompat.checkSelfPermission(this.context, "android.permission.WRITE_EXTERNAL_STORAGE") != 0) {
            if (ActivityCompat.shouldShowRequestPermissionRationale(this, "android.permission.WRITE_EXTERNAL_STORAGE")) {
                ToastUtil.getInstance()._short(this.context, getString(R.string.toast_deny_permission_save_failed));
                return;
            } else {
                ActivityCompat.requestPermissions(this, new String[]{"android.permission.WRITE_EXTERNAL_STORAGE"}, 1);
                return;
            }
        }
        downloadCurrentImg();
    }

    public void onRequestPermissionsResult(int i, String[] strArr, int[] iArr) {
        if (i == 1) {
            for (int i2 = 0; i2 < strArr.length; i2++) {
                if (iArr[i2] == 0) {
                    downloadCurrentImg();
                } else {
                    ToastUtil.getInstance()._short(this.context, getString(R.string.toast_deny_permission_save_failed));
                }
            }
        }
    }

    public void gone() {
        this.handlerHolder.sendEmptyMessage(3);
    }

    private void visible() {
        this.handlerHolder.sendEmptyMessage(4);
    }

    private void loadOriginImage(String str) {
        Glide.with(this.context).downloadOnly().load(str).into((RequestBuilder<File>) new FileTarget() {
            @Override
            public void onResourceReady(File file, Transition<? super File> transition) {
                super.onResourceReady(file, transition);
            }
        });
        ProgressManager.addListener(str, new OnProgressListener() {
            @Override
            public void onProgress(String str2, boolean z, int i, long j, long j2) {
                if (z) {
                    Message obtainMessage = ImagePreviewActivity.this.handlerHolder.obtainMessage();
                    Bundle bundle = new Bundle();
                    bundle.putString("url", str2);
                    obtainMessage.what = 1;
                    obtainMessage.obj = bundle;
                    ImagePreviewActivity.this.handlerHolder.sendMessage(obtainMessage);
                    return;
                }
                if (i == ImagePreviewActivity.this.lastProgress) {
                    return;
                }
                ImagePreviewActivity.this.lastProgress = i;
                Message obtainMessage2 = ImagePreviewActivity.this.handlerHolder.obtainMessage();
                Bundle bundle2 = new Bundle();
                bundle2.putString("url", str2);
                bundle2.putInt("progress", i);
                obtainMessage2.what = 2;
                obtainMessage2.obj = bundle2;
                ImagePreviewActivity.this.handlerHolder.sendMessage(obtainMessage2);
            }
        });
    }
}