提高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,例如以下图所看到的:

在默认情况下。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性能技巧的更多相关文章

  1. 关于React Native项目在android上UI性能调试实践

    我们尽最大的努力来争取使UI组件的性能如丝般顺滑,但有的时候这根本不可能做到.要知道,Android有超过一万种不同型号的手机,而在框架底层进行软件渲染的时候是统一处理的,这意味着你没办法像iOS那样 ...

  2. 你必须知道的10个提高Canvas性能技巧

    你还在抱怨自己写的canvas demo徘徊在10帧以下吗?你还在烦恼打开自己写的应用就听见CUP风扇转吗?你正在写一个javascript Canvas库吗?那么下面九点就是你必须知道的! 一.预渲 ...

  3. Android UI性能优化详解

    设计师,开发人员,需求研究和测试都会影响到一个app最后的UI展示,所有人都很乐于去建议app应该怎么去展示UI.UI也是app和用户打交道的部分,直接对用户形成品牌意识,需要仔细的设计.无论你的ap ...

  4. 开发Android应用 提升性能的小技巧

    前 言 2015年,Android OS 目前在手机操作系统的市场占有率已达59%,权威机构预计,Android市场占有率在2016年将达到63%,由于Android的开放性,未来占有率还将不断增加, ...

  5. 提高UI设计效率的4个技巧

    提高UI设计效率的4个技巧 如何提高UI设计的速度?在这里分享一些我观察到的常见问题和改善方式.当然,需要注意的地方何其多. 身为设计师的你,应该要了解工程实作的基本原理: 业界 NG 率:接近 10 ...

  6. Android异常与性能优化相关面试问题-ui卡顿面试问题详解

    UI卡顿原理: “60fps(Frames Per Second每秒传输帧数) ----> 16ms” 针对上面标红的数字,下面具体说明一下:最主要的根源在于渲染性,Android会每隔16ms ...

  7. 【转】提高PHP性能的53个技巧

    PHP技巧汇总:提高PHP性能的53个技巧用单引号代替双引号来包含字符串,这样做会更快一些.因为PHP会在双引号包围的字符串中搜寻变量,单引号则不会,注意:只有echo能这么做,它是一种可以把多个字符 ...

  8. Unity UI性能优化技巧

    本文将介绍一些提升Unity UI性能的技巧.更多优化技巧,可以观看Unity工程师Ian Dundore在Unite Europe 2017的演讲<使用Unity性能提升技巧>. 1.划 ...

  9. OneAPM大讲堂 | 提高JavaScript性能的30个技巧

    文章系国内领先的 ITOM 管理平台供应商 OneAPM 编译呈现. 您是网站管理员还是网页开发人员?想创建超快速的网站吗? 今天我们来看看 JavaScript,这项神奇而又复杂的技术.它使网站内容 ...

随机推荐

  1. __FUNCTION__, __LINE__ 有助于debug的宏定义

    __FUNCTION__, __LINE__ 今天无意之间看到一段代码,里面有这样一个片段: if (!interface) { err ("%s - error, can't find d ...

  2. servletConfig和ServletContext 以及servletContextListener介绍

    <servlet>     <servlet-name>BeerParamTests</servlet-name>     <servlet-class> ...

  3. Android之弹出菜单框【注冊上下文菜单】

    注冊上下文菜单:(长按弹出一个菜单) 第一种创建方法(与长按事件结合): public class MainActivity extends Activity { private TextView u ...

  4. mysqli数据库操作简单实例

    mysqli数据库操作简单实例 代码 结果

  5. 终端安全工具 gartner 排名

    Reviews for Endpoint Detection and Response Solutions What is Endpoint Detection and Response Soluti ...

  6. 【POJ 2828】Buy Tickets

    [题目链接] http://poj.org/problem?id=2828 [算法] 离线用线段树维护序列即可 [代码] #include <algorithm> #include < ...

  7. notepad++ 插件推荐——快速定位文件

    介绍Notepad++的文章很多,我这里就不赘述了.简言之,是一个轻便的文本编辑工具.结合丰富的插件,可以实现很多功能,可以成为一个轻量级的IDE,用来做脚本开发非常合适. 这里介绍几个插件可以用来进 ...

  8. NPAPI——实现非IE浏览器的类似ActiveX的本地程序(插件)调用

    一.Netscape Plugin Interface(NPAPI) 大致的说明可以看下官方文档Plugin 本文主要针对于JavaScript与插件交互部分做一些交流,比如用于数字证书的操作(淘宝和 ...

  9. 淘宝druid报错:javax.management.InstanceNotFoundException: com.alibaba.druid:type=DruidDataSourceStat

    问题: 启动tomcat报错: Tomat报出一下异常:ERROR [com.alibaba.druid.stat.DruidDataSourceStatManager] – unregister m ...

  10. CSS3渐变知识的介绍

    渐变是CSS3当中比较丰富多彩的一个特性,通过渐变我们可以实现许多炫丽的效果,有效的减少图片的使用数量,并且具有很强的适应性和可扩展性. 可分为线性渐变.径向渐变 1    线性渐变 linear-g ...