从android UI 优化系之windowBackground 一中:
http://www.bangchui.org/read.php?tid=9 我们已经看到看windowBackground对绘制速度的影响,那么,为什么会有这样的影响呢?原因是:我们的activity中,不单单有我们创建的layout,还有系统默认给我们加上的layout,如标题栏等。我们可以使用
HierarchyViewer查看。关于
HierarchyViewer的使用,请参照:
http://www.bangchui.org/read.php?tid=8
通过工具可以看到这样的一个树状图:
其中红色部分是我们自己写的layout,其余部分是android自动添加的。虽然我们自己的layout是不透明的,并且遮盖了后面的DockView,但是android并没有对此经行优化,因为在android中只有很少的非透明的view,大多是都是透明的,所以绘制的时候还是需要绘制每一层的view的,也需要绘制DockView。而在DockView中,存放了一个mBackgroundDrawable的Drawable,它就是 前面说的windowBackground 。也就是说,每次invalidate 的时候,不单单是我们的FpsImageView需要绘制(最前面),也会绘制DockView的 mBackgroundDrawable,这样一来,就降低了FpsImageView的帧率。
所以,我们在自定义主题中,将windowBackground 置为null后,DockView的mBackgroundDrawable也就为null,所以在你不需要绘制DockView的mBackgroundDrawable,从而提高了帧率。
参考:/android-sdk-windows/docs/resources/articles/window-bg-speed.html