Android XML Drawable
阿新 • • 發佈:2017-05-07
1.0 指定 margin draw 圖像資源 btn als lns tco
一、簡介
Android把任何可繪制在屏幕上的圖形圖像都稱為drawable。drawable是一種抽象的圖形,一個繼承了Drawable類的子類,或者是一張位圖圖像。
二、示例
1. 下面通過一些例子感受一下,利用ShapeDrawable創建彩色圖形,既然XML Drewable與特定的像素密度無關,因此無需考慮特定像素密度的目錄。Drawable的XML文件默認放於res/drawable目錄下,利用Drawable和Shape創建一個圓角按鈕。創建button_shape_normal.xml文件。
1 <?xml version="1.0" encoding="utf-8"?> 2 <shape 3 xmlns:android="http://schemas.android.com/apk/res/android" 4 android:shape="rectangle"> 5 6 <corners android:radius="10dp" /> 7 <gradient 8 android:angle="90" 9 android:endColor="#cccccc" 10 android:startColor="#acacac"/> 11 12 </shape>
在style.xml中,修改如下:
1 <style name="Remote_control_btn_style"> 2 <item name="android:layout_width">0dp</item> 3 <item name="android:layout_height">match_parent</item> 4 <item name="android:background">@drawable/button_shape_normal</item> 5 </style>
這樣一個圓角按鈕就完成了。
2. 下面完成一個按鈕在默認狀態下的樣式,及在點擊按鈕後的變化樣式,再創建一個按鈕點擊後的Drewable文件button_shape_pressed.xml:
1 <?xml version="1.0" encoding="utf-8"?> 2 <shape 3 xmlns:android="http://schemas.android.com/apk/res/android" 4 android:shape="rectangle"> 5 6 <corners android:radius="10dp" /> 7 8 <gradient 9 android:angle="270" 10 android:endColor="#cccccc" 11 android:startColor="#acacac" /> 12 13 </shape>
創建交互式的按鈕shape(button_shape.xml):
1 <?xml version="1.0" encoding="utf-8"?> 2 <selector 3 xmlns:android="http://schemas.android.com/apk/res/android"> 4 5 <item android:drawable="@drawable/button_shape_pressed" 6 android:state_pressed="true" /> 7 <item android:drawable="@drawable/button_shape_normal" 8 android:state_pressed="false" /> 9 10 </selector>
再次修改樣式文件style.xml,如下所示:
1 <style name="Remote_control_btn_style"> 2 <item name="android:layout_width">0dp</item> 3 <item name="android:layout_height">match_parent</item> 4 <item name="android:background">@drawable/button_shape</item> 5 </style>
這樣,一個通過xml繪制的按鈕就完成了。
三、總結
使用兩張圖片做了個selector (tab_item_home.xml):
1 <?xml version="1.0" encoding="utf-8"?> 2 <selector 3 xmlns:android="http://schemas.android.com/apk/res/android"> 4 <item android:drawable="@drawable/tab_ic_norm_home" /> 5 <item android:state_pressed="true" android:drawable="@drawable/tab_ic_sel_home" /> 6 </selector>
為ImageView的src或者background設置樣式(itemView.xml),
1 <ImageView 2 android:id="@+id/tab_item_icon" 3 android:layout_width="wrap_content" 4 android:layout_height="wrap_content" 5 android:layout_margin="3dp" 6 android:src="@drawable/tab_item_home"/>
在運行後,點擊總是沒有效果,那麽,問題出在哪裏了呢?
在做出如下修改,點擊效果就恢復正常了,
1 <?xml version="1.0" encoding="utf-8"?> 2 <selector 3 xmlns:android="http://schemas.android.com/apk/res/android"> 4 <item android:state_pressed="true" android:drawable="@drawable/tab_ic_sel_home" /> 5 <item android:state_selected="true" android:drawable="@drawable/tab_ic_sel_home"/> 6 <item android:drawable="@drawable/tab_ic_norm_home" /> 7 </selector>
PS: 設置按鈕selected狀態,在代碼中可以動態設置被選中後的持續效果。
總結:default(默認)/不點擊的圖片應該放在最下邊,才會有點擊效果,不然,只會顯示default圖片。
四、核心圖像資源子類
- BitmapDrawable對象:用於創建、平鋪、拉伸以及對齊位圖。
- ColorDrawable對象:用於用顏色填充指定的其它各類對象。
- GradientDrawable對象:用於創建並繪制自定義漸變。
- AnimationDrawable對象:用於創建基於幀的動畫。
- TransitionDrawable對象:用於創建交叉淡入淡出過渡。
- NinePatchDrawable對象:用於通過定義可拉伸區域來創建可縮放位圖。
Android XML Drawable