首先说说setContentView()中发生了什么。

1.Android读取应用的资源数据(APK文件内,存储在内部存储器或SD卡中);

2.解析资源数据,展开布局;

3.布局展开成为Activity的顶层视图;

随着部件数量的增长,展开布局所花费的时间几乎呈线性增长。布局通常在Activity的onCreate()方法中展开,
它花费的时间直接影响Activity。

1.用RelativeLayout替代LinearLayout
 创建相同的视图,相对布局往往创建更少的对象,显而易见,显示十个以上控件的最好使用相对布局。

2.合并布局
用<merge />标签合并布局来减少布局层次,往往布局的顶层元素是一个FrameLayout。

3.重用布局
<include />标签可用于两个目的:
1.多次使用相同的布局;
2.布局有一个通用的组成部分,或者有部分依赖于设备配置(如横屏,竖屏)
如下代码显示如何只包含一次布局:
//这里假设有两个版本的mylayout.xml,一个在res/layout-land目录,一个在res/layout-port;
<LinearLayout xmls:android="http://schemas.android.com/apk/res/android"
    android:layout_width = "fill_parent"
    android:layout_height = "fill_parent"
    android:orientation = "vertical" >
    <include android:id="@+id/myid"  android:layout="@layout/mylayout"
    android:layout_margin="8dip"/>
</LinearLayout>

覆盖布局的参数是可选的,只有 android:layout属性在<include />标签中是必须的;
可覆盖属性:1.根视图的id(android:id); 2.布局参数(android:layout_*);

4.ViewStub
ViewStub是轻量级且不可见的视图,Android用它推迟初始化不仅可以推迟实例化,提高性能,还可能会节省内存。
<LinearLayout xmls:android="http://schemas.android.com/apk/res/android"
    android:layout_width="fill_parent"
    android:layout_height = "fill_parent"
    android:orientation = "vertical" >
    <ViewStub
        android:id="@id/mystubid"
        android:inflated="@+id/myid"
        android:layout="@layout/mylayout" />
</LinearLayout>
要展开mylayout.xml中的布局,有两种方法:
1.在代码中展开布局
    ViewStub stub = (ViewStub) findViewById(R.id.mystubid);
    View inflatedView = stub.inflate();
2.在代码中用setVisibility()在代码中展开
    View view = findViewById(R.id.mystubid);
    view.setVisibility(View.VISIBLE);
    view = findViewById(R.id.myid);

5.布局工具
Android SDK提供两个工具: hierarchyviewer 和 layoutopt。

Android修炼之道—布局优化( 100 喵喵币)相关推荐

  1. C语言嵌入式系统编程修炼之道——性能优化篇

    C语言嵌入式系统编程修炼之道--性能优化篇 作者:宋宝华  e-mail:[email]21cnbao@21cn.com[/email] 1.使用宏定义 在C语言中,宏是产生内嵌代码的唯一方法.对于嵌 ...

  2. Android修炼之道—Talker聊天小工具

    这两天,参照陌陌的聊天界面,帮同学毕业设计做了一个聊天的小项目--Talker. 主要结合了JPush完成消息的推送. 单纯的聊天功能,写起来并不轻松,陌陌里面有大量的自定义控件,而且整个文件代码的架 ...

  3. Android修炼之道——GoogleGlass开发指南

    Google Glass 开发指南 https://developers.google.com/glass/ 时间轴(Timeline) 你的用户的时间轴被分为时间表项目.您可以使用API​​接入和管 ...

  4. Android 布局优化

    在开发过程中我们经常说性能优化,但性能优化是一个比较宽泛的概念.在Android开发中性能优化可能包括:Java代码优化, 算法优化, SQLite优化, 布局优化等.那么这篇博客就来总结并分享下An ...

  5. Android布局加载慢,Android布局优化(四)X2C — 提升布局加载速度200%

    系列文章 前言 在Android布局优化(一)从布局加载原理说起中我们说到了布局加载的两大性能瓶颈,通过IO操作将XML加载到内存中并进行解析和通过反射创建View.这里介绍一种避免运行时通过IO操作 ...

  6. 顺风车Android性能优化之View布局优化

    一.问题背景 在开发过程中,往往会听到 "性能优化" 这个概念,这个概念很大,比如网络性能优化.耗电量优化等等,对 RD 而言,最容易做的或者是影响最大的,应该是 View 的性能 ...

  7. 深入探索Android布局优化(上)

    前言 成为一名优秀的Android开发,需要一份完备的知识体系,在这里,让我们一起成长为自己所想的那样~. Android的绘制优化其实可以分为两个部分,即布局(UI)优化和卡顿优化,而布局优化的核心 ...

  8. Android:最全面详细的性能优化攻略(含内存优化、内存泄漏、绘制优化、布局优化、图片优化、APK优化、多线程优化、列表优化等)

    前言:佛教中有一句话:初学者的心态,拥有初学者心态是件了不起的事情.真正的大师永远怀有一颗学徒的心. 一.概述 在Android中,性能优化是细分领域中最难且也是知识面涉及最深和最广的方向之一. 更快 ...

  9. android源代码居中字体,Android (布局优化) TextView实现drawable图标大小 位置与第一行文本居中...

    先看大众点评的购买须知 大众.png 如上图,需求在每条提示语句前加一个小圆点,我刚看到需求就想到用 android:drawableLeft 来做,可做完发现:当TextView内容为单行的时候是没 ...

  10. android布局优化方案,Android启动优化-布局优化

    Android启动优化-布局优化 安卓应用开发发展到今天,已经成为一个非常成熟的技术方向,从目前的情况看,安卓开发还是一个热火朝天的发展,但高级人才却相对较少,如今移动互联网的开发者也逐渐开始注重插入 ...

最新文章

  1. Android 属性动画(Property Animation) ValueAnimator 的介绍
  2. 使用DBNEWID Utility 修改oracle数据库的 db name 和 dbid
  3. MySQL性能优化的21个最佳实践
  4. 天津盈克斯机器人科技_网红新科技,走进家居新时代|环渤海爱乐屋门窗amp;威卢克斯天窗双旦狂欢节送您一个温暖的家!...
  5. C# 8.0 抢先看-- Async Stream
  6. 浏览器插件-- Browser Helper Object(BHO) 一
  7. python条形图颜色设置_python – 根据值在matplotlib中更改3D条形图中的条形颜色
  8. 第一次使用最新开发的在线编辑器讲课记录笔记
  9. 信息安全工程师笔记-案例分析(三)
  10. 本地修改服务器上的内容,本地修改指向服务器
  11. 记录为小电机安装一个5012编码器(多摩川协议)的过程
  12. bzoj4173:数学
  13. 基于微信小程序的投票系统——计算机毕业设计
  14. 分布式计算、并行计算、网格计算
  15. 数字系统设计, 8个经典计数器电路方案合辑
  16. 使用阿里云云服务器一年多的感受
  17. transact sql
  18. linux的swap与memory,【Linux】Linux中Swap与Memory内存简单介绍
  19. 把int转换为char把int转换为char
  20. Swift学习笔记(5):集合类型

热门文章

  1. SMART200 DP01模块通讯问题
  2. Unity 粒子特效(Particle System)大小自适应和层级的一些问题
  3. 根据银行卡号获取银行名称、编码、类型
  4. Java案例2-1 商品入库
  5. 阿里菜鸟JAVA实习生一面面试题
  6. iconfont字体图标下载及使用方法
  7. ztree树默认根据ID默认选中该条数据
  8. BZOJ1001狼抓兔子(网络流最小割)
  9. 爬虫免费Charles使用教程
  10. c#入门经典第6版pdf百度云盘_C#入门经典第6版中文pdf_NET教程