导航菜单

页面标题

页面副标题

微商客 v2.1.2 - WatchMessagePictureActivity.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);
                }
            });
        }
    }
}