android 抽象佈局 三種佈局、、介紹
在佈局優化中,Androi的官方提到了這三種佈局<include />、<merge />、<ViewStub />,並介紹了這三種佈局各有的優勢,下面也是簡單說一下他們的優勢,以及怎麼使用,記下來權當做筆記。
1、佈局重用<include />
<include />標籤能夠重用佈局檔案,簡單的使用如下:
[html] view plain copy print?- <LinearLayoutxmlns:android="http://schemas.android.com/apk/res/android"
-
android:orientation
- android:layout_width=”match_parent”
- android:layout_height=”match_parent”
- android:background="@color/app_bg"
- android:gravity="center_horizontal">
- <includelayout="@layout/titlebar"/>
- <TextViewandroid:layout_width=”match_parent”
-
android:layout_height
- android:text="@string/hello"
- android:padding="10dp"/>
- ...
- </LinearLayout>
1)<include />標籤可以使用單獨的layout屬性,這個也是必須使用的。
2)可以使用其他屬性。<include />標籤若指定了ID屬性,而你的layout也定義了ID,則你的layout的ID會被覆蓋,解決方案。
3)在include標籤中所有的都是有效的,前提是必須要寫layout_width
4)佈局中可以包含兩個相同的include標籤,引用時可以使用如下方法解決(參考):
[html] view plain copy print?- View bookmarks_container_2 = findViewById(R.id.bookmarks_favourite);
- bookmarks_container_2.findViewById(R.id.bookmarks_list);
2、減少檢視層級<merge />
<merge/>標籤在UI的結構優化中起著非常重要的作用,它可以刪減多餘的層級,優化UI。<merge/>多用於替換FrameLayout或者當一個佈局包含另一個時,<merge/>標籤消除檢視層次結構中多餘的檢視組。例如你的主佈局檔案是垂直佈局,引入了一個垂直佈局的include,這是如果include佈局使用的LinearLayout就沒意義了,使用的話反而減慢你的UI表現。這時可以使用<merge/>標籤優化。
- <mergexmlns:android="http://schemas.android.com/apk/res/android">
- <Button
- android:layout_width="fill_parent"
- android:layout_height="wrap_content"
- android:text="@string/add"/>
- <Button
- android:layout_width="fill_parent"
- android:layout_height="wrap_content"
- android:text="@string/delete"/>
- </merge>
現在,當你新增該佈局檔案時(使用<include />標籤),系統忽略<merge />節點並且直接新增兩個Button。更多<merge />介紹可以參考《Android Layout Tricks #3: Optimize by merging》
3、需要時使用<ViewStub />
<ViewStub />標籤最大的優點是當你需要時才會載入,使用他並不會影響UI初始化時的效能。各種不常用的佈局想進度條、顯示錯誤訊息等可以使用<ViewStub />標籤,以減少記憶體使用量,加快渲染速度。<ViewStub />是一個不可見的,大小為0的View。<ViewStub />標籤使用如下:
[html] view plain copy print?- <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"/>
當你想載入佈局時,可以使用下面其中一種方法:
[java] view plain copy print?- ((ViewStub) findViewById(R.id.stub_import)).setVisibility(View.VISIBLE);
- // or
- View importPanel = ((ViewStub) findViewById(R.id.stub_import)).inflate();
當呼叫inflate()函式的時候,ViewStub被引用的資源替代,並且返回引用的view。這樣程式可以直接得到引用的view而不用再次呼叫函式findViewById()來查找了。
注:ViewStub目前有個缺陷就是還不支援 <merge
/> 標籤。
相關推薦
android 抽象佈局 三種佈局、、介紹
在佈局優化中,Androi的官方提到了這三種佈局<include />、<merge />、<ViewStub />,並介紹了這三種佈局各有的優勢,下面也是簡單說一下他們的優勢,以及怎麼使用,記下來權當做筆記。 1、佈局重用<i
java swing 常用的三種佈局方式:邊界佈局、流佈局、網格佈局管理器
作者:firstmiki 來源:firstmiki的部落格 著作權歸作者所有,轉載請聯絡作者獲得授權。 這篇博文僅僅簡單介紹了三種常見的佈局管理器,都是一些簡單應用; 一、 邊界佈局管理器(FlowLayout) /* * 功能:演示邊界佈局管理器:元件的位
LinearLayout、RelativeLayout、GridLayout目前安卓常用的三種佈局
**LinearLayout、RelativeLayout、GridLayout安卓常用佈局**------------------------------------------
Java基本功練習十七GUI(圖形使用者介面基礎【基本概念及其使用、三種佈局管理器實現同樣的框架練習】)
為Java GUI程式設計而設計的API是應用面向物件原理的絕佳範例。 本博文主要講解 第一,介紹Java GUI程式設計的基礎知識。 第二,它使用GUI演示面向物件程式設計。 尤其是將介紹Java GUI API的框架結構,討論GUI元件及元件之間的相互關係、容器和佈局管
用Gson、FastJson、Android原生類三種方式做Json節點解析
一、用Gson做節點解析 json: {'flag':true,'data':{'name':'張三','age':18,'sex':true}} 步驟 : 獲得 解析者 JsonParser parser = new JsonParser(); 獲
android解析XML的三種方式 DOM、SAX、PULL
第一種DOM是全部解析出來,消耗記憶體空間 <?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
PHP連接MySQL數據庫的三種方式(mysql、mysqli、pdo)
方式 odbc ram close 多語 utf 診斷 統一 連接數據庫 PHP與MySQL的連接有三種API接口,分別是:PHP的MySQL擴展 、PHP的mysqli擴展 、PHP數據對象(PDO) ,下面針對以上三種連接方式做下總結,以備在不同場景下選出最優方案。 P
解梯度下降法的三種形式BGD、SGD以及MBGD
有一個 lis 一行 pri mbg 網絡 () 次數 pen 原帖地址:https://zhuanlan.zhihu.com/p/25765735 在應用機器學習算法時
day18--linux下gzip、bzip2、zip、xz三種壓縮工具的介紹
gzip bzip2 zip xz 6.1:壓縮打包介紹:壓縮:節省空間,方便傳輸,帶寬資源耗費變少:常用的壓縮文件類型:windows: .rar .zip .7zlinux: .zip .gz .bz2 .xz .tar.gz .ta
day18--linux下gzip、bzip2、xz三種壓縮工具的介紹
gzip bzip2 zip xz 6.1:壓縮打包介紹:壓縮:節省空間,方便傳輸,帶寬資源耗費變少:常用的壓縮文件類型:windows: .rar .zip .7zlinux: .zip .gz .bz2 .xz .tar.gz .ta
安裝軟件包的三種方法yum、rpm、源碼安裝
rpm yum 一、軟件安裝方法1.rpm安裝rpm安裝軟件時不會自動安裝依賴2.yum安裝yum安裝軟件時會自動安裝軟件所需的依賴3.源碼安裝最難,需要編譯二、rpm介紹首先將之前的系統光驅掛載,mount /dev/cdrom /mnt/執行上面命令將iso掛載到/mnt/下ls /mnt/ c
梯度下降法的三種形式-BGD、SGD、MBGD
方法 ont -o 設置 求解 最小值 ima 求和 參數 在應用機器學習算法時,我們通常采用梯度下降法來對采用的算法進行訓練。其實,常用的梯度下降法還具體包含有三種不同的形式,它們也各自有著不同的優缺點。 下面我們以線性回歸算法來對三種梯度下降法進行比較。 一般線
Vmware虛擬機僅主機(Host-only)、橋接(Bridge)、NAT三種網絡模式介紹
主機ip 一個 選擇 17. def roc dcb 相互 兩個 Vmware虛擬機僅主機(Host-only)、橋接(Bridge)、NAT三種網絡模式介紹 給大家介紹一下虛擬機的三種網絡模式,希望能對大家有所幫助。 虛擬機在創建完成以後,會在物理主
Js函數的三種創建、四種調用
end call 完成後 構造函數 三種 一個數 tom num yar 1 // 函數的三種創建方法 2 function one(){ // 函數聲明,不屬於任何對象,始終默認為全局對象 3 console.log("第一個函數") 4 //默認有
oracle中三種迴圈(For、While、Loop)案例
1.ORACLE中的FOR迴圈用法(九九乘法表) 1 declare 2 i int:=0; 3 j int:=0; 4 begin 5 for i in 1..9 loop 6 for j in 1..i loop 7 Dbms_Output.p
【Linux】安裝軟體的三種方式--rpm、yum、原始碼包
說明:此文首發於本人原創公眾號【媛測】中,如有轉載,請著明出處! 在windows系統下安裝軟體很簡單,下載軟體包後雙擊.exe檔案,點選下一步即可。然而在linux安裝軟體就沒那麼容易了,不同的Linux發行版有所差異,下面以centos7系統為例說明,如何在linux下安裝軟體
移動端三種佈局
移動端佈局(三種): 1.固定佈局(廢棄用法) 2.百分比佈局,即流式佈局,特別適合電商網站的佈局 3.rem佈局方案,使用rem單位來做不同手機的適配,現在做手機端頁面是最好的 a. em單位,相對的是font-size的大小 如果自身
[Machine Learning] 梯度下降法的三種形式BGD、SGD以及MBGD
閱讀目錄 在應用機器學習演算法時,我們通常採用梯度下降法來對採用的演算法進行訓練。其實,常用的梯度下降法還具體包含有三種不同的形式,它們也各自有著不同的優缺點。 下面我們以線性迴歸演算法來對三種梯度下降法進行比較。 一般線性迴歸函式的假設函式為: h θ
兩欄佈局三種方法(親測有效)
第一種: 只需要兩個div就能實現,主要原理是將第一個div設為浮動,並加上寬度,然後就可以實現兩欄佈局,並不需要設定第二個div的任何東西。程式碼如下: div{ height:500px; } #aside{
RecyclerView三種佈局管理器
import android.support.v7.app.AppCompatActivity; import android.os.Bundle; import android.support.v7.widget.GridLayoutManager; impo