文档章节

Android UI加速

LiangX
 LiangX
发布于 2012/02/19 17:04
字数 383
阅读 690
收藏 6
    当你的Android应用的Activity需要采用Custom drawable的背景时,采用自定义的Theme可以节省UI的加载显示速度。

    解释原因之前,需要澄清一个概念:

    window background。许多人认为这个背景应该是调用setContentView时的布局的背景,实际上,当你调用了这个方法之后,Android会把你的View添加到相应Activity的window,而这个window不仅仅包含你的View,还包含了一大堆其他的东西,如图1.1

                                      

图1.1

     看被蓝色高亮的那个View,是一个叫做DecorView的东东,它是实际持有window's background drawable的家伙!在当前的Activity调用getWindow().setBackgroundDrawable()方法是修改DecorView的Drawable。

    如果你使用的是Android的默认主题,一个默认的背景drawable会被设置到你的Activity上(DecorView的background drawable)。大多数情况下,这不会有什么性能的影响,但是如果你打算为你的Activity设置一个不透明的全屏图片作为背景图片,这时默认的背景Drawable就是多余的,在渲染时会有一定的性能影响。

    通过自定义Theme,设置android:windowBackground属性为你自己的Drawable资源,可以替换掉默认的window background drawable。即简单,又解决了性能问题。

 例子(From Shelves)
 背景Drawable资源
<bitmap xmlns:android="http://schemas.android.com/apk/res/android"
    android:src="@drawable/shelf_panel"
    android:tileMode="repeat" />
 自定义的Theme
<resources>
    <style name="Theme.Shelves" parent="android:Theme">
        <item name="android:windowBackground">@drawable/background_shelf</item>
        <item name="android:windowNoTitle">true</item>
    </style>
</resources>


© 著作权归作者所有

共有 人打赏支持
LiangX
粉丝 22
博文 33
码字总数 12468
作品 0
朝阳
程序员
私信 提问
Android HWUI硬件加速模块浅析

原址 什么是硬件加速(What) 传统软件的UI绘制是依靠CPU来完成的,硬件加速就是将绘制任务交由GPU来执行。Android系统负责硬件加速的模块主要是HWUI,如下图所示: 为什么要硬件加速(Why)...

u010164190
2018/04/27
0
0
【安卓深度控件开发(1.4)】Creating Custom Views (官方示例文档汉化版)(4)

视图的优化 您现在有一个精心设计的视图,响应手势和平滑过渡,现在需要确保视图流畅。为了避免一个 UI 在播放过程中感觉缓慢或断断续续,您必须确保您的动画始终运行在每秒 60 帧。 少量的频...

夜狼
2013/03/25
0
0
Android Crash问题

-- TimeoutException: com.android.org.conscrypt.OpenSSLDigestContext.finalize() timed out after 120 seconds- https://github.com/google/conscrypt/issues/546 https://github.com/goo......

desaco
03/03
0
0
Android 4.0通过新的特性统一了平板电脑与手机

Android 4.0可以运行在平板电脑与手机上,并且提供了一些针对UI、通信、共享、媒体、连接、输入类型与企业的新特性。 Google于2011年2月发布了Android 3.0(Honeycomb),但该版本只面向平板...

墙头草
2012/02/07
2.3K
4
Opera Mobile for Android 将在短期内发布

全球著名浏览器Opera在全球记者会上表示将在一个月之内发布Android版的Opera Mobile手机浏览器。根据ALEKSANDER AAS在Choose Opera上的描述,Opera Mobile for Android将支持所有版本的Andro...

红薯
2010/10/15
771
0

没有更多内容

加载失败,请刷新页面

加载更多

Redis之父表示ARM服务器没戏!

ARM表示Neoverse N1平台和E1 CPU即将发布,Neoverse N1和E1采用7nm制程,并且为服务器和通信设备增加重要提升,拥有高可扩展性、高处理量以及高性能,将分别在2020年和2021年投入使用。 与C...

linuxCool
28分钟前
5
0
YARN 内存参数终极详解

YARN环境中应用程序JAR包冲突问题的分析及解决 Hadoop框架自身集成了很多第三方的JAR包库。Hadoop框架自身启动或者在运行用户的MapReduce等应用程序时,会优先查找Hadoop预置的JAR包。这样的...

stys35
34分钟前
1
0
Mybatis常用总结一

这一节的学习强烈建议实际操作 主键自增和自定义主键 实现描述:我们在写程序时,时常会遇到这样的问题:插入一条数据,但因有主键的存在,而有时候会报“违反唯一性约束”的错误,我们可以使...

大笨象会跳舞吧
34分钟前
1
0
计数二进制子串

leetcode:https://leetcode.com/problems/count-binary-substrings/ 给定一个字符串 s,计算具有相同数量0和1的非空(连续)子字符串的数量,并且这些子字符串中的所有0和所有1都是组合在一起...

woshixin
37分钟前
1
0
mysql utf8mb4字符集,存储emoji表情

字符集utf8mb4 utf8mb4兼容utf8,且比utf8能表示更多的字符。 看unicode编码区 从1 ~ 126就属于传统utf8区,当然utf8mb4也兼容这个区,126行以下就是utf8mb4扩充区,什么时候你需要存储那些...

我心中有猛狗
40分钟前
2
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部