Performance——layout相关

原创 2013年12月05日 21:53:53

1,layout层级不要嵌套太深,嵌套层级深了加上使用layout_weight会显著降低performance,主要是影响measure时间

2,复用layout可以使用

<include layout="@layout/xxxx"

                 layout_width="match_parent"

                 layout_height="wrap_content" />

<include>中的属性可以重写xxx.xml中root元素的属性。

3,上面xxx.xml的root元素最好是<merge>,这样会减少layout的层级

4,只在必须要显示UI时才显示UI,可以使用<ViewStub>,它最初是不会被measure和render的。

<ViewStub
    android:id="@+id/stub_import"
    android:inflatedId="@+id/panel_import"
    android:layout="@layout/progress_overlay"   //最终会用这个layout代替这个ViewStub
    android:layout_width="fill_parent"
    android:layout_height="wrap_content"
    android:layout_gravity="bottom" />

可以通过setVisibility或者inflate方法让@layout/progress_overlay替代这个ViewStub

((ViewStub) findViewById(R.id.stub_import)).setVisibility(View.VISIBLE);
// or
View importPanel = ((ViewStub) findViewById(R.id.stub_import)).inflate();

@layout/progress_overlay显示出来之后ViewStub就不复存在了,@layout/progress_overlay的root id变成android:inflatedId

5,对于LsitView或者GridView,会不停的call他们adapter的getView方法,而这个方法里面会findViewById,这样效率很低,可以使用ViewHolder来解决这个问题。

这样就不用每次都findViewById了

static class ViewHolder {

TextView text;

ImageView icon;

}

 

public View getView(int position, View convertView, ViewGroup parent) {

 ViewHolder holder; 

 if (convertView == null) {

     convertView = mInflater.inflate(R.layout.list_item_icon_text, parent, false);

     holder = new ViewHolder();

     holder.text = (TextView) convertView.findViewById(R.id.text); //只在第一次创建View的时候findViewById

     holder.icon = (ImageView) convertView.findViewById(R.id.icon);

     convertView.setTag(holder);

} else {

    holder = (ViewHolder) convertView.getTag();

}

holder.text.setText(DATA[position]);

holder.icon.setImageBitmap((position & 1) == 1 ? mIcon1 : mIcon2);

return convertView;

}




【Android Training - Performance】提高显示布局文件的性能[Lesson 2 - 使用include标签重用Layout]

Re-using Layouts with 尽管Android提供了很多种小的组件可以重用,我们还需要自定义一些稍微复杂一点的小组件进行重用。我们可以使用 and 标签来对当前的layout嵌入一...

Android Layout Performance

Include Include 在积累一些可以复用的layout小模块时是很有用的,比如随着开发的进行,会有一些layout被重复的用到,典型的比如footer,很多需要用户最终选择ok和cance...

OpenStack performance相关分析

我们讨论OpenStack 主要还是要讨论虚拟化ho
  • juvxiao
  • juvxiao
  • 2014年05月02日 15:56
  • 2559

《Systems Performance: Enterprise and the Cloud》读书笔记系列(八) —— 第二章(七)

1. Tools Method: A tools-oriented method is as follows: 1) List available performance tools (option...

Android性能优化系列——Performance Tips

本文列出的优化技巧主要是一些微小的性能提升,可能不会给你的程序性能改善产生显著的效果。因为程序的整体性能仍然主要取决于程序的业务逻辑设计、代码的...
  • xhmj12
  • xhmj12
  • 2016年02月21日 10:16
  • 372

《Java Performance》笔记2——JVM命令行选项及垃圾收集日志解析

1.JVM命令行选项: HotSpot VM运行时系统解析命令行选项,并据此配置HotSpot VM, HotSpot的命令行选项主要有3类: A. 标准选项: JVM规范要求所有的JVM都必...

performance——省电

有很多操作,例如周期性的和服务器Sync(Email,Cloud Service),周期性的更新下载进度,等等是比较耗电的。因此可以根据电量,是否充电,Dock状态,网络连接状态这些条件来调整更新频率...

4.2 CMMI4级——组织过程性能(Organizational Process Performance)

OPP是对组织级提出要求的,组织要根据公司的商业目标、企业的实际情况,选择要进行性能分析、量化管理的子过程,制定组织的质量和过程方面的量化的目标,建立基线和模型。这些量化的目标、基线、模型,要用于进行...

Unity3D翻译——Performance Tips when Writing Shaders

Performance Tips when Writing Shaders      编写着色器时的性能提示 Use Common sense ;) 使用常识 原文地址:http://un...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:Performance——layout相关
举报原因:
原因补充:

(最多只允许输入30个字)