Я использую 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 the exact problem
mAttacher.update();
// restore high-quality image matrix
mAttacher.setDisplayMatrix(matrix);
}
@Override
public void onError(ImageView imageView) {
}
});
Изменить: Изображения имеют разные размеры.