2013-06-30
UI 优化
在Android中,最常用LinearLayout表示UI的布局。比起LinearLayout,在资源利用上,RelativeLayout会占用更少的资源而达到相同的效果。针对RelativeLayout有一点需要注意,因为它内部是通过多个View之间的关系而确定的布局,那么当其中某一个View因为某些需要调用GONE来完全隐藏掉后,会影响与其关联的Views,属性alignWithParentIfMissing用于解决类似问题。
简单或复杂的问题都需要时常考虑如何优化资源的分配。当我们面对Android UI优化时,有必要继续考虑资源复用。定义Android布局文件时,有4个比较特别的标签是非常重要:<viewStub/>, <requestFocus/>, <merge/>和<include/>,其中3个与资源复用有关。
1. <viewStub/> 直观效果类似于View的不可见性,但其所包裹的View在默认状态下不会占用任何内存空间。viewStub通过include从外部导入View元素。用法:通过属性android:layout来设定内容。
2. <include/> 用于直接加载xml,是复用UI资源的常用标签。用法:通过属性layout来设定加载的xml。
3. <requestFocus/> 用于设定焦点。用法:将<requestFocus/>放于View标签中。
4. <merge/> 目的:删减多余或额外的层级。
查看当前UI结构:运行android sdk/tools/hierarchyviewer.bat
如果你创建的Layout不是把FrameLayout当作根节点,就不能使用<merge/>来优化。
当使用include或viewStub从外部导入xml结构时,可以将被导入的xml用merge作为根节点,这样当被嵌入后可以很好地融合,不会出现冗余的节点。
<merge/>只可以作为xml-layout的根节点。扩充的xml-layout是merge作为根节点时,需要将被导入的xml-layout置于viewGroup中,同时需要设置attachToRoot为true。
图片优化
在Android中,BitmapFactory的使用。
在开发过程中尽可能降低对高质量图片的使用以提高运行效率。
同一张图片如何在不同大小屏幕合适地显示出来?如果图片不够满屏,就对图片进行放大,相反就进行缩小。
将多张图片集成到一张图片上。减少图片的颜色数。