樣式篇:
Android 項目中資源文件 -- shape篇
Android 項目中資源文件 -- selector篇
Android 項目中資源文件 -- layer-list篇
我們可以使用 shape
庐舟、selector
實現(xiàn)一些日常開發(fā)中的常見樣式楞黄。但是有一些稍微復雜一些的樣式效果我們可以使用 layer-list
來實現(xiàn)腋舌,這篇文章就來記錄一下這個 layer-list
的使用。
都說再學習的過程中隙轻,我們要時刻保持一顆充滿好奇的內心卖子。 那么問題就來了 layer-list
這到底是個什么東西呢斩萌?
帶著這個問題 我們可以打開 谷歌官方文檔--LayerList的介紹玻褪。
圖層列表 layer-list
定義
顧名思義 layer-list
,圖層別表房蝉。 layer-list
是用來創(chuàng)建 LayerDrawable 的僚匆,而 LayerDrawable 又是 DrawableResource 的一種,所以簡單來說搭幻,layer-list
所創(chuàng)建出來的圖層列表就是一種 drawable 圖形咧擂。
原理
layer-list
其實是試圖疊加,有點像我們平時寫 layout 布局時候的 RelativeLayout檀蹋,后添加的視圖會覆蓋住先添加的松申。在 layer-list
中可以通過控制視圖 上下左右 四個方向的距離屬性,從而得到不同效果的樣式。
文件位置
res/drawable/xxx.xml
文件名用作資源 ID攻臀。
資源引用
在 Java 中:R.drawable.xxx
在 XML 中:@[package:]drawable/xxx
語法
<?xml version="1.0" encoding="utf-8"?>
<layer-list xmlns:android="http://schemas.android.com/apk/res/android" >
<item
android:drawable="@[package:]drawable/drawable_resource"
android:id="@[+][package:]id/resource_name"
android:top="dimension"
android:right="dimension"
android:bottom="dimension"
android:left="dimension" />
</layer-list>
基本語法就是使用一個 <layer-list> 標簽嵌套多個 <item ../>焕数,每一個 <item ../> 就代表一個視圖層纱昧。
<layer-list>
<item ../>
<item ../>
</layer-list>
<item ../> 的屬性介紹
屬性名 | 屬性說明 |
---|---|
android:drawable |
可繪制對象資源刨啸。必備。引用可繪制對象資源 |
android:id |
資源 ID识脆。此可繪制對象的唯一資源 ID |
android:top |
整型设联。頂部偏移(像素) |
android:right |
整型。右邊偏移(像素) |
android:bottom |
整型灼捂。底部偏移(像素) |
android:left |
整型离例。左邊偏移(像素) |
默認情況下,所有可繪制項都會縮放以適應包含視圖的大小悉稠。因此宫蛆,將圖像放在圖層列表中的不同位置可能會增大視圖的大小,并且有些圖像會響應的縮放的猛。為了避免縮放列表中的項目耀盗,在 item
元素內使用 bitmap
指定可繪制對象。
<item>
<bitmap
android:gravity="center"
android:src="@drawable/image" />
</item>
使用事例
XML 文件保存在 res/drawable/layers.xml
中:
<?xml version="1.0" encoding="utf-8"?>
<layer-list xmlns:android="http://schemas.android.com/apk/res/android">
<item>
<bitmap
android:gravity="center"
android:src="@drawable/android_red" />
</item>
<item
android:left="10dp"
android:top="10dp">
<bitmap
android:gravity="center"
android:src="@drawable/android_green" />
</item>
<item
android:left="20dp"
android:top="20dp">
<bitmap
android:gravity="center"
android:src="@drawable/android_blue" />
</item>
</layer-list>
然后在布局文件中使用:
<ImageView
android:layout_height="wrap_content"
android:layout_width="wrap_content"
android:src="@drawable/layers" />