性能优化1--UI优化

1.使用系统为我们提供了几个抽象的标签
①include:重用
include中layout属性指定一个外部布局文件,通过该方式则不需要把这个布局文件在该代码中重复的写一遍了。
若include指定了其他的android:layout_*的这种属性,则layou_width和Layout_height必须存在。否则其他的无法生效

②viewstub:按需加载
viewstub标签和include标签很相似,都是使用layout属性来加载一个布局。不同之处是include标签用来重用布局,该布局会在App启动加载时被加载进内存。而viewstub标签所引用的布局是不会被加载出来的,只有当你在某个时间需要使用时才会被加载出来,从而在解析layout时节省了cpu加载时间和内存的占用。
它的意义在于按照需要加载所需的布局文件,在实际开发中,有很多的布局文件在正常的情况下不需要显示,当需要其显示的时候才会显示。比如网络加载动画的布局,这个时候没有必要在整个界面初始化的时候将其加载进来,通过ViewStub就可以做到在使用的时候再加载。提高了程序性能。
按需加载代码:
((ViewStub)findViewById(R.id.stub_import)).setVisibility(View.VISIBLE);
或者:
View importPanel = ((ViewStub)findViewById(R.id.stub_import)).inflate(); 

之前看到网上很多朋友说将View的可见性设置为gone。该View同样不会被加载到内存。其实这种说法是错误的。从Android源码可以知道,即使将View的visiablity设置为gone,View同样会被加载的内存资源当中。即只有只有ViewStub加载的layout在App启动后才不会被加载到内存资源。

③merge:减少布局层数

1
merge标签用来取消layout的层级的显示。大家都知道,Android顶级布局DecorView的根布局是让FrameLayout。此时在我们的布局中如果我们使用FrameLayout,就会造成布局节点的层级叠加重复绘制。Android为我们提供了一个叫做hierarchy viewer来查看布局节点信息。该工具在sdk/tools目录下。

android layout文件优化的更多相关文章

  1. Android应用性能优化(转)

    人类大脑与眼睛对一个画面的连贯性感知其实是有一个界限的,譬如我们看电影会觉得画面很自然连贯(帧率为24fps),用手机当然也需要感知屏幕操作的连贯性(尤其是动画过度),所以Android索性就把达到这 ...

  2. Android客户端性能优化(魅族资深工程师毫无保留奉献)

    本文由魅族科技有限公司资深Android开发工程师degao(嵌入式企鹅圈原创团队成员)撰写,是degao在嵌入式企鹅圈发表的第一篇原创文章,毫无保留地总结分享其在领导魅族多个项目开发中的Androi ...

  3. Android UI性能优化实战, 识别View中的性能问题

    出自:[张鸿洋的博客]来源:http://blog.csdn.net/lmj623565791/article/details/45556391 1.概述 2015年初google发布了Android ...

  4. Android App 性能优化实践

    本文记录了Android App优化需要用到的工具和以及在实践中的Tips.也算对我这半年来部分工作的总结. 工具 Hierarchy Viewer 是 Android SDK 自带的 Layout ...

  5. android app性能优化大汇总(内存性能优化)

    转载请注明本文出自大苞米的博客(http://blog.csdn.net/a396901990),谢谢支持! 写在最前: 本文的思路主要借鉴了2014年AnDevCon开发者大会的一个演讲PPT,加上 ...

  6. Android 虚拟机Dalvik、Android各种java包功能、Android相关文件类型、应用程序结构分析、ADB

    Android虚拟机Dalvik Dalvik冲击 随着Google 的AndroidSDK 的发布,关于它的API 以及在移动电话领域所带来的预期影响这些方面的讨论不胜枚举.不过,其中的一个话题在J ...

  7. Android的布局优化之include、merge 、viewstub

    以前在写布局的时候总是喜欢用自己熟悉的方式去写,从来也没有想过优化怎么的,后来又一次在上班的时候老大拿着我写的一个页面说我这个不行.我说这不是和设计图上的一模一样的么?怎么就不行了?然后他就跟我说了一 ...

  8. Android APP 性能优化的一些思考

    说到 Android 系统手机,大部分人的印象是用了一段时间就变得有点卡顿,有些程序在运行期间莫名其妙的出现崩溃,打开系统文件夹一看,发现多了很多文件,然后用手机管家 APP 不断地进行清理优化 ,才 ...

  9. Android之——ListView优化

    转载请注明出处:http://blog.csdn.net/l1028386804/article/details/47209253 作为client.其最基本的任务就是最直观的和用户交互.从serve ...

随机推荐

  1. Window 产品密钥

    2019.4.2 测试可用 window2003         DF74D-TWR86-D3F4V-M8D8J-WTT7M

  2. K8s(2)-部署应用

    一旦运行了Kubernetes集群,就可以在其上部署容器化应用程序.为此,您需要创建Kubernetes Deployment配置.Deployment指示Kubernetes如何创建和更新应用程序的 ...

  3. exception ‘PHPExcel_Calculation_Exception‘ with message ‘粉丝数据!C2679 -> Formula Error: Operator ‘=‘ has no operands

    导致问题原因可能是导出字段中包含有  ‘=’  ,解决办法:在字段前拼上一个半单引号. if(strpos($lists[$i-2][‘nickname‘],‘=‘) === 0){ $lists[$ ...

  4. 【C++语法基础】实验1

    实验内容: 题目:输入 1~7 的整数,如果输入的是 1~5,则输出“workday. Let’s work hard”:如果输入的是 6~7,则输出“weekend. Let’s have a re ...

  5. vue动态组件切换(选项卡)

    vue的动态组件 <template :is='变量'></template> 可以通过改变变量,来改变template的替换内容.达到选项卡的功能 如果想要切换保持不重新创建 ...

  6. js设计模式(四)---迭代器模式

    定义: 迭代器模式是指提供一种方法,顺序访问一个聚合对象中的各个元素,而又不需要暴露该对象的内部表示,迭代器模式可以把迭代的过程从业务逻辑中分离出来,使用迭代器模式,即使不关心对象的内部构造,也可以按 ...

  7. JACKSON详解

    Jackson 框架,轻易转换JSON Jackson可以轻松的将Java对象转换成json对象和xml文档,同样也可以将json.xml转换成Java对象. 前面有介绍过json-lib这个框架,在 ...

  8. inner_product

    版本1: template < class InputIterator1, class InputIterator2, class T> T inner_product(InputIter ...

  9. SQL中什么时候需要使用游标?使用游标的步骤

    https://zhidao.baidu.com/question/568932670.html 例子table1结构如下id intname varchar(50) declare @id intd ...

  10. Gym 101194D / UVALive 7900 - Ice Cream Tower - [二分+贪心][2016 EC-Final Problem D]

    题目链接: http://codeforces.com/gym/101194/attachments https://icpcarchive.ecs.baylor.edu/index.php?opti ...