首页 > 解决方案 > 使用 ViewPager + Glide + PhotoView 恢复分页时的缩放/平移矩阵

问题描述

我的用例是让 ViewPager 显示一系列 PhotoView 实例,其中分页图像应保持缩放和平移的最后状态。

PhotoView 实例由 PagerAdapter 创建

public View instantiateItem(ViewGroup viewGroup, int position) {
    PhotoView photoView = new PhotoView(viewGroup.getContext());
    viewGroup.addView(photoView, LayoutParams.MATCH_PARENT, LayoutParams.MATCH_PARENT);
    Glide.with(viewGroup.getContext())//
        .load(getImageUri(position))
        .into(photoView);
    return photoView;
}

我将“OnMatrixChangedListener”附加到 PhotoView 并存储 PhotoViewAttacher#mSuppMatrix。

我遇到的问题是找到适用于存储的 mSuppMatrix 的合适时机。

因此,给定一个包含缩放/平移信息的目标“mSuppMatrix”,并使用 ViewPager + PhotoView + Glide 的组合,应用 mSuppMatrix 的最佳侦听器/事件处理程序是什么?

标签: androidandroid-glideandroid-photoview

解决方案


我还没有找到一个表明我正在寻找的状态的事件。相反,我正在使用以下组合:

  • Glide RequestListener#onResourceReady()
  • View.OnLayoutChangeListener#onLayoutChange()

这样在 Glide 资源准备好后对 onLayoutChange() 的第一次调用就是触发的。


推荐阅读