android 中 shape 及 select詳解
阿新 • • 發佈:2019-02-04
資源
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(邊距)
常用屬性