一.自定义控件的选中效果

在drawable文件夹下新建selector类型的xml文件(右键drawable,选择新建android xml file),文件名任意,内容如:

<?xml version="1.0" encoding="utf-8"?>
<selector
  xmlns:android="http://schemas.android.com/apk/res/android">
    <item android:state_focused="true" android:drawable="@drawable/whole_show_c" />
    <item android:state_pressed="true" android:drawable="@drawable/whole_show_c" />
    <item android:state_selected="true" android:drawable="@drawable/whole_show_c" />
    <item android:drawable="@drawable/whole_show" />
</selector>

/*state_focused表示是否是非触摸状态,true表示是非触摸状态。其中android:drawable可以引用drawable文件夹下其它资源文件,比如shape资源,用来实现控件常规、按下、选中等样式*。

使用方法:在布局文件中,控件的背景属性中引用这些资源,以下类同*/

 

二.自定义控件的外观

新建shape类型的xml文件,如:

<?xml version="1.0" encoding="utf-8"?>
<shape xmlns:android="http://schemas.android.com/apk/res/android" >

    <stroke
        android:width="1px"
        android:color="@color/color_black" />

    <padding
        android:bottom="3dp"
        android:left="3dp"
        android:right="3dp"
        android:top="3dp" />
    <solid
        android:color="@color/color_white"
        />

   <corners
        android:bottomLeftRadius="0dp"
        android:bottomRightRadius="0dp"
        android:radius="1dp"
        android:topLeftRadius="@dimen/indicator_corner_radius"
        android:topRightRadius="@dimen/indicator_corner_radius" />

</shape>

/*

stroke表示描边

padding内边距

solid表示实体,即控件的整体区域

corners表示圆角

*/

三.多样式叠加

新建layer-list类型的xml文件,如:

<?xml version="1.0" encoding="UTF-8"?>
<layer-list xmlns:android="http://schemas.android.com/apk/res/android" >

    <item>
        <shape>
            <solid android:color="@color/stroke" />

            <corners android:radius="5dip" />

            <stroke
                android:width="1dp"
                android:color="@color/stroke" />
        </shape>
    </item>
    <item>
        <scale
            android:scaleGravity="center"
            android:scaleHeight="5dp"
            android:scaleWidth="5dp" />
    </item>

</layer-list>

 

综合示例:

<?xml version="1.0" encoding="UTF-8"?>  
<layer-list xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="wrap_content" >
 
    <item android:id="@android:id/background">  
        <shape>  
            <corners android:radius="5dip" />  
            <gradient android:startColor="#ff707070" 
                android:centerColor="#ff707070" android:endColor="#ff707070" 
                android:centerY="1" android:angle="270" />     
        </shape>  
    </item>  

     <item android:id="@android:id/secondaryProgress">
         <clip>
             <shape>
                 <corners android:radius="5dip" />
                 <gradient
                         android:startColor="#ffaaa9a7"
                         android:centerColor="#ffaaa9a7"
                         android:centerY="1"
                         android:endColor="#ffaaa9a7"
                         android:angle="270"
                 />
             </shape>
         </clip>
     </item>
    
     <item android:id="@android:id/progress">  
        <clip>  
            <shape>  
                <corners android:radius="5dip" />  
                <gradient android:startColor="#ffA90101" 
                    android:centerColor="#ffA90101" android:endColor="#ffA90101" 
                    android:centerY="1" android:angle="270" />     
            </shape>  
        </clip>  
    </item>  
</layer-list>