在项目开发中,经常碰到按钮点击,可是如果不添加任何效果,按钮是否点击都是看不出来的。于是我们需要在按钮点击时改变按钮的背景图片或者其颜色。这里给出两种实现方法。
第一种,是通过在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.
参看如下图片:
接下来只需要在布局文件中设置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;
- }
- });
这样实现不过代码就比较冗余了。