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

  • 相关阅读:
    获取Enum枚举值描述的几法方法
    c# 快速验证代理IP是否有用
    解析JSON对象与字符串之间的相互转换
    MVC4相关Razor语法以及Form表单(转载)
    MVC4数据注解和验证
    C#在Json反序列化中处理键的特殊字符
    EasyUI 兼容 IE6 方法总结
    uploadify在IE6下的问题
    Could not resolve dependencies for project, Failed to read artifact descriptor for
    shell 文本单词计数
  • 原文地址:https://www.cnblogs.com/fuyanan/p/4158270.html
Copyright © 2011-2022 走看看