Android自定义Button的点击效果

      在项目开发中,经常碰到按钮点击,可是如果不添加任何效果,按钮是否点击都是看不出来的。于是我们需要在按钮点击时改变按钮的背景图片或者其颜色。这里给出两种实现方法。

     第一种,是通过在drawable新建selector.xml文件,在里面可以实现自己所需要的点击效果。给出示例代码:

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

当按下状态为true,其通过android:state_pressed="true"来定义。相对应的按下去的图片为button_press.当不是按下状态时,即android:state_pressed="false"时,设置其图片为button_normal.

参看如下图片:

Android自定义Button的点击效果_第1张图片

接下来只需要在布局文件中设置Button的属性为:

android:background="@drawable/selector"

这样就实现了按钮的按下时其会改变背景图片。


第二种实现方法:

 Button button=(Button) this.findViewById(R.id.button);
        button2.setOnTouchListener(new OnTouchListener() {
			
			@Override
			public boolean onTouch(View v, MotionEvent event) {
				// TODO Auto-generated method stub
				if(event.getAction()==MotionEvent.ACTION_DOWN){
					v.setBackgroundResource(R.drawable.button_press);
				}else if(event.getAction()==MotionEvent.ACTION_UP){
					v.setBackgroundResource(R.drawable.button_nomal);
				}
				return false;
			}
		});

这样实现不过代码就比较冗余了。


你可能感兴趣的:(Android自定义Button的点击效果)