Android:在ImageView中使用大图像时性能下降

Die*_*ssa 7 performance android image relativelayout imageview

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

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

当我点击任何按钮时,我会RelativeLayout在背景的顶部显示.

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

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

我使用的是2048 x 1536PNG图像,它的重量约为500k.当我使用像1024 x 768这样的较小图像时,应用程序工作正常,但它看起来很糟糕.

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

Bar*_*end 10

那个位图很大.你提到的500k是压缩大小.使用它们时,图像在内存中未压缩.你实际上看的是2048×1536×4 = 12582912 =超过12MB的内存使用量.

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

加载时,您将不得不缩放该图像.用于BitmapFactory.Options在加载图像之前设置所需的大小.

此外,您将文本直接放在它上面.文本渲染需要Alpha透明度,这需要对底层图像进行采样.如果您可以将文本放在不透明的背景上并将其置于顶部,那么您也将节省一些GPU负载,但我实际上并不确定能够获得多少性能.这可能不是什么大不了的事.