2013-06-30

UI 优化

在Android中,最常用LinearLayout表示UI的布局。比起LinearLayout,在资源利用上,RelativeLayout会占用更少的资源而达到相同的效果。针对RelativeLayout有一点需要注意,因为它内部是通过多个View之间的关系而确定的布局,那么当其中某一个View因为某些需要调用GONE来完全隐藏掉后,会影响与其关联的Views,属性alignWithParentIfMissing用于解决类似问题。

简单或复杂的问题都需要时常考虑如何优化资源的分配。当我们面对Android UI优化时,有必要继续考虑资源复用。定义Android布局文件时,有4个比较特别的标签是非常重要:<viewStub/>, <requestFocus/>, <merge/>和<include/>,其中3个与资源复用有关。

1. <viewStub/> 直观效果类似于View的不可见性,但其所包裹的View在默认状态下不会占用任何内存空间。viewStub通过include从外部导入View元素。用法:通过属性android:layout来设定内容。

2. <include/> 用于直接加载xml,是复用UI资源的常用标签。用法:通过属性layout来设定加载的xml。

3. <requestFocus/> 用于设定焦点。用法:将<requestFocus/>放于View标签中。

4. <merge/> 目的:删减多余或额外的层级。

查看当前UI结构:运行android sdk/tools/hierarchyviewer.bat

如果你创建的Layout不是把FrameLayout当作根节点,就不能使用<merge/>来优化。

当使用include或viewStub从外部导入xml结构时,可以将被导入的xml用merge作为根节点,这样当被嵌入后可以很好地融合,不会出现冗余的节点。

<merge/>只可以作为xml-layout的根节点。扩充的xml-layout是merge作为根节点时,需要将被导入的xml-layout置于viewGroup中,同时需要设置attachToRoot为true。

图片优化

在Android中,BitmapFactory的使用。

在开发过程中尽可能降低对高质量图片的使用以提高运行效率。

同一张图片如何在不同大小屏幕合适地显示出来?如果图片不够满屏,就对图片进行放大,相反就进行缩小。

将多张图片集成到一张图片上。减少图片的颜色数。

优化技术之Android UI优化的更多相关文章

  1. Android优化—— Google 发布 Android 性能优化典范

    阅读目录 0)Render Performance 1)Understanding Overdraw 2)Understanding VSYNC 3)Tool:Profile GPU Renderin ...

  2. Android UI优化——include、merge 、ViewStub

    在布局优化中,Androi的官方提到了这三种布局<include />.<merge />.<ViewStub />,并介绍了这三种布局各有的优势,下面也是简单说一 ...

  3. Android UI 优化 使用<include/>和 <merge />标签

    使用<include /> 标签来重用layout代码 如果在一个项目中需要用到相同的布局设计,可以通过<include /> 标签来重用layout代码,该标签在Androi ...

  4. 关于Android UI 优化

    之前项目为了同时兼容tv和手机端的UI,使用了百分比布局来动态计算控件的宽高,这种适配方案只关心屏幕的宽高(分辨率),与屏幕的像素密度无关. 在新的项目里也使用了这种方案.但是由于项目的运行硬件计算能 ...

  5. Android UI 优化——使用HierarchyViewer工具

    先说些题外话,希望路过的各位支持,博主有幸成为2013年度博客之星的候选人,期待你的一票,谢谢. 投票猛击: http://vote.blog.csdn.net/blogstaritem/blogst ...

  6. Android 性能优化(17)UI优化:Keeping Your App Responsive 拒绝ANR

    Keeping Your App Responsive In this document What Triggers ANR? How to Avoid ANRs Reinforcing Respon ...

  7. 优化技术之Android高效开发

    基于Android平台的设备一定是嵌入式设备. 两个原则判断一个系统是否合理:不要做不必要做的事情:尽可能地节省内存的使用. 1. 尽量避免创建对象Object 2. 使用自身方法 3. 使用虚拟优于 ...

  8. Android学习笔记_52_全面了解Android开发规范:性能及UI优化

    一.Android编码规范 1.java代码中不出现中文,最多注释中可以出现中文 2.局部变量命名.静态成员变量命名 只能包含字母,单词首字母出第一个外,都为大写,其他字母都为小写 3.常量命名 只能 ...

  9. Android性能优化典范(二)

    Google前几天刚发布了Android性能优化典范第2季的课程,一共20个短视频,包括的内容大致有:电量优化,网络优化,Wear上如何做优化,使用对象池来提高效率,LRU Cache,Bitmap的 ...

随机推荐

  1. Apple Developer申请成功

    上周日白天,我去申请了Apple Developer.我先是在百度上浏览了一些经验教程,但是点进苹果开发者官网时却发现完全不是那么一回事.盖因它的页面经常在变,如同现在苹果在主推tvOS这个对中国用户 ...

  2. NFC TI TRF7970A Breakout Board for BusPirate or other HW

    http://dangerousprototypes.com/forum/viewtopic.php?f=19&t=3187 Just a news about a new Hardware ...

  3. 基于ARM的射频识别读卡器电路设计

    http://tech.yktworld.com/201010/201010032128115666.html 来源:一卡通世界      作者:江小平,李中捷,余晓峰      2010-10-3 ...

  4. 【spring cloud】子模块module -->导入一个新的spring boot项目作为spring cloud的一个子模块微服务,怎么做/或者 每次导入一个新的spring boot项目,IDEA不识别子module,启动类无法启动/右下角没有蓝色图标

    如题:导入一个新的spring boot项目作为spring cloud的一个子模块微服务,怎么做 或者说每次导入一个新的spring boot项目,IDEA不识别,启动类无法启动,怎么解决 下面分别 ...

  5. 图像处理标准图像lena的故事图The Lenna Story behind image processing

    The Lenna Story - www.lenna.org   Imaging Experts Meet Lenna in Person Yes, it's true! Lenna attende ...

  6. [转]awk使用手册

    awk 手册 简体中文版由bones7456 (bones7456@gmail.com)整理. 原文:应该是 http://phi.sinica.edu.tw/aspac/reports/94/940 ...

  7. 未能加载文件或程序集“Antlr3.Runtime”或它的一个依赖项的解决办法

    一.问题症状 未能加载文件或程序集“Antlr3.Runtime”或它的一个依赖项.参数错误.   二.问题起因和经过 今天我在虚拟机下做开发,asp.net mvc4开发测试微信接口,一不小心虚拟机 ...

  8. ChartView与LineSeries搭配实现曲线局部缩放功能

    效果图: 上一篇文章实现的时候还不知道有QtChart这个模块......好好看了下资料就想做个例子实现一下这功能,比较了下代码量...恩,直接看代码: Rectangle { id: view_re ...

  9. Power Desginer系列01【转摘】

    近期在做一个业务系统的分析和数据模型设计,工作这几年也做过好几个项目的数据库模型的设计,期间也算是积累了一定的经验吧,这次有机会就写写我的数据库模型设计过程与方法. 在 数据库设计中,设计的目标就是要 ...

  10. 为运行SQL Server的虚拟机切换装有DB Logs的最佳实践

    上一篇说到虚拟机启动不了, 原因是有一块VHDX的文件找不到了. 解决了这个问题之后, 又遇到了另一个问题, 那就是我的这台SQL Server的虚机启动之后, 我的几个重要database变成了su ...