Android include、merge、ViewStub

Android 有提供 3 种布局优化的方式

1 include
Android 有提供 来解决重复 UI 的问题,但是贪图便利都直接黏贴代码,想说快速而且简单。但检查代码后发现,写在 UI 顶部的返回按钮和标题名称的 View,几乎都有重复使用 UI 的问题。所以利用 include标签来解决这个问题。

在研究之前有几个疑惑

  • 如果单纯只是显示在画面上,那么不用初始化和宣告并没有问题,直接在 .xml 档中完成编辑即可。
    例子 :
    那么如果有类似 Button 或 EditText 等组件时,该如何使用这些组件?
  • 同时套用多个时该如何使用

其实两个问题思路是相同的
.xml 中,宣告ID,只要是android:layout_* 这种类型属性都是有效的,前提是必须要写 layout_width 和 layout_height 两个属性。

android:id="@+id/命名"
layout="@layout/所使用Layout" />

代码中
View (SampleView)命名的View = findViewById(命名);
SampleView.findViewById(组件id);

补充 : 标签若指定了ID属性,而加进来的 Layout 也定义了ID,则 Layout 的ID会被覆盖。

2 merge 减少视图层级
这个标签再研究之前,并不了解它的功用。我的看法是 只是单纯的简化 .xml 里代码的数量,可以与搭配使用,但其实不然。以上的状况单纯发生在不需要Layout框架时。

而另外一种状况是,当原本Layout 使用的是 LinearLayout 并且 merge标签里也是使用 LinearLayout,如此便可以简化LinearLayout不用加入,便可以加速程序的执行。

用例子解释
activity_sample1.xml
…中间省略
/>
/>

activity_sample2.xml
…中间省略
/>
/>

activirt_main.xml
…中间省略
/>
/>
当遇到需要把 activity_sample1 及 activity_sample2 加入时,将此两个xml檔改成merge,减少重复相同布局

3 ViewStub
最大的优点是当你需要时才会加载,使用他并不会影响 UI 初始化时的性能。
补充 :不支持merge标签

以上是整理出来的一些笔记,如果有哪个部分有问题,欢迎留言。

你可能感兴趣的:(Android include、merge、ViewStub)