1. 程式人生 > >android 中 shape 及 select詳解

android 中 shape 及 select詳解

資源

selector

重點內容
預設的item必須放到最後

屬性

android:state_enabled:  //設定觸控或點選事件是否可用狀態,一般只在false時設定該屬性,表示不可用狀態

android:state_pressed:  //設定是否按壓狀態,一般在true時設定該屬性,表示已按壓狀態,預設為false

android:state_selected:  //設定是否選中狀態,true表示已選中,false表示未選中

android:state_checked:  //設定是否勾選狀態,主要用於CheckBox和RadioButton,true表示已被勾選,false表示未被勾選

android:state_checkable:  //設定勾選是否可用狀態,類似state_enabled,只是state_enabled會影響觸控或點選事件,而state_checkable影響勾選事件

android:state_focused:  //設定是否獲得焦點狀態,true表示獲得焦點,預設為false,表示未獲得焦點

android:state_window_focused:  //設定當前視窗是否獲得焦點狀態,true表示獲得焦點,false表示未獲得焦點,例如拉下通知欄或彈出對話方塊時,當前介面就會失去焦點;另外,ListView的ListItem獲得焦點時也會觸發true狀態,可以理解為當前視窗就是ListItem本身

android:state_activated:  //設定是否被啟用狀態,true表示被啟用,false表示未啟用,API Level 11及以上才支援,可通過程式碼呼叫控制元件的setActivated(boolean)方法設定是否啟用該控制元件

android:state_hovered:  //設定是否滑鼠在上面滑動的狀態,true表示滑鼠在上面滑動,預設為false,API Level 14及以上才支援

常用設定
一般設定,如下四個屬性就能滿足大部分場景。(一般,第一和最後兩個屬性就夠,部分機型不顯示,加上另外兩個才顯示)

<item android:drawable="@drawable/solid_stroke_pressed" android:state_focused="true" />
<item android:drawable="@drawable/solid_stroke_pressed" android:state_selected="true" />
<item android:drawable="@drawable/solid_stroke_pressed" android:state_pressed="true" />
<item android:drawable="@drawable/solid_stroke_normal" />

shape

重點內容

根屬性

android:shape="rectangle|line|oval|ring"  //分別為矩形、線、橢圓、環。預設為矩形rectangle
android:dither="false|true"  //將在點陣圖的畫素配置與螢幕不同時(例如:ARGB 8888 點陣圖和 RGB 565 螢幕)啟用點陣圖的抖動;值為“false”時則停用抖動。預設值為 true。
android:innerRadius="integer"  // shape為ring時可用,內環半徑
android:innerRadiusRatio="float"  // shape為ring時可用,內環的厚度比,即環的寬度比表示內環半徑,預設為3,可被innerRadius值覆蓋
android:thickness="integer"  // shape為ring時可用,環的厚度
android:thicknessRatio="float"  // shape為ring時可用,環的厚度比,即環的寬度比表示環的厚度,預設為9,可被thickness值覆蓋
android:tint="color"  // 給shape著色
android:tintMode="src_in|src_atop|src_over|add|multiply|screen"  // 著色型別
android:useLevel="false|true"  // 較少用,一般設為false,否則圖形不顯示。為true時可在LevelListDrawable使用
android:visible="false|true"  //是否可見

corners(圓角)

<corners
        android:radius="3dp"  //圓角度數
        android:topLeftRadius="3dp"  //左上圓角度數
        android:topRightRadius="3dp"  //右上圓角度數
        android:bottomLeftRadius="3dp"  //左下圓角度數
        android:bottomRightRadius="3dp"  //右上圓角度數
        />

gradient(漸變)

android:type="linear|radial|sweep"  //線性|放射性|掃描性

android:angle="integer"  //漸變顏色的角度。45的倍數,0度時從左往右漸變,角度方向逆時針。type為linear時有效。

android:startColor="color"  //開始顏色
android:centerColor="color"  //中間顏色
android:endColor="color"  //結束顏色

android:centerX="float"  //設定漸變中心的X座標,取值區間[0,1],type不為linear

android:centerY="float"  //設定漸變中心的Y座標,取值區間[0,1],type不為linear

android:gradientRadius="integer"  //漸變色半徑,type為radial時必須配

android:useLevel="true|false"  // 較少用,一般設為false,否則圖形不顯示。為true時可在LevelListDrawable使用

stroke

android:color="color"       // 描邊的顏色
android:width="integer"     // 描邊的寬度
android:dashGap="integer"   // 虛線間隔
android:dashWidth="integer" // 虛線寬度

solid(填充)

android:color="color"     // shape的填充色

size(大小)

android:width="300dp"
android:height="100dp" 

padding(邊距)

常用屬性

參考文獻