Android樣式之layer-list

1 概述

layer-list可以將多個drawable按照順序層疊在一起顯示。layer-list可以作爲根節點,也可以作爲selector中item的子節點。layer-list可以添加多個item子節點,每個item子節點對應一個drawable資源,按照item從上到下的順序疊加在一起,再通過設置每個item的偏移量就可以看到陰影等效果了.

layer-list對應的實體類:LayerDrawable

2 layer-list的item偏移量

偏移量和控件的margin設置差不多,都是外間距的效果。如何不設置偏移量,前面的圖層就完全擋住了後面的圖層,從而也看不到後面的圖層效果了.

android:top 頂部的偏移量
android:bottom 底部的偏移量
android:left 左邊的偏移量
android:right 右邊的偏移量

偏移量設爲負值時,偏移超出的部分會被截掉而看不到。

3 item的用法

根節點不同時,可設置的屬性是會不同的
    比如selector下,可以設置一些狀態屬性,而在layer-list下,可以設置偏移量;
就算父節點同樣是selector,放在drawable目錄和放在color目錄下可用的屬性也會不同
    比如drawable目錄下可用的屬性爲android:drawable,
    在color目錄下可用的屬性爲android:color;
item的子節點可以爲任何類型的drawable類標籤
    包括shape、color、layer-list,selector,bitmap、clipscale、inset、
    transition、rotate、animated-rotate、lever-list等等。

注:item的順序是最上面的會被下面的item覆蓋

4 代碼實現

Resources r = getResources();  
Drawable[] layers = new Drawable[2];  
layers[0] = r.getDrawable(R.drawable.pic1);   
layers[1] = r.getDrawable(R.drawable.pic2);   
LayerDrawable layerDrawable = new LayerDrawable(layers);   
((ImageView) findViewById(R.id.imageview)).setImageDrawable(layerDrawable);

5 使用場景

背景圖片直接加陰影效果
實現層疊效果

6源碼參考

地址見github

發佈了46 篇原創文章 · 獲贊 66 · 訪問量 6萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章