ImageView性能 - 当它前面的某些东西发生变化时,它应该重绘吗?

时间:2011-03-31 20:01:26

标签: android imageview

我有一个活动,它使用FrameLayout在屏幕上绘制两个图层。第一个是后面的,是一个显示位图的ImageView - 使用match_parent缩放到全屏大小。第二个,在前面,是一个用animation-list实现的小型drawable - 基本上是一组PNG帧,组成一个动画图标(大约10帧,每个android持续时间= 100毫秒)。动画中的PNG图像使用透明度,因此您可以在其后面看到背景ImageView,并且相对于ImageView整个事物都很小 - 它实际上是图像顶部的图标。

我注意到这个简单的应用程序似乎使用了相当多的CPU能力。为了帮助跟踪它,我扩展了ImageView以覆盖背景图像的onDraw,并发现每次前景动画更新时都会调用onDraw例程。这是预期的行为吗?我希望ImageView内容应该被缓存到某个地方,这样如果没有任何变化就不必重绘它的位图。

有没有更好的方法来获得此功能?

1 个答案:

答案 0 :(得分:3)

您所看到的是预期的。要重绘您正在制作动画的PNG,必须清除帧缓冲区,这意味着必须重绘背景ImageView。缓存无论如何都无济于事。