android中selector中的shape

来源:互联网 发布:传奇源码火炬引擎 编辑:程序博客网 时间:2024/06/07 03:20
当然除了使用drawable这样的图片外今天谈下自定义图形shape的方法,对于Button控件
Android上支持以下几种属性shape、gradient、stroke、corners等。
   我们就以目前系统的Button的selector为例说下:
Java代码   
1. <shape>    
2. <gradient    
3.   android:startColor="#ff8c00"   
4.   android:endColor="#FFFFFF"   
5.   android:angle="270" />    
6. <stroke    
7.   android:width="2dp"   
8.   android:color="#dcdcdc" />    
9. <corners    
10.   android:radius="2dp" />    
11.<padding    
12.  android:left="10dp"   
13.  android:top="10dp"   
14.  android:right="10dp"   
15.  android:bottom="10dp" />    
16.</shape>   
 
对于上面,这条shape的定义,分别为渐变,在gradient中startColor属性为开始的颜色,
endColor为渐变结束的颜色,下面的angle是角度。接下来是stroke可以理解为边缘,corners
为拐角这里radius属性为半径,最后是相对位置属性padding。
  对于一个Button完整的定义可以为:
Java代码   
1. <?xml version="1.0" encoding="utf-8"?>    
2. <selector    
3.     xmlns:android="http://www.norkoo.com">    
4.     <item android:state_pressed="true" >    
5.         <shape>    
6.             <gradient    
7.                 android:startColor="#ff8c00"   
8.                 android:endColor="#FFFFFF"   
9.                 android:angle="270" />    
10.            <stroke    
11.                android:width="2dp"   
12.                android:color="#dcdcdc" />    
13.            <corners    
14.                android:radius="2dp" />    
15.            <padding    
16.                android:left="10dp"   
17.                android:top="10dp"   
18.                android:right="10dp"   
19.                android:bottom="10dp" />    
20.        </shape>    
21.    </item>    
22.   
23.    <item android:state_focused="true" >    
24.        <shape>    
25.            <gradient    
26.                android:startColor="#ffc2b7"   
27.                android:endColor="#ffc2b7"   
28.                android:angle="270" />    
29.            <stroke    
30.                android:width="2dp"   
31.                android:color="#dcdcdc" />    
32.            <corners    
33.                android:radius="2dp" />    
34.            <padding    
35.                android:left="10dp"   
36.                android:top="10dp"   
37.                android:right="10dp"   
38.                android:bottom="10dp" />    
39.        </shape>    
40.    </item>    
41.   
42.    <item>            
43.        <shape>    
44.            <gradient    
45.                android:startColor="#ff9d77"   
46.                android:endColor="#ff9d77"   
47.                android:angle="270" />    
48.            <stroke    
49.                android:width="2dp"   
50.                android:color="#fad3cf" />    
51.            <corners    
52.                android:radius="2dp" />    
53.            <padding    
54.                android:left="10dp"   
55.                android:top="10dp"   
56.                android:right="10dp"   
57.                android:bottom="10dp" />    
58.        </shape>    
59.    </item>    
60.</selector>   
 
注意!提示大家,以上几个item的区别主要是体现在state_pressed按下或state_focused获
得焦点时,当当来判断显示什么类型,而没有state_xxx属性的item可以看作是常规状态下。
原创粉丝点击