Android性能优化系列—布局优化

最近在看性能Android优化方面的书,总结一下,以及记录自己的理解。

1、include
当应用重复使用同一个布局时,如果按正常布局写法,会导致很多重复内容,修改时也会全部修改,可能导致错误。这样就可以使用include标签来公用同一个布局。最常用的就是我们的app标题栏。

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"  
    android:orientation="vertical"   
    android:layout_width=”match_parent”  
    android:layout_height=”match_parent”  
    android:background="@color/app_bg"  
    android:gravity="center_horizontal">  

    <include layout="@layout/title"/>  

    <TextView android:layout_width=”match_parent”  
              android:layout_height="wrap_content"  
              android:text="@string/hello"  
              android:padding="10dp" />  

</LinearLayout> 

这里我们调用了一个名为title的布局,而这个布局可以重复使用。

2、merge
这个标签我们使用比较少,当子布局和父布局是同一种布局的时候,可以使用merge标签代替子布局,从而减少布局多余的层级。
merge多用于替换FrameLayout或者当一个布局包含另一个时,merge标签消除视图层次结构中多余的视图组。例如你的主布局文件是垂直布局,引入了一个垂直布局的include,这是如果include布局使用的LinearLayout就没意义了,使用的话反而减慢你的UI表现。这时可以使用merge标签优化。

3、ViewStub
ViewStub是一个不可见的、能在运行期间延迟加载目标视图的、宽高都为0的View。
好像有点绕- -,举个栗子:
当你的应用需要加载一个九宫格图片的GridView时,图片需要在网络上获取,你不确定是否有图片,这时你可以使用ViewStub先占个“坑”,当图片获取时,再将ViewStub填上(加载GridView)。

<ViewStub  
    android:id="@+id/stub_import"  
    android:inflatedId="@+id/panel_import"  
    android:layout="@layout/layout_Nine_imageView"  
    android:layout_width="fill_parent"  
    android:layout_height="wrap_content"  
    android:layout_gravity="bottom" />  

如上诉代码所示,你需要写一个名为layout_Nine_imageView的XML文件,用法和include类似。只是在JAVA代码中你需要调用ViewStub的inflate()或者setvisibility()后才会加载layout_Nine_imageView布局。

*总的来说,Android UI布局中,需遵守一下几点:
1.尽量多使用RelativeLayout,不使用绝对布局。
2.在ListView等列表组件中避免使用LinearLayout的LayoutWeight属性。
3.将可以复用的组件抽出来使用include。
4.尽量使用merge、ViewStub。*

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值