Мой вариант использования - использовать 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.
- ViewPager # onPageSelected срабатывает независимо от состояния ViewGroup, т.е.PhotoView может все еще рисовать, или Glide может даже загружаться
- Glide # RequestListener (onResourceReady) срабатывает, когда Drawable готов, но, очевидно, ДО запуска PhotoView # setImageDrawable
- Даже переопределяя PhotoView #setImageDrawable и применение mSuppMatrix после вызова super.setImageDrawable слишком рано, так как позднее вызов layout () приводит к запуску resetView () PhotoViewAttacher, что делает недействительным mSuppMatrix
Таким образом, с учетом цели "mSuppMatrix"удерживая информацию о масштабировании / панорамировании и используя комбинацию ViewPager + PhotoView + Glide, какой лучший обработчик слушателя / события применяет mSuppMatrix?