我正在使用PhotoView库来实现缩放的Android
ImageView
。缩放效果很好。
我正在low-quality
中设置带有ImageView
的图像,然后开始下载带有hight-quality
的新图像,它将替换low-quality
图像。
如果用户放大low-quality
图像-high-quality
图像将替换现有图像,并且缩放级别清除:(
加载high-quality
图像后如何保存缩放级别?
我试图从Matrix
中的PhotoViewAttacher
获取图像low-quality
并将其设置为high-quality image
,但是它不起作用-图像缩放级别和范围与以前不同。 high-quality
图像替换了low-quality
中的ImageView
图像。
Matrix matrix;
imageView.setImageBitmap(imageBitmap);
...
PhotoViewAttacher mAttacher = new PhotoViewAttacher(imageView);
// save the matrix before any modifications
matrix = mAttacher.getDisplayMatrix();
mAttacher.setOnMatrixChangeListener(new OnMatrixChangedListener() {
@Override
public void onMatrixChanged(RectF rect) {
// update the matrix
matrix = mAttacher.getDisplayMatrix();
}
});
imageProvider.load(getActivity(), imageView, imageUrl, progressBarView, imageConfig, new ImageCallback() {
@Override
public void onSuccess(ImageView imageView) {
// update image in ImageView
// probably the problem is in this .update() call
// but I don't get what's the exact problem
mAttacher.update();
// restore high-quality image matrix
mAttacher.setDisplayMatrix(matrix);
}
@Override
public void onError(ImageView imageView) {
}
});
编辑:图像具有不同的尺寸。
最佳答案
看完PhotoViewAttacher.java的代码后-似乎调用update()
可以完成两件事:
ImageView
的比例类型设置为ScaleType.MATRIX
。 Drawable
的尺寸对其进行重新计算。 因此,假设您的第一张和第二张图片都具有完全相同的尺寸,则可以跳过
update()
调用,该调用应保留当前的缩放和平移值。关于android - PhotoViewAttacher清除imageView边界和缩放级别,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/30401059/