1、CilpDrawable
是對Drawable進行剪切操作,控制剪切區域;
android中的進度跳就是使用一個ClipDrawable實作效果的,它根據level的屬性值,決定剪切區域的大小
ClipDrawable通過setLevel(int level)方法來設定剪切區域,level從0到10000,為0時完全不顯示,為10000時完全顯示
剪切圖檔資源,最小為0,最大為10000
可橫向裁剪,也可豎向裁剪
<Clip
xmlns:android="http://schemas.android.com/apk/res/android"
android:drawable="@mipmap/ic_launcher"
android:clipOrientation="horizontal"
android:gravity="left">
</Clip>
2、TransitionDrawable 是LayerDrawable的子類,不過它隻負責管理兩層drawable,并且提供了一個透明度變化的動畫,可以控制從一層drawable過度到另一層drawable的動畫效果
<transition
xmlns:android="http://schemas.android.com/apk/res/android">
<item android:drawable="@mipmap/ic_launcher"></item>
<item android:drawable="@mipmap/test1"></item>
</transition>
将這個檔案設定為圖檔的src,
在代碼中調用
TransitionDrawable drawable = (TransitionDrawable)imageView.getDrawable();
drawable.startTransition(2000);//設定開始動畫,并設定時間
drawable.startTransition(2000);//恢複drawable,并設定時間
3、InsertDrawable 在背景圖檔資源基礎上插入一個資源,可以将原背景圖合并為一個資源drawable
<inset
xmlns:android="http://schemas.android.com/apk/res/android"
android:drawable="@android:color/holo_red_dark"
android:insetLeft="50dp"
android:insetRight="50dp"
android:insetTop="50dp"
android:insetBottom="50dp">
</inset>
4、BitmapDrawable是對Bitmap的一種包裝,可以設定它包裝的bitmap在BitmapDrawable區域内的繪制方式,比如 平鋪填充、拉伸填充或者保持圖檔原始大小等
其屬性:
android:tileMode 顯示模型
android:antialias 是否抗鋸齒
android:dither 螢幕配置不同時,是否允許抖動
5、LayerDrawable:可以管理一組drawable對象在LayerDrawable的drawable資源按照清單的順序繪制,清單的最後一個drawable繪制在最上層
其結構,每一個item代表一個資源,下方的item會顯示在上面的item之上
<layer-list>
<item>
<bitmap/>
</item>
</layer-list>
6、StateListDrawable 就是一個選擇器,可以設定擷取焦點、點選、預設情況下的不同顯示資源
7、LevelListDrawable 管理一組drawable資源,裡面的每一個drawable資源與一個最大數值結合起來,作為LevelListDrawable資源的一項
調用Drawable的setLevel()方法可以加載level-list或代碼中定義的某個drawable資源
<level-list>
<item
android:drawable="@mipmap/ic_launcher"
android:minLevel="12"
android:maxLevel="20">
</item>
</level-list>
Demo位址 https://yunpan.cn/ckXewiguu5t25 (提取碼:3abb)