一.BitmapDrawable(圖片一張)
<?xml version="1.0" encoding="utf-8">
<bitmap
xmlns:android="http://schemas.android.com/apk/res/android"
android:src="@~" //resource資源id
android:antialias="true|false" //抗鋸齒功能,開啓時可以讓圖片平滑
android:dither="true|false" //抖動功能,可以讓高質量圖片在低質量屏幕上不失真
android:filter="true|false" //過濾功能,圖片尺寸被拉昇或壓縮時,保持較好顯示效果
android:gravity="top|bottom|left|right|center_vertical|fill_vertical|center_horizontal|fill_horizontal|center|fill|clip_vertical|clip_horizontal"
android:tileMode="disabled|clamp|repeat|mirror" 平鋪模式 關閉|像素擴展|重複|鏡像
二。ShapeDrawable(顏色構成圖片)
<?xml version="1.0" encoding="utf-8"?>
<shape xmlns:android="http://schemas.android.com/apk/res/android"
android:shape="rectangle|oval|line|ring"> //矩形|橢圓|橫線|圓環
<gradient //漸變效果
android:startColor="color" //開始色
android:centerColor="color" //中間色
android:endColor="color" //結束色
android:angle="integer" //漸變的角度
android:centerX="integer" //漸變的中心點橫座標
android:centerY="integer" //漸變的中心點縱座標
android:gradientRadius="integer" //漸變半徑
android:type="linear|radial|sweep"//線性漸變|徑向漸變|掃描漸變/>
<padding android:left="integer" //view的邊緣留空 左留空
android:top="integer" //上留空
android:right="integer" //右留空
android:bottom="integer" /> //下留空
<corners android:radius="integer" //四個角角度
android:topLeftRadius= "integer"//左上角角度
android:topRightRadius="integer" //右上角角度
android:bottomLeftRadius="integer" //左下角角度
android:bottomRightRadius="integer"/> //右下角角度
<size
android:widht="integer" //shape的固有寬
android:height="integer"/> //shape的固有高
<solid //填充
android:color="color"/> //填充色
<stroke //描邊
android:color="color" //描邊顏色
android:width="integer" //描邊寬度
android:dashWidth="integer" //虛線線段寬度
android:dashGap="integer"/> //虛線線段間隔寬度
</shape>
三.LayerDrawable(drawable疊加集合)
<?xml version="1.0" encoding="utf-8"?>
<layer-list xmlns:android="http://schemas.android.com/apk/res/android" >
<item
android:drawable="@~"
android:id="@+id/~"
android:top="dimension"
android:right="dimension"
android:left="dimension"
android:bottom="dimension"/>
</layer-list>
四.StateListDrawable(根據View的狀態選擇合適的drawable)
<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android"
android:constantSize="true|false" //固有大小是否隨狀態改變
android:dither="true|false" //抖動效果
android:variablePadding="true|false"> //padding是否隨狀態改變
<item
android:drawable="@~" //資源文件
android:state_pressed="true|false" //按下狀態
android:state_focused="true|false" //獲得焦點
android:state_selected="true|false" //選擇
android:state_checkable="true|false" //是否能切換選中狀態
android:state_checked="true|false" //選中
android:state_enalbed="true|false" //是否使能
android:state_window_focused="true|false"/> //
</selector>
系統會從上到下依次查找,當view的狀態符合條件時,即選用該條件對應的drawable
所以優先級高的狀態放上面,默認的不附帶狀態放最後面
五LevelListDrawable(根據view的等級選用不同的drawalbe)
<?xml version="1.0" encoding="utf-8"?>
<level-list xmlns:android="http://schemas.android.com/apk/res/android">
<item
android:drawable="@~"
android:maxLevel="integer" //最大等級(0~10000)
android:minLevel="integer"/> //最小等級 (0~10000) 0最小,10000最大
</level-list>
設置等級可以通過Drawable的setLevel方法 或者 imageView的setImageLevel來設置
六.ClipDrawable(根據等級裁剪drawable)
<?xml version="1.0" encoding="utf-8">
<clip
xmlns:android="http://schemas.android.com/apk/res/android"
android:drawalbe="@~" //resource資源
android:gravity="top|bottom|left|right|center_vertical|fill_vertical|center_horizontal|fill_horizontal|center|fill|clip_vertical|clip_horizontal"
android:clipOrientation="horizontal|vertical"/> //裁剪方向
ImageView v = (ImageView)findViewById(R.id.t);
ClipDrawable drawable = (ClipDrawable)v.getDrawable();
drawable.setLevel(10000);
等級變化範圍爲0~10000,以上10000表示不裁剪,0表示裁剪全部,1000表示裁剪90%參考:Android開發藝術探索