我有一个活动,它使用FrameLayout在屏幕上绘制两个图层。第一个是后面的,是一个显示位图的ImageView - 使用match_parent
缩放到全屏大小。第二个,在前面,是一个用animation-list
实现的小型drawable - 基本上是一组PNG帧,组成一个动画图标(大约10帧,每个android持续时间= 100毫秒)。动画中的PNG图像使用透明度,因此您可以在其后面看到背景ImageView,并且相对于ImageView整个事物都很小 - 它实际上是图像顶部的图标。
我注意到这个简单的应用程序似乎使用了相当多的CPU能力。为了帮助跟踪它,我扩展了ImageView以覆盖背景图像的onDraw,并发现每次前景动画更新时都会调用onDraw例程。这是预期的行为吗?我希望ImageView内容应该被缓存到某个地方,这样如果没有任何变化就不必重绘它的位图。
有没有更好的方法来获得此功能?
答案 0 :(得分:3)
您所看到的是预期的。要重绘您正在制作动画的PNG,必须清除帧缓冲区,这意味着必须重绘背景ImageView。缓存无论如何都无济于事。