13-6-27 android布局include的用法

1.引言      

        可复用组件是优秀的面向对象设计的标识,Android支持抽象视图,从而提供了一个类似层级的模块化。通过把UI分离成独立的组件,可以在整个应用中使用它们。这样会让应用具有统一的外观并且是的改变设计更加容易。

2.<include>标签

     在android中提供了一个布局文件包含另一个布局文件的简单方法:<include>标签。通过这个标签,另一个布局被包含在试图层级中。就好比几个小朋友都在画画,我把小明画的天粘在我这张纸上,小红画的草地粘在我这张纸的底下,小白画的场景粘在中间,那么我就有了一副漂亮的画。当然我需要考虑的就是怎么样衔接最漂亮,不会有牵强,所以我要注意的:(1)我先给定要粘画的区域大小 (2)不要做色彩的衔接,免得不流畅。

下面是一个<include>的例子

<?xml version="1.0" encoding="utf-8"?>

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"

     android:id="@+id/sub_id"

     android:layout_width="match_parent"

     android:layout_height="match_parent"

     <include layout="@layout/sub_layout"/>

</LinearLayout>

这里我们android:layout_* 就是我们在设置要粘贴的画布区域,随心所遇的设置。其余的属性都是被忽略的。

3.<merge>标签

在经常使用<include>标签时,布局可能会变得嵌套过多而导致UI绘图变慢。<merge>标签可以解决这个问题。<merge>标签指导系统移除子布局的顶层容器。当你包含一个子布局时,里面包含的视图会被合并到主布局中去,但没有额外的容器试图。

3.ViewStub

      尽管<include>标签是你能够很容易的把UI分离成可复用的组件,你可能会发现被包含的布局很少会被用到。类似于进度和错误蓝的布局时可用的,但是在正常使用的过程中并不会出现,当被包含今布局之后,这些UI元素仍然是被扩张的,他们会占用CPU周期和内存,尽管是不被显示的。那怎么办?还好Android提供了一个解决问题才抽象。

      ViewStub类是一个不会占用布局空间的不可见的视图。ViewStub引用一个将被添加到UI的外部布局,与<include>不同的是,被引用的布局不会被扩张,知道你发送特定请求他才会扩张。

     有了ViewStub之后,布局的可选部分只会在你需要它们的时候可用,否则他们就会不可见,这样加快了UI的绘制速度。

<ViewStub

   android:id="@+id/view_stub"

   android:layout_width="match_parent"

   android:layout_height="match_parent"

   android:inflatedId="@+id/sub"

   android:layout="@layout/sub"/>

Android视图有3个可能的可见状态,每个都对布局有不同的影响。

**View.VISIBLE:视图对用户可见,并且会占据布局的空间。

**VIew.INVISIBLE:视图对用户不可见,但是会占用布局的空间。

**View.GONE:视图对用户不可见也不会占用布局空间。

要想扩张用ViewStub引用外部布局,可以自己扩张它或者改变它的可见性:

((ViewStub)findViewById(R.id.view_stub)).setVisibility(View.VISIABLE);

 

摘自:Android UI基础教程 [美]Jason Ostrander

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值