1.引言 android
可复用组件是优秀的面向对象设计的标识,Android支持抽象视图,从而提供了一个相似层级的模块化。经过把UI分离成独立的组件,能够在整个应用中使用它们。这样会让应用具备统一的外观而且是的改变设计更加容易。模块化
2.标签布局
在android中提供了一个布局文件包含另外一个布局文件的简单方法:标签。经过这个标签,另外一个布局被包含在试图层级中。就比如几个小朋友都在画画,我把小明画的天粘在我这张纸上,小红画的草地粘在我这张纸的底下,小白画的场景粘在中间,那么我就有了一副漂亮的画。固然我须要考虑的就是怎么样衔接最漂亮,不会有牵强,因此我要注意的:(1)我先给定要粘画的区域大小 (2)不要作色彩的衔接,省得不流畅。spa
下面是一个的例子设计
<?xml version="1.0" encoding="utf-8"?>xml
android:id="@+id/sub_id"教程
android:layout_width="match_parent"内存
android:layout_height="match_parent"utf-8
这里咱们android:layout_* 就是咱们在设置要粘贴的画布区域,随心所遇的设置。其他的属性都是被忽略的。
3.标签
在常常使用标签时,布局可能会变得嵌套过多而致使UI绘图变慢。标签能够解决这个问题。标签指导系统移除子布局的顶层容器。当你包含一个子布局时,里面包含的视图会被合并到主布局中去,但没有额外的容器试图。
3.ViewStub
尽管标签是你可以很容易的把UI分离成可复用的组件,你可能会发现被包含的布局不多会被用到。相似于进度和错误蓝的布局时可用的,可是在正常使用的过程当中并不会出现,当被包含今布局以后,这些UI元素仍然是被扩张的,他们会占用CPU周期和内存,尽管是不被显示的。那怎么办?还好Android提供了一个解决问题才抽象。
ViewStub类是一个不会占用布局空间的不可见的视图。ViewStub引用一个将被添加到UI的外部布局,与不一样的是,被引用的布局不会被扩张,知道你发送特定请求他才会扩张。
有了ViewStub以后,布局的可选部分只会在你须要它们的时候可用,不然他们就会不可见,这样加快了UI的绘制速度。
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);