zoukankan      html  css  js  c++  java
  • android layout文件优化

    性能优化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目录下。

  • 相关阅读:
    addEventListener 事件监听器 冒泡事件)
    内置对象 Date
    js-定时器
    BOM:浏览器对象
    DOM元素
    js控制style样式
    【应急响应】Windows 安全加固
    【渗透测试】社会工程学,没有射不下来的人
    【代码学习】PYTHON 线程
    【代码学习】PYTHON 进程
  • 原文地址:https://www.cnblogs.com/spps/p/9316958.html
Copyright © 2011-2022 走看看