selectorandroid
A. Android開發中定義xml 中的selector里android:state_focused這句是什麼意思
android:state_focused
是當控制項獲得焦點的時候控制項的表示。
類似的還有android:state_pressed,按下時
android:state_selected 選中時
為了實現的效果是:
按下一個按鈕,按鈕會變個形狀或者顏色,松開,它又變回原樣。
B. Android中selector使用詳解
選擇器在android中使用的非常廣泛,點擊反饋、選中、使能、聚焦等狀態切換都會用到選擇器。
一:下面是一個簡單的選擇器:
android:enterFadeDuration="200" 、android:exitFadeDuration="200":進入新狀態或退出舊狀態時會有一個200毫秒的漸變動畫。這兩個屬性使用的比較常見,可以使選擇器的狀態切換更加平滑。
以下幾個都是Drawable的屬性。
android:autoMirrored="true"對應drawable.setAutoMirrored(),這個屬性表示是否將drawable鏡像顯示,只有在從右往左布局的環境下才會生效。將此屬性設置成true,並將語言調節成阿拉伯語便可以看到效果。
android:dither="true"對應drawable.setDither(),這個屬性表示是否對圖像進行抖動處理。當圖像的bit-color較少時,通過顏色值的抖動來增加可用顏色數量,並保持較好的顯示效果。
android:visible="true" 對應drawable.setVisible(),設置Drawable是否可見,一般不會影響Drawable的行為,但是它是Drawable是否運行了動畫的一個暗示。例如:AnimationDrawable可以通過這個方法啟動或者停止動畫。
剩下兩個屬性對應DrawableContainer$DrawableContainerState裡面的屬性(DrawableContainer是Drawable的一個子類,DrawableContainerState是DrawableContainer的內部類)。
android:constantSize="true":當選擇器各個狀態的圖片大小不一時,設置為 true表示以最大的圖片的尺寸顯示,設置為false以默認的圖片的尺寸顯示(控制項大小會對現象有影響,需要是包裹內容的)。
android:variablePadding="false" :默認為false,這個屬性意義不大,通常不去設置。
二:Item的各種狀態,理解起來相對簡單,都可以從屬性的名字去理解其含義,例如:
狀態為加速的時候會顯示ic_launcher_m圖片,那麼是什麼加速呢?這就需要自己去分析一下,其實這里指的加速是對View的軟體加速或硬體加速。
當給View設置background、foreground或ImageView設置src時只能寫android:drawable="id":
當給文字顏色添加選擇器的時候必須要寫android:color="ARGB|RGB顏色值"
三:注意安卓程序在讀取選擇器文件時,是從上往下一個一個節點進行遍歷的,程序會選擇符合當前控制項狀態的第一個Item的內容。如果一個Item不寫任何狀態,表示它任何狀態都符合, 所以一般最後一個Item是不會寫任何狀態的(就像if(){}else if(){}else{}語句一樣,最後一個包含了剩下的所有情況)。
四:選擇器的Item和animated-rotate一起使用。
五:動態創建選擇器
動態創建一個簡單的選擇器:
用一張圖片,通過對圖片的著色創建選擇器:
創建矢量圖選擇器:
TextView文字顏色選擇器:
部分常用狀態數組: