按钮按下和平常两个状态的背景图片是不一样的,这样才会有按下的效果,更换这两个图片的原理很简单。
1.在res目录下创建drawable目录
2.在这个目录下创建button的xml,写select选择器
<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android">
<item android:state_pressed="true"
android:drawable="@drawable/button_pressed" /> <!-- pressed -->
<item android:state_focused="true"
android:drawable="@drawable/button_pressed" /> <!-- focused -->
<item android:drawable="@drawable/button_normal" /> <!-- default -->
</selector>
其中,有pressed,focused等状态,对应不同的图片,这个配置文件就是一个选择器的作用
3.在布局文件中通过android:background来调用这个button这个配置文件
android:background="@drawable/button"
让我长知识的还有这次联系中,知道了textView也是可以当成按钮来使用的
1.把textView的clickable设置成true,这样,这个按钮就能剑姬了,并且写上被点击的时候的方法,但是这样点击是看不出来被点击的
<TextView
android:background="@drawable/shape_selector"
android:clickable="true"
android:onClick="reEnterSetup"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:layout_marginLeft="5dip"
android:layout_marginTop="8dip"
android:text="重新进入设置向导"
android:textColor="#000000"
android:textSize="20sp" />
2.写shap形状配置文件,同样放到drawable目录下
<?xml version="1.0" encoding="utf-8"?>
<shape xmlns:android="http://schemas.android.com/apk/res/android"
android:shape="rectangle" >
<corners android:radius="5dip" />
<!--
渐变
<gradient android:startColor="#ff0000" android:endColor="#00ffff"/>
-->
<!-- 固定色 -->
<solid android:color="#ffffff" />
<!-- <stroke
android:dashWidth="3dip"
android:width="2dip"
android:color="#000000"
android:dashGap="15dip" /> -->
</shape>
shap是指什么图形,radius是边角弧度,gradient是渐变色,solid是固定色,这里选择固定色。
写两个这样的文件,我命名为gradient_box_normal gradient_box_pressed,再写一个select选择器进行选择,然后在组建立设置这个选择器当背景。
综上,个人感觉选择器是做配置来实现背景改变,只不过Textview是通过两个shap配置,而不是图片。