在Android中调整ImageView的大小以适应图像缩放

8

我需要在Android中的ImageView中显示一张图片。

我使用类似于以下代码的scaletype(MATRIX)来缩放图像:

                       mtrx.postScale(scale, scale);
                 imageView.setImageMatrix(mtrx);
            imageView.setScaleType(ScaleType.MATRIX);
            imageView.invalidate();

现在,这确实可以调整ImageView中包含的图像大小,很好,但我需要重新定位图像到图像视图中的位置0,0,然后调整ImageView本身以适应缩放后的图像大小。
到目前为止,我想到的每个尝试重用同一ImageView的想法似乎都不起作用,或者我只是做错了什么。
我唯一能完成这个任务的方法是销毁ImageView,调整位图大小,创建一个新的ImageView,其中包含在缩放时创建的新位图,并将该视图添加回布局中吗?
我真的不想那样做。因为我现在已经遇到了16兆堆限制的问题。如何告诉矩阵将图像移动到ImageView中的0,0位置(ImageView最初是使用scaletype center创建的,在缩小图像后?),然后如何告诉ImageView,嘿,你现在只有缩放后的图像那么大?
提前感谢您。
2个回答

8

将您的图像视图设置为“调整视图边界”似乎可以解决问题。

文档中如下所述:

如果要使ImageView调整其边界以保持其可绘制对象的纵横比,则将其设置为true。

您可以使用android:adjustViewBounds="true"或使用imageView.setAdjustViewBounds(true)代码来实现此目的。


1
但是使用scaleType fitStart并不起作用。至少在这种情况下:缩小后底部有空白垂直空间。当我设置adjustViewBounds="true"时,这个空间没有被调整。 - User

1

将“调整视图边界”设置为true,然后将比例类型设置为“fitXY”,最后调整layout_width和height。您将看到图像重新调整大小。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接