正在查看: 微商客 v2.1.2 应用的 WatchMessagePictureActivity.java JAVA 源代码文件
本页面展示 JAVA 反编译生成的源代码文件,支持语法高亮显示。 仅供安全研究与技术分析使用,严禁用于任何非法用途。请遵守相关法律法规。
正在查看: 微商客 v2.1.2 应用的 WatchMessagePictureActivity.java JAVA 源代码文件
本页面展示 JAVA 反编译生成的源代码文件,支持语法高亮显示。 仅供安全研究与技术分析使用,严禁用于任何非法用途。请遵守相关法律法规。
package com.qiyukf.uikit.session.activity;
import android.app.Activity;
import android.content.ContentValues;
import android.content.Context;
import android.content.Intent;
import android.content.res.Configuration;
import android.graphics.Bitmap;
import android.os.Bundle;
import android.os.Handler;
import android.provider.MediaStore;
import android.text.TextUtils;
import android.view.View;
import android.view.ViewGroup;
import androidx.viewpager.widget.PagerAdapter;
import androidx.viewpager.widget.ViewPager;
import com.qiyukf.module.log.UnicornLog;
import com.qiyukf.nimlib.sdk.NIMClient;
import com.qiyukf.nimlib.sdk.Observer;
import com.qiyukf.nimlib.sdk.msg.MsgService;
import com.qiyukf.nimlib.sdk.msg.MsgServiceObserve;
import com.qiyukf.nimlib.sdk.msg.attachment.ImageAttachment;
import com.qiyukf.nimlib.sdk.msg.constant.AttachStatusEnum;
import com.qiyukf.nimlib.sdk.msg.model.IMMessage;
import com.qiyukf.uikit.common.activity.BaseFragmentActivity;
import com.qiyukf.uikit.common.ui.imageview.BaseZoomableImageView;
import com.qiyukf.uikit.common.ui.imageview.ImageGestureListener;
import com.qiyukf.uikit.common.ui.imageview.MultiTouchZoomableImageView;
import com.qiyukf.unicorn.R;
import com.qiyukf.unicorn.api.event.EventCallback;
import com.qiyukf.unicorn.api.event.UnicornEventBase;
import com.qiyukf.unicorn.api.event.entry.RequestPermissionEventEntry;
import com.qiyukf.unicorn.c;
import com.qiyukf.unicorn.g.l;
import com.qiyukf.unicorn.mediaselect.filter.Filter;
import com.qiyukf.unicorn.n.d.a;
import com.qiyukf.unicorn.n.e.b;
import com.qiyukf.unicorn.n.e.d;
import com.qiyukf.unicorn.n.i;
import com.qiyukf.unicorn.n.m;
import com.qiyukf.unicorn.n.n;
import com.qiyukf.unicorn.n.r;
import com.qiyukf.unicorn.widget.dialog.UnicornDialog;
import com.yalantis.ucrop.view.CropImageView;
import java.io.File;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.Iterator;
import java.util.List;
public class WatchMessagePictureActivity extends BaseFragmentActivity {
private static final String EXTRA_IMAGES = "EXTRA_IMAGES";
private static final String EXTRA_INDEX = "EXTRA_INDEX";
private static final String TAG = "WatchMessagePictureActi";
private ImagePagerAdapter imagePagerAdapter;
private ViewPager imageViewPager;
private View loadingLayout;
private List<IMMessage> messages;
private boolean needLoad = true;
private Observer<IMMessage> statusObserver = new Observer<IMMessage>() {
@Override
public void onEvent(IMMessage iMMessage) {
if (!iMMessage.isTheSame(WatchMessagePictureActivity.this.currentItem()) || WatchMessagePictureActivity.this.isDestroyedCompatible()) {
return;
}
if (iMMessage.getAttachStatus() == AttachStatusEnum.transferred && WatchMessagePictureActivity.this.isOriginImageHasDownloaded(iMMessage)) {
WatchMessagePictureActivity.this.onDownloadSuccess(iMMessage);
} else if (iMMessage.getAttachStatus() == AttachStatusEnum.fail) {
WatchMessagePictureActivity.this.onDownloadFailed(iMMessage);
}
}
};
private Handler uiHandler;
@Override
protected boolean hasTitleBar() {
return false;
}
public static void start(Context context, ArrayList<IMMessage> arrayList, int i) {
Intent intent = new Intent();
intent.putExtra(EXTRA_IMAGES, arrayList);
intent.putExtra(EXTRA_INDEX, i);
intent.setClass(context, WatchMessagePictureActivity.class);
context.startActivity(intent);
}
@Override
public void onCreate(Bundle bundle) {
super.onCreate(bundle);
getWindow().setFlags(Filter.K, Filter.K);
setContentView(R.layout.ysf_watch_picture_activity);
onParseIntent();
this.uiHandler = new Handler();
findViews();
registerObservers(true);
}
@Override
protected void onDestroy() {
registerObservers(false);
super.onDestroy();
}
private void onParseIntent() {
this.messages = (ArrayList) getIntent().getSerializableExtra(EXTRA_IMAGES);
}
private void findViews() {
this.loadingLayout = findViewById(R.id.loading_layout);
int intExtra = getIntent().getIntExtra(EXTRA_INDEX, 0);
this.imageViewPager = findViewById(R.id.ysf_watch_picture_view_pager);
this.imagePagerAdapter = new ImagePagerAdapter(intExtra, this.messages);
this.imageViewPager.setOffscreenPageLimit(2);
this.imageViewPager.setAdapter(this.imagePagerAdapter);
this.imageViewPager.setCurrentItem(intExtra);
this.imageViewPager.addOnPageChangeListener(new ViewPager.OnPageChangeListener() {
public void onPageScrollStateChanged(int i) {
}
public void onPageScrolled(int i, float f, int i2) {
if (f == CropImageView.DEFAULT_ASPECT_RATIO && WatchMessagePictureActivity.this.needLoad) {
WatchMessagePictureActivity.this.needLoad = false;
WatchMessagePictureActivity.this.loadingLayout.setVisibility(8);
WatchMessagePictureActivity.this.updateCurrentItem(i);
WatchMessagePictureActivity watchMessagePictureActivity = WatchMessagePictureActivity.this;
watchMessagePictureActivity.requestImage(watchMessagePictureActivity.imageViewPager.getCurrentItem());
}
}
public void onPageSelected(int i) {
WatchMessagePictureActivity.this.needLoad = true;
}
});
}
public void requestImage(int i) {
IMMessage iMMessage = this.messages.get(i);
if (isOriginImageHasDownloaded(iMMessage)) {
onDownloadSuccess(iMMessage);
} else {
onDownloadStart(iMMessage);
((MsgService) NIMClient.getService(MsgService.class)).downloadAttachment(iMMessage, false);
}
}
public boolean isOriginImageHasDownloaded(IMMessage iMMessage) {
return iMMessage.getAttachStatus() == AttachStatusEnum.transferred && !TextUtils.isEmpty(((ImageAttachment) iMMessage.getAttachment()).getPath());
}
private int getImageResOnLoading() {
return R.drawable.ysf_image_placeholder_loading;
}
private int getImageResOnFailed() {
return R.drawable.ysf_image_placeholder_fail;
}
private void registerObservers(boolean z) {
((MsgServiceObserve) NIMClient.getService(MsgServiceObserve.class)).observeMsgStatus(this.statusObserver, z);
}
private void onDownloadStart(IMMessage iMMessage) {
updateImage(iMMessage, false);
if (TextUtils.isEmpty(((ImageAttachment) iMMessage.getAttachment()).getPath())) {
this.loadingLayout.setVisibility(0);
} else {
this.loadingLayout.setVisibility(8);
}
}
public void onDownloadSuccess(IMMessage iMMessage) {
this.loadingLayout.setVisibility(8);
updateImage(iMMessage, false);
}
public void onDownloadFailed(IMMessage iMMessage) {
this.loadingLayout.setVisibility(8);
BaseZoomableImageView imageViewOfItem = imageViewOfItem(iMMessage);
if (imageViewOfItem != null) {
imageViewOfItem.setImageBitmap(a.a(getImageResOnFailed()));
r.b(R.string.ysf_image_download_failed);
}
}
protected void setGestureListener(BaseZoomableImageView baseZoomableImageView) {
baseZoomableImageView.setImageGestureListener(new ImageGestureListener() {
@Override
public void onImageGestureSingleTapConfirmed() {
WatchMessagePictureActivity.this.onImageViewTouched();
}
@Override
public void onImageGestureLongPress() {
WatchMessagePictureActivity.this.showWatchPictureAction();
}
@Override
public void onImageGestureFlingDown() {
WatchMessagePictureActivity.this.finish();
}
});
baseZoomableImageView.setViewPager(this.imageViewPager);
}
protected void onImageViewTouched() {
finish();
}
protected void showWatchPictureAction() {
if (TextUtils.isEmpty(((ImageAttachment) this.messages.get(this.imageViewPager.getCurrentItem()).getAttachment()).getPath())) {
return;
}
UnicornDialog.showItemsDialog(this, null, null, new CharSequence[]{getString(R.string.ysf_save_to_device)}, true, new UnicornDialog.OnClickListener() {
@Override
public void onClick(int i) {
if (c.g().sdkEvents == null || c.g().sdkEvents.eventProcessFactory == null || i.a(WatchMessagePictureActivity.this, l.b)) {
WatchMessagePictureActivity.this.checkPermissionAndSave(null, null);
return;
}
final UnicornEventBase eventOf = c.g().sdkEvents.eventProcessFactory.eventOf(5);
if (eventOf == null) {
WatchMessagePictureActivity.this.checkPermissionAndSave(null, null);
return;
}
List<String> asList = Arrays.asList(l.b);
final RequestPermissionEventEntry requestPermissionEventEntry = new RequestPermissionEventEntry();
requestPermissionEventEntry.setScenesType(2);
requestPermissionEventEntry.setPermissionList(asList);
eventOf.onEvent(requestPermissionEventEntry, WatchMessagePictureActivity.this, new EventCallback() {
@Override
public void onProcessEventSuccess(Object obj) {
WatchMessagePictureActivity.this.checkPermissionAndSave(eventOf, requestPermissionEventEntry);
}
@Override
public void onPorcessEventError() {
WatchMessagePictureActivity.this.checkPermissionAndSave(eventOf, requestPermissionEventEntry);
}
@Override
public void onNotPorcessEvent() {
WatchMessagePictureActivity.this.checkPermissionAndSave(eventOf, requestPermissionEventEntry);
}
@Override
public void onInterceptEvent() {
r.a(R.string.ysf_no_permission_save_image);
}
});
}
});
}
public void checkPermissionAndSave(final UnicornEventBase unicornEventBase, final RequestPermissionEventEntry requestPermissionEventEntry) {
i.a((Activity) this).a(l.b).a(new i.a() {
@Override
public void onGranted() {
WatchMessagePictureActivity.this.savePicture();
}
@Override
public void onDenied() {
UnicornEventBase unicornEventBase2 = unicornEventBase;
if (unicornEventBase2 == null || !unicornEventBase2.onDenyEvent(WatchMessagePictureActivity.this, requestPermissionEventEntry)) {
r.a(R.string.ysf_no_permission_save_image);
}
}
}).a();
}
public void savePicture() {
ImageAttachment imageAttachment = (ImageAttachment) this.messages.get(this.imageViewPager.getCurrentItem()).getAttachment();
String path = imageAttachment.getPath();
if (TextUtils.isEmpty(path)) {
return;
}
if (m.a()) {
if (b.a((Context) this, new File(path))) {
r.b(R.string.ysf_picture_save_to);
return;
} else {
r.b(R.string.ysf_picture_save_fail);
return;
}
}
String str = d.b((Context) this) + (imageAttachment.getFileName() + "." + (TextUtils.isEmpty(imageAttachment.getExtension()) ? "jpg" : imageAttachment.getExtension()));
if (com.qiyukf.nimlib.net.a.c.a.a(path, str) != -1) {
try {
ContentValues contentValues = new ContentValues(2);
contentValues.put("mime_type", "image/jpeg");
contentValues.put("_data", str);
getContentResolver().insert(MediaStore.Images.Media.EXTERNAL_CONTENT_URI, contentValues);
r.b(R.string.ysf_picture_save_to);
return;
} catch (Exception e) {
r.b(R.string.ysf_picture_save_fail);
UnicornLog.i(TAG, "savePicture is error", e);
return;
}
}
r.b(R.string.ysf_picture_save_fail);
}
public IMMessage currentItem() {
return this.messages.get(this.imageViewPager.getCurrentItem());
}
private BaseZoomableImageView imageViewOfItem(IMMessage iMMessage) {
Iterator<IMMessage> it = this.messages.iterator();
int i = 0;
while (it.hasNext() && !it.next().isTheSame(iMMessage)) {
i++;
}
return imageViewOf(i);
}
public void updateCurrentItem(final int i) {
if (i != this.imageViewPager.getCurrentItem()) {
return;
}
BaseZoomableImageView imageViewOf = imageViewOf(i);
if (imageViewOf == null) {
this.uiHandler.postDelayed(new Runnable() {
@Override
public void run() {
WatchMessagePictureActivity.this.updateCurrentItem(i);
}
}, 300L);
} else {
setGestureListener(imageViewOf);
}
}
private BaseZoomableImageView imageViewOf(int i) {
try {
return (BaseZoomableImageView) this.imageViewPager.findViewWithTag(Integer.valueOf(i));
} catch (Exception e) {
UnicornLog.i(TAG, "imageViewOf is error position= ".concat(String.valueOf(i)), e);
return null;
}
}
@Override
public void onConfigurationChanged(Configuration configuration) {
super.onConfigurationChanged(configuration);
ViewGroup.LayoutParams layoutParams = this.imageViewPager.getLayoutParams();
layoutParams.height = n.b();
layoutParams.width = n.a();
this.imageViewPager.setLayoutParams(layoutParams);
this.imagePagerAdapter.notifyDataSetChanged();
}
private class ImagePagerAdapter extends PagerAdapter {
private Handler decodeHandler = com.qiyukf.nimlib.e.b.a.c().a();
private int mFirstDisplayImageIndex;
private List<IMMessage> messageList;
public int getItemPosition(Object obj) {
return -2;
}
public boolean isViewFromObject(View view, Object obj) {
return view == obj;
}
public ImagePagerAdapter(int i, List<IMMessage> list) {
this.messageList = list;
this.mFirstDisplayImageIndex = i;
}
public void destroyItem(ViewGroup viewGroup, int i, Object obj) {
MultiTouchZoomableImageView multiTouchZoomableImageView = (MultiTouchZoomableImageView) obj;
multiTouchZoomableImageView.clear();
viewGroup.removeView(multiTouchZoomableImageView);
}
public int getCount() {
List<IMMessage> list = this.messageList;
if (list == null) {
return 0;
}
return list.size();
}
public Object instantiateItem(ViewGroup viewGroup, final int i) {
MultiTouchZoomableImageView multiTouchZoomableImageView = new MultiTouchZoomableImageView(viewGroup.getContext());
viewGroup.addView(multiTouchZoomableImageView, new ViewGroup.LayoutParams(-1, -1));
multiTouchZoomableImageView.setTag(Integer.valueOf(i));
if (i == this.mFirstDisplayImageIndex) {
WatchMessagePictureActivity watchMessagePictureActivity = WatchMessagePictureActivity.this;
watchMessagePictureActivity.updateImage((IMMessage) watchMessagePictureActivity.messages.get(i), true);
} else {
this.decodeHandler.post(new Runnable() {
@Override
public void run() {
WatchMessagePictureActivity.this.updateImage((IMMessage) WatchMessagePictureActivity.this.messages.get(i), false);
}
});
}
return multiTouchZoomableImageView;
}
}
public void updateImage(IMMessage iMMessage, boolean z) {
ImageAttachment imageAttachment;
final BaseZoomableImageView imageViewOfItem = imageViewOfItem(iMMessage);
if (imageViewOfItem == null || (imageAttachment = (ImageAttachment) iMMessage.getAttachment()) == null) {
return;
}
String path = imageAttachment.getPath();
if (TextUtils.isEmpty(path)) {
path = imageAttachment.getThumbPath();
}
final Bitmap a = !TextUtils.isEmpty(path) ? a.a(path, com.qiyukf.unicorn.n.d.c.b(path)) : null;
if (a == null) {
a = a.a(getImageResOnLoading());
}
if (z) {
imageViewOfItem.setImageBitmap(a);
} else {
this.uiHandler.post(new Runnable() {
@Override
public void run() {
imageViewOfItem.setImageBitmap(a);
}
});
}
}
}