(图文)android UI 优化系之windowBackground 二

从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 
posted @ 2011-10-27 13:59  囧里个囧  阅读(1048)  评论(0)    收藏  举报