介紹
public class LayerDrawable extends Drawable implements Drawable.Callback
包
android.graphics.drawable.LayerDrawable
父類
| android.graphics.drawable.Drawable |
其他Draw文章參考:
Android中Drawable整體介紹
前言
管理一系列其他Drawable的Drawable囚戚。 這些按照數(shù)組順序繪制,所以具有最大索引的元素將被繪制在最上面尝丐。最大索引就是最后一個item
它可以使用<layer-list>元素在XML文件中定義侥衬。 圖層中的每個Drawable都是在一個嵌套的<item>中定義的踢代。
下面的item會覆蓋上面的item寞冯。抽象來說钞艇,就是第一個item放好了之后铲掐,就相當(dāng)于這個layterDrawable基礎(chǔ)有了譬猫,別的就是往上疊讯檐,能看見啥不能看見啥可以按照搭積木一樣想象來看。
XML的使用
LayerDrawable 是管理其他可繪制對象陣列的可繪制對象染服。列表中的每個可繪制對象按照列表的順序繪制别洪,列表中的最后一個可繪制對象繪于頂部。
每個可繪制對象由單一 <layer-list>
元素內(nèi)的 <item>
元素表示柳刮。
<?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>
(1)layer-list 標(biāo)簽
里面那些英文沒翻譯的挖垛,是因為自己不知道有啥用。
<layer-list>
必備秉颗。這必須是根元素痢毒。包含一個或多個 <item> 元素。
屬性:
xmlns:android
字符串蚕甥。必備伸但。定義 XML 命名空間檬某,其必須是 "http://schemas.android.com/apk/res/android"。
android:paddingBottom
Explicit bottom padding.
android:paddingEnd
Explicit end padding.
android:paddingLeft
Explicit left padding.
android:paddingMode
Indicates how layer padding should affect the bounds of subsequent layers.
android:paddingRight
Explicit right padding.
android:paddingStart
Explicit start padding.
android:paddingTop
Explicit top padding.
(2)item
<item>
定義要放在圖層可繪制對象中由其屬性定義的位置的可繪制對象。必須是 <selector> 元素的子項倍权。接受子 <bitmap> 元素喇嘱。
屬性:
android:drawable
可繪制對象資源否灾。必備奸攻。引用可繪制對象資源。
android:id
資源 ID呼伸。此可繪制對象的唯一資源 ID身冀。要為此項新建資源 ID,請使用以下形式:"@+id/name"。加號表示應(yīng)創(chuàng)建為新 ID搂根。
可以使用此 ID 檢索和修改具有 View.findViewById() 或 Activity.findViewById() 的可繪制對象蝶怔。
android:top
整型。頂部偏移(像素)兄墅。
android:right
整型。右邊偏移(像素)澳叉。
android:bottom
整型隙咸。底部偏移(像素)。
android:left
整型成洗。左邊偏移(像素)五督。Left inset to apply to the layer.
上面的屬性翻譯成偏移,不如理解為:LayerDrawable在繪制這一層item的時候瓶殃,給當(dāng)前item留相對于上一層的空間
android:height
Height of the layer.
android:end
最后插入
android:gravity
Gravity used to align the layer within its container.
android:start
Start inset to apply to the layer.
android:top
Top inset to apply to the layer.
android:width
Width of the layer.
(3)
默認(rèn)情況下充包,所有可繪制項都會縮放以適應(yīng)包含視圖的大小。因此遥椿,將圖像放在圖層列表中的不同位置可能會增大視圖的大小基矮,并且有些圖像會相應(yīng)地縮放。為避免縮放列表中的項目冠场,請在 <item> 元素內(nèi)使用 <bitmap> 元素指定可繪制對象家浇,
<item android:drawable="@drawable/image" />
并且對某些不縮放的項目(例如 "center")定義重力。例如碴裙,以下 <item> 定義縮放以適應(yīng)其容器視圖的項目:
<item>
<bitmap android:src="@drawable/image"
android:gravity="center" />
</item>
示例:
定義文件一:
<?xml version="1.0" encoding="utf-8"?>
<layer-list xmlns:android="http://schemas.android.com/apk/res/android">
<item>
<bitmap android:src="@drawable/ic_launcher"
android:gravity="left" />
</item>
<item android:top="10dp" android:left="10dp">
<bitmap android:src="@drawable/ic_launcher"
android:gravity="left" />
</item>
<item android:top="20dp" android:left="20dp">
<bitmap android:src="@drawable/ic_launcher"
android:gravity="left" />
</item>
</layer-list>
結(jié)果:
定義文件二:
<?xml version="1.0" encoding="utf-8"?>
<layer-list xmlns:android="http://schemas.android.com/apk/res/android">
<item
android:drawable="@drawable/ic_launcher"
>
</item>
<item android:top="10dp" android:left="10dp"
android:drawable="@drawable/ic_launcher">
</item>
<item android:top="20dp" android:left="20dp"
android:drawable="@drawable/ic_launcher">
</item>
</layer-list>
結(jié)果
定義文件三:
<?xml version="1.0" encoding="utf-8"?>
<layer-list xmlns:android="http://schemas.android.com/apk/res/android"
>
<item
>
<bitmap android:src="@drawable/ic_launcher"
/>
</item>
<item >
<bitmap android:src="@drawable/ic_launcher"
/>
</item>
<item android:top="20dp" android:left="20dp"
>
<bitmap android:src="@drawable/ic_launcher"
/>
</item>
</layer-list>
結(jié)果:
因為定義了android:top之類的钢悲,那么默認(rèn)的圖片就會相應(yīng)的縮放。