天天看點

Android 各種類的Drawable檔案作用彙總

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)

繼續閱讀