Android:在 ImageView 中使用大图像会降低性能

2023-11-21

我有一个Activity我在 ImageView 中有一个背景图像,图像顶部有九个透明按钮。

https://i.stack.imgur.com/GGQqd.png

当我点击任何按钮时,我会做出一个RelativeLayout出现在背景的顶部。

https://i.stack.imgur.com/JvKQK.jpg

问题是:当我在布局中使用大分辨率图像作为背景时,性能非常差。

我正在使用一个PNG的图像2048×1536,其重量约为500k。 当我使用较小的图像时,例如1024×768该应用程序运行良好,但看起来很糟糕。

是否有使用大图像而不损失性能的限制或方法?


该位图是huge。你说的500k是压缩后的大小。当您使用图像时,图像在内存中未压缩。您实际上看到的是 2048×1536×4 = 12582912 = 超过 12MB 的内存使用量。

如果您使用的是 Nexus 9 这样具有该屏幕分辨率的设备,那么您可以合理地假设它也具有处理该尺寸图像的内存、GPU 和总线带宽。但是,如果您使用的是分辨率较低的设备(大多数设备都是如此,请记住,即使全高清也只有 65%),那么此图像会严重浪费内存。现在您可以购买配备 240x320 屏幕的低端设备,其中全屏位图仅为图像大小的 2.5%。

加载图像时,您必须缩放该图像。使用BitmapFactory.Options在加载图像之前设置所需的尺寸。

此外,您将文本直接放在其顶部。文本渲染需要 Alpha 透明度,这需要对底层图像进行采样。如果您可以将文本放在不透明的背景上并将其放在顶部,您也会节省一些 GPU 负载,但我实际上不确定这会给您带来多少性能。这可能没什么大不了的。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Android:在 ImageView 中使用大图像会降低性能 的相关文章

随机推荐