打开APP
userphoto
未登录

开通VIP,畅享免费电子书等14项超值服

开通VIP
【转】<viewStub />, <requestFocus />, <merge /> and <include />

<viewStub />, <requestFocus />, <merge /> and <include />




  • 编写设计模式(DESIGNPATTERNS) 的前辈们在具体的实践中总结出大量的经验,比如:如何才能高效的处理问题?如何才能更科学的安排架构或者合理的复用现有资源?等等…其中有提到对现有资源 的复用,这是整个设计模式精髓理论之一,因为资源复用被应用于设计模式大部分的模块中。

    简单或复杂的问题都需要时常考虑如何优化资源的分配。比如一个功能很简单的应用程序,它会调用一些我们常用的对话框或者输入面板,这需要采用统一的方式来针对不同的应用程序制定统一标准。
   当我们面对Android UI优化时,有必要继续考虑资源复用。手机开发给我们的直观感觉是运行其上的软件应该尽可能的达到资源高效利用的极致,而不能像开发PC机那样,似乎有用之不尽的资源。
   定义Android Layout(XML)时,有四个比较特别的标签是非常重要的,其中有三个是与资源复用有关,分别是 <viewStub/>, <requestFocus />, <merge /> and <include/>。可是以往我们所接触的案例或者官方文档的例子都没有着重去介绍这些标签的重要性。
 

  • <viewStub  />: 此标签可以使UI在特殊情况下,直观效果类似于设置View的不可见性,但是其更大的(R)意义在于被这个标签所包裹的Views在默认状态下不会占用任何内存空间。viewStub通过include从外部导入Views元素。
    • 用法:通过android:layout来指定所包含的内容。默认情况下,ViewStub所包含的标签都属于visibility=GONE。viewStub通过方法inflate()来召唤系统加载其内部的Views。<ViewStub android:id="@+id/stub"
      android:inflatedId="@+id/subTree"
      android:layout="@layout/mySubTree"
      android:layout_width="120dip"
      android:layout_height="40dip" />
  • <merge />: 将在下一篇做详细介绍。
  • <include />:可以通过这个标签直接加载外部的xml到当前结构中,是复用UI资源的常用标签。
    • 用法:将需要复用xml文件路径赋予include标签的Layout属性。<include android:id="@+id/cell1" layout="@layout/ar01" />
      <include android:layout_width="fill_parent" layout="@layout/ar02" />
  • <requestFocus />: 标签用于指定屏幕内的焦点View。
    • 用法: 将标签置于Views标签内部<EditText id="@+id/text"
                   android:layout_width="fill_parent"
                   android:layout_height="wrap_content"
                   android:layout_weight="0"
                   android:paddingBottom="4">
             <requestFocus />
      </EditText>
本站仅提供存储服务,所有内容均由用户发布,如发现有害或侵权内容,请点击举报
打开APP,阅读全文并永久保存 查看更多类似文章
猜你喜欢
类似文章
【热】打开小程序,算一算2024你的财运
android中requestFocus
Android性能优化之布局优化,介绍使用抽象布局标签(include,viewstub,merge)、去除不必要的嵌套和节点、减少不必要的infalte及其他Layout可调优点
Android UI学习 - FrameLayou和布局优化
Android2.2——API中文文档4
Android里merge和include标签的使用
[译]AndroidUI优化
更多类似文章 >>
生活服务
热点新闻
分享 收藏 导长图 关注 下载文章
绑定账号成功
后续可登录账号畅享VIP特权!
如果VIP功能使用有故障,
可点击这里联系客服!

联系客服