1,减少布局的嵌套使用。删除无用的控件可层级。
有选择的使用ViewGroup,比如RelativeLayout,在布局中如果可以使用LinearLayout则尽量选择LineaLayout布局,如果可以使用FrameLayout则尽量使用FrameLayout则尽量使用帧布局,帧布局是五大布局中布局速度最快的布局,他不需要计算控件的大小,只需要将控件一层一层的盖在一层上面即可。减少布局的嵌套层级。可以一层布局完成效果时,尽量使用一层布局嵌套完成效果。
2,当有布局复用时,抽取出来吗,使用<include>标签指定复用的布局,<merge>标签,和ViewStub标签
① include:
include中layout属性指定一个外部布局文件,通过该方式则不需要把这个布局文件在该代码中重复的写一遍了。
若include指定了其他的android:layout_*的这种属性,则layou_width和Layout_height必须存在。否则其他的无法生效
② merge标签:
多和<include>标签一起使用,减少布局的层级:如果当前布局是一个竖直方向的LinearLayout,这个时候如过被包含的布局文件中也采用了LinearLayout也采用了垂直布局,则我们可以使用Merge标签,减少布局的嵌套层级
③ ViewStub:
继承自View,他非常轻量级 宽高都为0,因此他的本身不参与任何的布局和绘制过程。
它的意义在于按照需要加载所需的布局文件,在实际开发中,有很多的布局文件在正常的情况下不需要显示,当需要其显示的时候才会显示。比如网络加载动画的布局,这个时候没有必要在整个界面初始化的时候将其加载进来,通过ViewStub就可以做到在使用的时候再加载。提高了程序性能。
<ViewStub android:id="@+id/stub_import" android:inflatedId="@+id/panel_import" android:layout="@layout/layout_network_error" android:layout_width="match_parent" android:layout_height="wrap_content" android:layout_gavity="bottom" />
按需加载代码: ((ViewStub)findViewById(R.id.stub_import)).setVisibility(View.VISIBLE); 或者: View importPanel = ((ViewStub)findViewById(R.id.stub_import)).inflate();
时间: 2024-10-05 19:31:10