LayerDrawable簡單使用

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,因為在工作中頻頻使用到,所以在此記錄。

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

  • Android 自定義View的各種姿勢1 Activity的顯示之ViewRootImpl詳解 Activity...
    passiontim閱讀 178,937評論 25 709
  • 1、Drawable 簡介 Drawable——可簡單理解為可繪制物,表示一些可以繪制在 Canvas 上的對象。...
    牧秦丶閱讀 15,348評論 0 15
  • 一、 Drawable簡介 1 Drawable表示的是一種可以在Canvas上進行繪制的抽象的概念,可以是純顏色...
    黃海佳閱讀 1,296評論 0 10
  • 很多人簡單的認為微商就是在微信上賣東西的人,更有甚者認為微商就是朋友圈賣面膜的。這些觀點都是很荒謬的,外行人這么認...
    怙棘2018閱讀 17,471評論 2 1
  • 66英語體系chapter 1:主要闡述了在使用英語溝通時別人不理解或誤解你想表達的意思的2種情況:1: 26個字...
    東東薇兒閱讀 105評論 0 0

友情鏈接更多精彩內(nèi)容