(一)检查和优化 Layout 层次
程序的每个组件和 Layout 都需要经过初始化、布局和绘制,如果布局嵌套层次过深,就会导致加载操作更为耗时,更严重的话还可能导致内存溢出。使用自带的HierarchyViewer工 能够从可视化的角度直观地获得布局设计结构,帮助优化布局设计。
(二)使用<include> 标签
当你需要重用到一些比较复杂的组件,如一个 Toolbar 时,你可以使用 <include>标签来把其他 Layout 嵌入到当前 Layout。
(三)使用<merge> 标签
<merge> 标签
<merge> 标签在你嵌套 Layout 时取消了 UI 层次中冗余的 ViewGroup,如<include>重用布局中,外层 ViewGroup 是一个 LinearLayout。但如果当我们重用该布局时,是插入到另一个 LinearLayout 中的话,就会导致 Layout 冗余,即其实只需要一个便足够了。
这时,<merge> 标签就派上用场了,你可以这样编写布局:
<merge xmlns:android="http://schemas.android.com/apk/res/android">
<Button android:layout_width="fill_parent" android:layout_height="wrap_content" android:text="@string/add"/>
<Button android:layout_width="fill_parent" android:layout_height="wrap_content" android:text="@string/delete"/>
</merge>
通过该标签,可减少层次避免嵌套过深的情况发生。
(四)ViewStub
ViewStub 是一个轻量视图,不需要大小信息,也不会在被加入的 Layout 中绘制任何东西,当你引入只在特殊情况才显示的布局,如进度条,出错信息,提示信息等布局时,就可以使用 ViewStub。
<ViewStub
android:id="@+id/stub_import"
android:inflatedId="@+id/panel_import"
android:layout="@layout/progress_overlay"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:layout_gravity="bottom" />
其中 Android:id 指 ViewStub 的 id,仅在 ViewStub 可见之前使用。
inflatedId 是引入布局的 id。
加载 ViewStub
载入用 ViewStub 声明的布局有两种方式:
((ViewStub) findViewById(R.id.stub_import)).setVisibility(View.VISIBLE);
// or
View importPanel = ((ViewStub) findViewById(R.id.stub_import)).inflate();
(五)使用工具对代码进行 Lint 检查
Android Studio 可在菜单项 Analyze - Inspect Code,选择范围后对代码进行 Lint 检查,从检查结果中可以得到代码中不规范的编码,以便开发者进行修正。
本文博客地址:
http://blog.csdn.net/e_Inch_Photo/article/details/60601251