UI优化

来源:互联网 发布:iptv网络电视怎么用 编辑:程序博客网 时间:2024/05/18 03:53

在Android开发中,UI占着举足轻重的位置,做好它的优化是至关重要的。

1、layout布局时注意的4点:

1) 尽量不使用LinearLayout,而使用RelativeLayout,因为android:layout_alignWithParentIfMissing只对相对布局有用,如果这个视图设置为gone,这个属性将按照父视图进行调整。
2) 布局中递归太深,会严重影响性能。
3) 对于TextView和ImageView的组合,可直接使用TextView替换。
4) 如果根目录是FrameLayout,子类也是FrameLayout,且根目录没有进行背景等设置,此时,将根目录的FrameLayout换为merge,可以减少层的递归深度。

注:<merge/>限制:

1) 只能用于布局文件的根目录;
2) 使用LayoutInflater.Inflater()加载以merge为根元素的布局时,需要使用inflate(int resource,ViewGroup root,boolean attachToRoot)指定一个ViewGroup作为容器,还要设置attachToRoot为true;

2、优化bitmap

原因:直接展示原始图片,会占用更多资源,为了合理分配资源,可以对图片进行缩放。

1)实例化BitmapFactory.Options option = new BitmapFactory.Options();
2)设置option.inJustDecodeBounds = true,获取原始图片的宽高(option.outWidth和option.outHeight);
3)计算获取你需要的缩放值x;
4)设置option.inSampleSize = x;
5)获得缩放后的bitmap:bitmap = BitmapFactory.decodeFile(imageFile,option);
6)显示图片:mImageView.setImageBitmap(bitmap);

3、重用布局之<include/>静态加载布局

在很据横竖屏定制UI时,<include/>发挥了极大的作用
如:把主布局放在layout/文件下,横向布局放在layout_land/文件下,竖向布局放在layout_port/文件下,再使用<include/>可以最大程度上利用布局资源。

4、重用布局之<ViewStub/>动态加载布局

在布局中的内容比较多而且占用空间比较大时,<ViewStub/>则体现了它的重要性
当你需要用到这个引用的布局时,只要调用mViewStub.setVisibility(true)或者mViewStub.inflate(),就可以初始化这个布局。

注:但是它不支持<merge/>

5、使用android提供的优化工具

如:Layoutopt和Hierarchy Viewer。
相关介绍:http://blog.csdn.net/xyz_lmn/article/details/14222975

UI优化遵循的原则:

1)避免不必要的嵌套;
2)避免使用太多视图:一个布局中不要包含超过80个视图。
3)避免深度嵌套:10层以下嵌套是最好的实践。

0 0
原创粉丝点击