实现按钮按下和释放,按钮背景图片相应切换效果的方法这里介绍两种,一种是在代码里实现,另一种是在xml文件里实现
一、在xml文件里
首先现在layout的一个xml文件下定义Button如下所示:
- <Button
- android:id="@+id/btn_user_selected"
- android:layout_width="wrap_content"
- android:layout_height="wrap_content"
- android:background="@drawable/btn_selected/>
接下来看btn_selected.xml文件的定义:
- <?xmlversion="1.0"encoding="utf-8"?>
- <selectorxmlns:android="http://schemas.android.com/apk/res/android">
- <!--获得焦点但未按下时的背景图片-->
- <itemandroid:state_focused="true"android:state_enabled="true"android:state_pressed="false"android:drawable="@drawable/user_selecte_n"/>
- <!--按下时的背景图片-->
- <itemandroid:state_enabled="true"android:state_pressed="true"android:drawable="@drawable/user_selecte_p"/>
- <!--按下时的背景图片-->
- <itemandroid:state_enabled="true"android:state_checked="true"android:drawable="@drawable/user_selecte_p"/>
- <!--默认时的背景图片-->
- <itemandroid:drawable="@drawable/user_selecte_n"/>
- </selector>
创建xml:点击drawable文件夹右键-->new-->Android XML File-->在File栏里填写xml名称-->Root Element下选择xml的背景选择器selector-->点击finish-->创建成功
相关属性:
android:state_selected:选中
android:state_focused :获得焦点
android:state_pressed :点击
android:state_enabled :设置是否响应事件,指所有事件
selector背景选择器用法大全请跳转到:点击打开链接
二、在java代码里- bottomReturnBtn.setOnTouchListener(newOnTouchListener(){
- publicbooleanonTouch(Viewv,MotionEventevent){
- ButtonupStepBtn=(Button)v;
- if(event.getAction()==MotionEvent.ACTION_DOWN){
- upStepBtn.setBackgroundResource(R.drawable.bottom_sub_order_btn);
- }elseif(event.getAction()==MotionEvent.ACTION_UP){
- upStepBtn.setBackgroundResource(R.drawable.bottom_return_check);
- finish();
- }
- returnfalse;
- }
- });
通过监听按钮的不同状态来更改按钮的背景图片
public boolean onTouch(View v,MotionEvent event){
}
参数v:事件源对象
参数event:事件封装类的对象,其中封装了触发事件的详细信息,同样包括事件的类型、触发时间等信息。
event.getAction() == MotionEvent.ACTION_DOWN ======>按钮被按下
event.getAction() == MotionEvent.ACTION_UP======>按钮被释放