View优化(二)

接着上面的View优化的建议与方式
2.2.推荐使用标签或控件:
2.2.1.使用<include/>标签:

  1. 使用 <include/> 标签加载布局,<include/> 标签可以重复利用布局,来减少代码量,使布局代码整洁易读。如写一个titlebar的布局,然后在需要它的布局中用该标签引入;
  2. 布局文件较大时可将布局文件按一定结构分解开来,用<include/> 引入。
    2.2.2.使用<merge />标签
    使用<merge />可减少布局元素,优化布局层级。如果布局的根节点没有提供背景,留白之类的属性,可使用<merge />替换。<merge />标签极其有用。然而它也有以下两个限制:
    1)<merge />只能作为XML布局的根标签使用
    2)当Inflate以<merge />开头的布局文件时,必须指定一个父ViewGroup,并且必须设定attachToRoot为true,可参看Android系统源码inflate(int, android.view.ViewGroup, Boolean)方法。
    View优化_使用Merge。查看使用前后布局变化:
使用merge时.png
未使用merge时.png

2.2.3.使用ViewStub控件
使用懒加载布局ViewStub,在需要时再对View进行inflate操作, 减少内存的占用;

2.3.好的布局与差的布局对比:

  1. 好的布局:
  1. 精简的布局,尽可能少的View对象,Hierarchyviewer工具查看时无繁杂冗余的View对象
  2. GPU绘制次数尽可能的少, 显示GPU过度绘制时界面中蓝色和绿色区域偏多
  1. 差的布局:
  1. 定义的View过多,占用较多内存空间,Hierarchyviewer工具查看时有繁杂冗余的View对象
  2. GPU绘制次数过多,造成系统资源浪费,显示GPU过度绘制时界面中一片红

3,开发过程中的优化方案
1.常用控件封装好成类文件或布局文件,方便复用.

  1. Style的name命名中要包含颜色值、字体大小、线的宽度等不易查看记忆的信息,以方便查找复用, 如 <style name="text_666666_15sp">
  2. 字符串写在strings.xml中, 尽量不要写在代码及布局文件中;
  3. Colors.xml中定义的颜色值要在其name中体现,方便查找复用, 如
    <color name="color_88ffffff">#88ffffff</color>
  4. 常用Dip值也可统一定义到dimens.xml中;
  5. 自定义的一些drawable等控件中注释中写明控件特征,如button用的selecter中的颜色值,边框宽度是否圆角等信息;
    <?xml version="1.0" encoding="UTF-8"?>

    <layer-list xmlns:android="http://schemas.android.com/apk/res/android" >
    ......
  6. View隐藏时看需求是使用gone还是invisible, 优先使用gone。
    INVISIBLE和GONE的主要区别是:
    为INVISIBLE时,界面上控件不显示, 但保留了view控件所占有的空间;
    为GONE时,界面上控件不显示, 且不保留view控件所占有的空间;
    8.布局文件命名时遵循前缀表明类型的习惯,形如type_foo_bar.xml。例如: fragment_contact_details.xml,
    view_primary_button.xml,
    activity_main.xml.
    4,优化原则
    多从系统源码原理角度考虑,优化布局及view相关代码,提高系统性能。
    时间换空间: 内存不足,不能直接获取全部的数据,只能多花时间,一段一段的获取数据并显示;
    时间换时间: 开机优化, 开机的服务要启动,应用程序要启动加载;
    空间换空间: 大数据的交换和存储;
    空间换时间: 手机内存缓存,SD卡缓存。
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 203,098评论 5 476
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 85,213评论 2 380
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 149,960评论 0 336
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 54,519评论 1 273
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 63,512评论 5 364
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 48,533评论 1 281
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 37,914评论 3 395
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,574评论 0 256
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 40,804评论 1 296
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,563评论 2 319
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,644评论 1 329
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,350评论 4 318
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 38,933评论 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 29,908评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,146评论 1 259
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 42,847评论 2 349
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,361评论 2 342

推荐阅读更多精彩内容

  • Android 自定义View的各种姿势1 Activity的显示之ViewRootImpl详解 Activity...
    passiontim阅读 171,382评论 25 707
  • 太长不看版:在 Android UI 布局过程中,遵守一些惯用、有效的布局原则,可以制作出高效且复用性高的 UI。...
    Mupceet阅读 3,804评论 0 14
  • 它蜷伏着 很久以前就爬那儿了 和半截朽椽头 和翻修的建筑群一起 屏息凝神。 它有时会看到老妇人 裹着黑色衣服褐色头...
    巩金盆阅读 700评论 2 4
  • 第一象限是“重要又紧急的事情”;第二象限是“重要但不紧急的事情”;第三象限是“不重要但紧急的事情”;第四象限是“不...
    回忆里的仲夏夜阅读 8,458评论 0 1