如何正确使用自定义Views位图?

问题描述 投票:0回答:1

我正在扩展View,在其中显示位图,并根据需要进行修改。

我希望并且最有可能需要将该位图保留为原始大小,以防变量/对象被放大,以免丢失质量。

当我使用很多这些自定义视图时,似乎会产生OutOfMemory错误。

现在,我想知道在这种情况下如何使用位图?ImageView如何毫无问题地处理它?他们如何做到这一点?动态调整视图大小后,它们如何保持质量?

有人对此主题有任何建议吗?

谢谢。

android bitmap out-of-memory custom-view
1个回答
1
投票

为了解决您的问题,您只应将当前存储在视图中的位图存储在内存中。

此外,您还应该存储缩小版本的位图以节省内存。BitmapFactory类对此具有特殊的机制。使用BitmapFactory类的inJustDecodeBounds属性可以加载图像的宽度和高度,而无需为图像本身分配内存。然后计算inJustDecodeBounds属性的值,并使用此属性加载按比例缩小的位图。阅读BitmapFactory.Options以获得更详细的说明。

这些问题(以及其他与显示图像有关的问题)已在第三方库中解决:inSampleSizeinSampleSize等。这些库被广泛使用,因此您也可以使用它们。同样,例如,Glide支持扩展以修改图像。

如果要具有缩放功能的图像视图,最好使用this article。它包括缩放,平移,旋转和动画支持,并易于扩展。该视图甚至可以选择使用子采样和图块来支持非常大的图像。

© www.soinside.com 2019 - 2024. All rights reserved.