码迷,mamicode.com
首页 > 移动开发 > 详细

Android提高UI性能技巧

时间:2014-06-15 08:20:37      阅读:348      评论:0      收藏:0      [点我收藏+]

标签:android 优化ui性能

提高UI性能的方法其实有很多在实际的开发中都已经用到了,在此做一下总结。

1.减少主线程的阻塞时间

若一个操作的耗时较长(超过5秒),我们应该将其放入后台线程中执行,只在需要修改UI界面时通知主线程进行修改。Android已经提供了AsyncTask以实现从主线程生成新的异步任务的方法。

2.提高Adapter&AdapterView的效率

(1)重用已生成过的Item View

(2)添加ViewHolder , 避免重复查找需要修改的控件

public View getView(int position, View convertView, ViewGroup parent) {
    ViewHolder holder;
    if (convertView == null) {
         convertView = mInflater.inflate(R.layout.list_item_icon_text, null);
         holder = new ViewHolder();
         holder.text = (TextView) convertView.findViewById(R.id.text);
         holder.icon = (ImageView) convertView.findViewById(R.id.icon);
         convertView.setTag(holder);
    } else {
         holder = (ViewHolder) convertView.getTag();
    }
    return convertView;
}
 
static class ViewHolder {
    TextView text;
    ImageView icon;
}
3.优化布局文件,防止层级嵌套太深,最好不要多于5层

(1)使用观察布局的工具: Hierarchy Viewer

(2)使用布局优化工具:Layoutopt

4.优化Activity背景图

首先我们须知道,在Android的Activity中,不止有你使用SetContentView时使用的View,还包含了一些其他的View。
其根View是一个DecorView,你设置的View就被包含在其中,id为content,如下图所示:

bubuko.com,布布扣

在默认情况下,DecorView就包含了一个默认的背景图,我们将以此作为出发点。若我们需要在Activity中设置一个全屏的背景图,不应该添加ImageView或在Layout中再设置背景图,而应该调用setBackgroundDrawable()去修改DecorView的背景图。在不需要使用背景图时,我们应将背景图清空
(1)代码方式:

getWindow().setBackgroundDrawable()

(2)xml形式

//创建文件res/values/theme.xml
<resources>
    <style name="Theme.CustomBackground" parent="android:Theme">
        <item name="android:windowBackground">@drawable/image</item>
    </style>
</resources>

//可根据需要将windowBackground设置为null或你需要的背景图
在<activity /> 或者 <application />标签中添加android:theme="@style/Theme.CustomBackground"
5.使用ViewStub

ViewStub是一个看不见的,轻量级的View。它没有尺寸,也不会绘制以及以某种形式参与到布局中来。只有当调用了Inflate之后其中的View才会被实例化,这意味着用ViewStub保留View层次的结构的代价是很低的。

使用方式见以下链接:

http://blog.csdn.net/hitlion2008/article/details/6737537

Android提高UI性能技巧,布布扣,bubuko.com

Android提高UI性能技巧

标签:android 优化ui性能

原文地址:http://blog.csdn.net/familyhappylife/article/details/30238957

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!