Drawable

一.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開發藝術探索

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章