我正在使用
PhotoView库来实现放大的Android ImageView.缩放效果很好.
我在ImageView中设置低质量的图像,然后开始以高质量下载新的图像,这将取代低质量的图像.
如果用户放大低质量的图像 – 高质量的图像将替换现有图像,缩放级别将清除:(
加载高质量图像后如何保存缩放级别?
我试图从PhotoViewAttacher中获取图像矩阵,并将其设置为高质量的图像,但它不起作用 – 图像缩放级别和边界与之前不一样.高质量的图像取代了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的尺寸重新计算它.