正在查看: 公务员之家 v1.0.1 应用的 ImagePreviewActivity.java JAVA 源代码文件
本页面展示 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);
}
});
}
}