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/>标签

  • 相关阅读:
    5月29 流程
    5月27 权限设置及功能
    5月26 留言板练习题
    5月24 文件操作
    5月23 文件上传及图片上传预览
    5月23 注册审核
    5月21 回话控制SESSION COOKIE
    5月21 汽车查询及批量删除----php方法
    5月21 练习AJAX的查看详细及批量删除
    5月20 三级联动
  • 原文地址:https://www.cnblogs.com/fuyanan/p/4158270.html
Copyright © 2011-2022 走看看