我正在使用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) {
}
});
修改:图片的尺寸不同。
答案 0 :(得分:0)
查看PhotoViewAttacher.java的代码后,似乎调用update()
会做两件事:
ImageView
的比例尺类型设置为ScaleType.MATRIX
。Drawable
的尺寸重新计算。因此,假设您的第一张和第二张图片的尺寸完全相同,您可以跳过update()
调用,该调用应保留当前的缩放和平移值。