這里總結(jié)一下shape與selector相關(guān)的屬性构舟,留作以后粘貼復制……洪碳。好吧,我承認我很懶~~
所謂狀態(tài)選擇器闪金,就是控件(view或者viewgroup)根據(jù)不同的選定狀態(tài)來定義不同的現(xiàn)實效果疯溺,我們可以在指定的狀態(tài)下,切換控件的背景屬性(background)哎垦,從而達到效果絢麗的目的囱嫩。
常用屬性:
屬性 | 狀態(tài) |
---|---|
android:drawable | 放一個drawable資源 |
android:state_pressed | 當前view是否被按下,如一個按鈕觸摸或者點擊漏设。 |
android:state_focused | 官方解釋為當前view獲得焦點的時候墨闲,比如用戶選擇了一個文本框。 |
android:state_hovered | 光標是否懸停郑口,通常與focused state相同鸳碧,它是4.0的新特性 |
android:state_selected | 被選中盾鳞,它與focus state并不完全一樣,如一個list view 被選中的時候,它里面的各個子組件可能通過方向鍵,被選中了跑筝。 |
android:state_checkable | 當前view是否可以被check。如:RadioButton是可以被check的推励。 |
android:state_checked | 被checked了,如:一個RadioButton可以被check了肉迫。 |
android:state_enabled | 當前view可以被點擊或者觸發(fā)觸摸事件的時候验辞,能夠接受觸摸或者點擊事件 |
android:state_activated | 被激活,官方解釋是set when a view or its parent has been "activated" meaning the user has currently marked it as being of interest. |
android:state_window_focused | 當前view所在的窗體獲得焦點的時候喊衫,應用程序是否在前臺受神,當有通知欄被拉下來或者一個對話框彈出的時候應用程序就不在前臺了 |
有的需要加android:focusable和android:clickable為true才能獲取焦點
button_select.xml
<selector xmlns:android="http://schemas.android.com/apk/res/android">
<item android:state_pressed="true" android:drawable="@drawable/play_button"></item>
<item android:state_focused="true" android:drawable="@drawable/play_button"></item>
<item android:drawable="@drawable/button"></item>
</selector>
常用checkbox設置:
<?xml version="1.0" encoding="UTF-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android">
<item android:state_window_focused="false"
android:state_enabled="true"
android:state_checked="true"
android:drawable="@drawable/btn_check_on" />
<item android:state_window_focused="false"
android:state_enabled="true"
android:state_checked="false"
android:drawable="@drawable/btn_check_off" />
<item android:state_enabled="true"
android:state_checked="true"
android:state_pressed="true"
android:drawable="@drawable/btn_check_on_pressed" />
<item android:state_enabled="true" android:state_checked="false" android:state_pressed="true" android:drawable="@drawable/btn_check_off_pressed" />
<item android:state_focused="true"
android:state_enabled="true"
android:state_checked="true"
android:drawable="@drawable/btn_check_on_selected" />
<item android:state_focused="true" android:state_enabled="true" android:state_checked="false" android:drawable="@drawable/btn_check_off_selected" />
<item android:state_enabled="true"
android:state_checked="false"
android:drawable="@drawable/btn_check_off" />
<item android:state_enabled="true"
android:state_checked="true"
android:drawable="@drawable/btn_check_on" />
</selector>
常用ImageButton設置:
<?xml version="1.0" encoding="UTF-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android">
<item android:state_pressed="true" android:drawable="@drawable/button2_down" />
<item android:state_focused="true" android:state_enabled="true" android:drawable="@drawable/button2_over" />
<item android:state_enabled="true" android:drawable="@drawable/button2" />
</selector>
常用Button設置:
<?xml version="1.0" encoding="UTF-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android">
<item android:state_enabled="false" android:drawable="@drawable/login_input" />
<item android:state_pressed="true" android:drawable="@drawable/login_input" />
<item android:state_focused="true" android:drawable="@drawable/input_over" />
</selector>
設置TextView
<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android" >
<item android:color="@color/gray" android:state_pressed="false" android:state_enabled="true"/>
<item android:color="@color/white" android:state_pressed="true" android:state_enabled="true"/>
<item android:color="@color/gray" android:state_enabled="false"/>
</selector>
drawble資源,才是狀態(tài)選擇器的重點格侯。首先,drawble資源比較復雜的時候财著,我們一般可以用.9patch圖片來替代联四,完美適配。但比較簡單的時候撑教,我們可以自己去寫背景的drawble資源的朝墩。那么,如何自定義一個drawble資源呢伟姐?下面來講講android下shape的使用收苏。
先來看例子:
<?xml version="1.0" encoding="utf-8"?>
<shape xmlns:android="http://schemas.android.com/apk/res/android"
android:shape="" >
<!-- 圓角 -->
<corners
android:radius="10dp"
android:topLeftRadius="" />
<!-- 描邊 -->
<stroke
android:dashGap=""
android:dashWidth=""
android:width="2dp"
android:color="@color/darkgray" />
<!-- 實心 -->
<solid android:color="#c4c4c4" />
<!-- 大小 -->
<size
android:height=""
android:width="" />
<!-- 顏色漸變 -->
<gradient
android:angle=""
android:centerColor=""
android:endColor=""
android:gradientRadius=""
android:startColor=""
android:type="" />
</shape>
首先是最開始的shape標簽。在shape里面有個shape屬性愤兵,這個屬性可以設定鹿霸,也可以不設定,不設定的時候默認是矩形秆乳。設定有四個值可以設定:
1懦鼠、rectangle 矩形
2、oval 橢圓形 當寬高設定為相同的時候屹堰,就是圓
3肛冶、line 線性形狀
4、ring 環(huán)形 可用作數(shù)據(jù)刷新時轉(zhuǎn)圈的提示
當設定為ring環(huán)形的時候扯键,還需要設定一下幾個屬性
android:innerRadiusRatio="3" //浮點型數(shù)據(jù)睦袖,以環(huán)的寬度比率來表示內(nèi)環(huán)的半徑
android:thicknessRatio="8" //浮點型數(shù)據(jù),以環(huán)的寬度比率來表示環(huán)的厚度
android:useLevel="false" //如果當做是LevlListDrawable使用時為true荣刑,其他為false
接下來定義在shape標簽里面的節(jié)點
<!-- 圓角 -->
<corners
android:radius="10dp"
android:topLeftRadius="" />
這個表示圓角馅笙,可以一次性設定四個邊角的大小伦乔。也分個設定四個角度的大小,這里只寫了全部的和左上角的延蟹。
<!-- 描邊 -->
<stroke
android:dashGap=""
android:dashWidth=""
android:width="2dp"
android:color="@color/darkgray" />
這個表示描邊评矩,在邊界畫線。width表示線的厚度阱飘,color表示顏色斥杜,dashWidth和dashGap是用來畫虛線的時候用的,dashWidth表示虛線的寬度沥匈,dashGap表示虛線的間隔蔗喂。
<!-- 實心 -->
<solid android:color="#c4c4c4" />
這個沒什么好說的。
<!-- 大小 -->
<size
android:height=""
android:width="" />
<!-- 顏色漸變 -->
<gradient
android:angle=""
android:centerColor=""
android:endColor=""
android:gradientRadius=""
android:startColor=""
android:centerX=""
android:centerY=""
android:gradientRadius=""
android:type="" />
顏色漸變需要好好講解一下高帖。
angle表示顏色漸變的起始位置缰儿,0表示從左向右然后逆時針方向,90表示從上到下散址,以此類推乖阵,angle必須為45點整數(shù)倍
startColor endColor centerColor,顏色 漸變 過程的顏色值预麸。
type,顏色漸變類型瞪浸,有三個值
1、linear吏祸,線性漸變对蒲,這個是默認值
2、radial贡翘,放射性漸變蹈矮,這個要配合android:gradientRadius屬性使用,android:gradientRadius表示放射漸變的半徑大小鸣驱。
3泛鸟、sweep,掃描石漸變踊东,就像雷達掃描的那個效果谈况。
centerX,centerY,表示漸變中心的X和Y點的坐標的相對位置。
先放到這里了递胧,有時間了再整理~