selector
selector.xml
<?xml version="1.0" encoding="utf-8" ?>
<selector xmlns:android="http://schemas.android.com/apk/res/android">
<!-- 默认时的背景图片-->
<item android:drawable="@drawable/pic1" />
<!-- 没有焦点时的背景图片 -->
<item android:state_window_focused="false"
android:drawable="@drawable/pic1" />
<!-- 非触摸模式下获得焦点并单击时的背景图片 -->
<item android:state_focused="true" android:state_pressed="true" android:drawable= "@drawable/pic2" />
<!-- 触摸模式下单击时的背景图片-->
<item android:state_focused="false" android:state_pressed="true" android:drawable="@drawable/pic3" />
<!--选中时的图片背景-->
<item android:state_selected="true" android:drawable="@drawable/pic4" />
<!--获得焦点时的图片背景-->
<item android:state_focused="true" android:drawable="@drawable/pic5" />
</selector>
1, ListView 引用
android:listSelector="@drawable/selector"
2,在ListView的item中引用
android:background="@drawable/selector"
3,利用JAVA代码直接编写
Drawable drawable = getResources().getDrawable(R.drawable.selector);
listView.setSelector(drawable);
属性介绍:
android:state_selected选中
android:state_focused获得焦点
android:state_pressed点击
android:state_enabled设置是否响应事件,指所有事件
shape属性
shape_demo.xml
<shape xmlns:android="http://schemas.android.com/apk/res/android">
<!-- 实心 -->
<solid android:color="#ff9d77"/>
<!-- gradient:渐变
android:startColor 起始颜色.
android:endColor 结束颜色.
android:angle是渐变角度,必须为45的整数倍。
android:type="linear"(默认),线性渐变.
android:type="radial" 径向渐变.
android:gradientRadius="50"(径向渐变半径) -->
<gradient
android:startColor="#ff8c00"
android:endColor="#FFFFFF"
android:angle="270" />
<!-- 描边
android:dashWidth="5dp"(虚线宽度)
android:dashGap="3dp"(虚线间隔距离)-->
<stroke
android:width="2dp"
android:color="#dcdcdc" />
<!-- 圆角 -->
<corners
android:topRightRadius="20dp" 右上角
android:bottomLeftRadius="20dp" 右下角
android:topLeftRadius="1dp" 左上角
android:bottomRightRadius="0dp" 左下角
android:radius="2dp" />
<padding
android:left="10dp"
android:top="10dp"
android:right="10dp"
android:bottom="10dp" />
</shape>
<shape xmlns:android="http://schemas.android.com/apk/res/android"> <!--背景颜色渐变 -->
<gradient
android:startColor="#c0000000"
android:endColor="#c0000000"
android:angle="90" />
android:color="#00ffffff" />
<!-- 背景的填充颜色 -->
<solid
<!-- 描边,width是边得宽度,color是颜色 -->
<stroke
android:width="3dp"
<!-- 边角圆弧的半径 -->
<corners
android:radius="10dp" />
<!-- 四周留出来的空白 -->
<padding
android:left="3dp"
android:top="3dp"
android:right="3dp"
android:bottom="3dp" />
</shape>