zoukankan      html  css  js  c++  java
  • (三)Android性能优化系列---Improving Layout Performance(二)转载自:http://xhmj12.iteye.com/blog/2064342

     

    Loading Views On Demand

            有时你的布局可能需要一些复杂却又很少被用到的视图。无论他们是item详情、进度指示器,或撤销的消息,你都可以在需要时加载这些视图,来减少内存使用量并加快渲染速度。

            Define a ViewStub

            ViewStub是一个没有尺寸大小并且不会在布局中嵌套或渲染任何东西的轻量级的视图。因此在视图层次展现或隐藏它的代价非常小。每一个ViewStub仅仅需要包含android:layout属性来展现指定的布局。

            以下ViewStub是一个半透明的进度条。他只有在新items被导入到应用中时才是可见的。

           <ViewStub

                     android:id="@+id/stub_import"

                     android:inflatedId="@+id/panel_import"

                     android:layout="@layout/progress_overlay"

                     android:layout_width="fill_parent"

                     android:layout_height="wrap_content"

                     android:layout_gravity="bottom" />

             Load the ViewStub Layout

             当你想要载入在ViewStub中定义的布局的时候,可以calling setVisibility(View.VISIBLE) or call inflate().

             ((ViewStub) findViewById(R.id.stub_import)).setVisibility(View.VISIBLE);

                // or

             View importPanel = ((ViewStub) findViewById(R.id.stub_import)).inflate();

            注意:inflate()方法在视图渲染完毕后便直接展现该已渲染的视图View。因此如果你需要和布局交互的话,不需要再调用findViewById()方法

            一旦一个ViewStub是可见的或渲染完毕,该元素便不再是视图层次的一部分。它被已渲染的布局替换,并且该布局的根视图的ID是在ViewStub中被android:inflatedId属性指定的ID。(在中被android:id指定的ID只有在这个ViewStub布局是可见/渲染完毕才是有效的。) 注意:ViewStub的一个缺点是,目前它在要渲染的布局中并不支持<merge/>标签

  • 相关阅读:
    PHP用腾讯地图api根据地址获取经纬度的方法
    Tomcat实现负载均衡
    命令行备忘神器 Navi
    Bashtop – Linux的资源监视工具
    使用jinfo出现“can't determine target's VM version”问题解决方法
    axios 封装【满足常规数据上传及file上传】
    前端基础之设计模式篇
    使用Chrome插件拦截广告的原理
    前端基础之算法篇
    一道面试题引发的思考
  • 原文地址:https://www.cnblogs.com/fuyanan/p/4158270.html
Copyright © 2011-2022 走看看