本文由PurpleSword(jzj1993)原创,转载请注明
原文网址 http://blog.csdn.net/jzj1993
安卓的按钮复选框等,在点击、选中等不同状态时,显示的图片不同。通常可以使用Selector进行定义(如res/drawable/button_selector.xml)
下面以按钮为例进行简要介绍
首先需要图像文件(分别为未按下和按下状态的图片资源):
drawable/button_bg_normal.png
drawable/button_bg_pressed.png
Selector的定义
<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android">
<!-- pressed -->
<item android:drawable="@drawable/bgcolor_translucent" android:state_pressed="true"/>
<!-- default -->
<item android:drawable="@drawable/bgcolor_transparent"/>
</selector>
Selector的应用
在View中应用
<ImageButton
android:id="@+id/main_bn_add"
android:background="@drawable/button_selector" />
在ListView中应用于子控件
<?xml version="1.0" encoding="utf-8"?>
<ListView xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@+id/settings_listview"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:cacheColorHint="@null"
android:divider="#FFFFFF"
android:dividerHeight="2dp"
android:listSelector="@drawable/selector_setting_item"
android:scrollingCache="true" >
</ListView>Selector还可以这样定义
Selector用颜色填充
<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android">
<!-- pressed -->
<item android:state_pressed="true"><color android:color="#80000000" />
</item>
<!-- default -->
<item><color android:color="#00000000" />
</item>
</selector>
Selector用渐变形状填充
<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android">
<item android:state_pressed="true">
<shape>
<gradient android:startColor="#8600ff" />
<stroke android:width="2dp" android:color="#000000" />
<corners android:radius="5dp" />
<padding android:bottom="10dp" android:left="10dp" android:right="10dp" android:top="10dp" />
</shape>
</item>
<item android:state_focused="true">
<shape>
<gradient android:startColor="#eac100" />
<stroke android:width="2dp" color="#ffffff" android:color="#333333" />
<corners android:radius="8dp" />
<padding android:bottom="10dp" android:left="10dp" android:right="10dp" android:top="10dp" />
</shape>
</item>
</selector>