layerDrawable在xml中對應(yīng)的標簽為layer-list,它表示的是一種層次化的drawable集合,可以通過將drawable不同位置的擺放來達到一些特殊的效果。
layaerDrawable語法如下:
<?xml version="1.0" encoding="utf-8"?>
<layer-list xmlns:android="http://schemas.android.com/apk/res/android">
<item
android:drawable="可引入已編寫好的drawable文件,或引入一張圖片"
android:bottom="dimension"
android:right="dimension"
android:left="dimension"
android:top="dimension"
/>
</layer-list>
- 一個LayerList可以包含多個Item,每個item表示一個drawable。item的結(jié)構(gòu)也比較簡單,比較常用的屬性有bottom,left,right,top,它們分別表示Drawable相對于view的偏移量,單位為像素。
- 另外,我們可以通過drawable屬性來直接引用一個已有的drawable資源。
- 默認情況下,layer-list中所有的drawable都被放至View的大小,對于bitmap來說,需要使用gravity才能控制圖片的顯示效果。
- Layer-list有層次的概念,下面的item會覆蓋上面的item,通過合理的分層,可以實現(xiàn)一些特殊的疊加效果。
1.按鈕陰影效果
<?xml version="1.0" encoding="utf-8"?>
<layer-list xmlns:android="http://schemas.android.com/apk/res/android">
<!-- layer-list設(shè)置圖層效果:每一個item是一張圖層,從下往上疊放 -->
<!-- item前景層-->
<item
android:left="2dp" //當前drawable相對與view左邊兩個dp的外間距
android:top="2dp"> //當前drawable相對于view上邊兩個dp的外間距
<shape>
<gradient
android:angle="45"
android:endColor="#66ffd87c"
android:startColor="#6696CDCD"
android:type="linear" />
<corners android:radius="10dp" />
</shape>
</item>
<!-- item預(yù)覽層-->
<!-- 這層item會覆蓋在之前上一層的item之上,會產(chǎn)生疊加的效果。
<item
android:bottom="2dp" //當前drawable相對與view底部兩個dp的外間距
android:right="2dp"> //當前drawable相對與view右邊兩個dp的外間距
<shape>
<solid android:color="@android:color/white" />
<corners android:radius="10dp" />
</shape>
</item>
</layer-list>
2.微信輸入框效果
<?xml version="1.0" encoding="utf-8"?>
<layer-list xmlns:android="http://schemas.android.com/apk/res/android">
<!-- 前景層-->
<item>
<shape android:shape="rectangle">
<solid android:color="#0ac39e" />
</shape>
</item>
<!-- 第二層,當前drawable為一個純白色,相對view底部6dp外間距。
<item android:bottom="6dp">
<shape android:shape="rectangle">
<solid android:color="#ffffff" />
</shape>
</item>
<! --第三層,當前drawable為一個純白色,相對view下,左,右各1dp的外間距。
<item
android:bottom="1dp"
android:left="1dp"
android:right="1dp">
<shape android:shape="rectangle">
<solid android:color="#ffffff" />
</shape>
</item>
</layer-list>
以上來自Android開發(fā)藝術(shù)探索第六章drawable之layerDrawable,因為在工作中頻頻使用到,所以在此記錄。