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;

}




版权声明:本文为博主原创文章,未经博主允许不得转载。

相关文章推荐

Objective-C-UI控件学习之layout机制相关方法

ios layout机制相关方法- (CGSize)sizeThatFits:(CGSize)size - (void)sizeToFit——————-- (void)layoutSubviews -...

Android Layout Performance

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

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

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

OpenStack performance相关分析

我们讨论OpenStack 主要还是要讨论虚拟化ho

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

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

Android性能优化系列——Performance Tips

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

Unity3D翻译——Performance Tips when Writing Shaders

Performance Tips when Writing Shaders      编写着色器时的性能提示 Use Common sense ;) 使用常识 原文地址:http://un...

Performance Tips —— Android 官方文档翻译<二>

这篇文章主要包括一些提升app整体性能的优化建议,不过这些优化都是很小的,可能不会带来巨大的性能提升。首先我们要选择正确的算法和数据结构,但这不是本篇文章讨论的范围。你应该把下面我们要提的一些通用的代...

hdu5023——A Corrupt Mayor's Performance Art

A Corrupt Mayor's Performance Art Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 100000/10...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:深度学习:神经网络中的前向传播和反向传播算法推导
举报原因:
原因补充:

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