gpt4 book ai didi

android - PhotoViewAttacher 清除 imageView 边界和缩放级别

转载 作者:塔克拉玛干 更新时间:2023-11-02 07:50:57 26 4
gpt4 key购买 nike

我正在使用 PhotoView用于实现缩放 Android ImageView 的库。缩放效果很好。

我在 ImageView 中设置了一张low-quality 的图片,然后开始下载 high-quality 的新图片,这将替换低质量图像。

如果用户放大低质量图像 - 高质量图像替换现有图像并且缩放级别清除:(

加载高质量图像后如何保存缩放级别?

我试图从 PhotoViewAttacher 中获取图像 Matrix low-quality 并将其设置为 high-quality image,但它不起作用 - 图像缩放级别和边界与以前不同。 高质量 图像替换了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() 做了两件事:

  1. 确保 ImageView 的比例类型设置为 ScaleType.MATRIX
  2. 使当前矩阵无效,并根据新Drawable的尺寸重新计算。

因此,假设您的第一张和第二张图片具有完全相同的尺寸,您可以跳过 update() 调用,它应该保留当前的缩放和平移值。

关于android - PhotoViewAttacher 清除 imageView 边界和缩放级别,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30401059/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com