Android自定义button点击效果的两种方式

我们在界面上经常会用到button按钮,但通常button点击后看不到点击的效果,如果用户连续点击了两次,就会报NAR错误,这样交互性就比较差了。如果我们自定义了button点击效果,比如我们点击了button能让我们看到我们确实点击了button按钮,这样就会有效的避免重复点击了。
自定义点击效果有两种方式,一种是在xml中定义,另一种是在代码中定义。
首先看一下如何在xml中定义:
在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 android:drawable="@drawable/button_nomal" android:state_focused="false" android:state_pressed="false"/> <item android:drawable="@drawable/button_focus" android:state_focused="true"/> <item android:drawable="@drawable/button_nomal" android:state_focused="false"/> </selector>

定义了两种状态:一种是按下  一种是获得焦点。

drawable分别引用了这三张图片

然后在main.xml下添加button按钮

<Button android:id="@+id/button1" android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="button效果演示" android:background="@drawable/selector" />

在MainActivtiy中得到button

Button button1=(Button) this.findViewById(R.id.button1); button1.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { // TODO Auto-generated method stub Toast.makeText(getApplicationContext(), "你点击了button按钮", Toast.LENGTH_SHORT).show(); } });

下面看下点击效果:

点击button前:

当按下button按钮时:

接下来 看下第二种实现方式,在代码中实现:

首先在main.xml中添加:

<Button android:id="@+id/button2" android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="button效果演示" android:background="@drawable/button_nomal"/>

接下面在MainActivity中实现:

Button button2=(Button) this.findViewById(R.id.button2); 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; } });

在这类绑定了button的OnTouchListener监听,因为OnClickListener继承了OnTouchListener。运行效果和上面一样,这里不做过多解释。

以上就是Android自定义button点击效果实现方式的全部内容,希望能给大家一个参考,也希望大家多多支持脚本之家。

时间: 2024-10-31 10:29:52

Android自定义button点击效果的两种方式的相关文章

Android自定义button点击效果的两种方式_Android

我们在界面上经常会用到button按钮,但通常button点击后看不到点击的效果,如果用户连续点击了两次,就会报NAR错误,这样交互性就比较差了.如果我们自定义了button点击效果,比如我们点击了button能让我们看到我们确实点击了button按钮,这样就会有效的避免重复点击了. 自定义点击效果有两种方式,一种是在xml中定义,另一种是在代码中定义. 首先看一下如何在xml中定义: 在drawable下新建selector.xml文件:          <?xml version="

android自定义button点击效果

package com.min.androidtest;      import android.app.Activity;   import android.content.Context;   import android.graphics.Canvas;   import android.graphics.Color;   import android.graphics.Paint;   import android.graphics.Rect;   import android.os.B

Android中button实现onclicklistener事件的两种方式_Android

复制代码 代码如下: package com.demos; import android.app.Activity; import android.os.Bundle; import android.view.View; import android.view.View.OnClickListener; import android.widget.Button; public class GetScreenActivity extends Activity { private Button fi

Android中button实现onclicklistener事件的两种方式

复制代码 代码如下: package com.demos; import android.app.Activity; import android.os.Bundle; import android.view.View; import android.view.View.OnClickListener; import android.widget.Button; public class GetScreenActivity extends Activity { private Button fi

Android实现图片轮播效果的两种方法_Android

大家在使用APP的过程中,经常会看到上部banner图片轮播的效果,那么今天我们就一起来学习一下,android中图片轮询的几种实现方法: 第一种:使用动画的方法实现:(代码繁琐) 这种发放需要:两个动画效果,一个布局,一个主类来实现,不多说了,来看代码吧: public class IamgeTrActivity extends Activity { /** Called when the activity is first created. */ public ImageView image

Android无需申请权限拨打电话的两种方式_Android

Android打电话有两种实现方法: 第一种方法,拨打电话跳转到拨号界面.源代码如下: Intent intent = new Intent(Intent.ACTION_DIAL); Uri data = Uri.parse("tel:" + "135xxxxxxxx"); intent.setData(data); startActivity(intent); 第二种方法,拨打电话直接进行拨打,但是有些第三方rom(例如:MIUI),不会直接进行拨打,而是要用户进

Android无需申请权限拨打电话的两种方式

Android打电话有两种实现方法: 第一种方法,拨打电话跳转到拨号界面.源代码如下: Intent intent = new Intent(Intent.ACTION_DIAL); Uri data = Uri.parse("tel:" + "135xxxxxxxx"); intent.setData(data); startActivity(intent); 第二种方法,拨打电话直接进行拨打,但是有些第三方rom(例如:MIUI),不会直接进行拨打,而是要用户进

自定义工作流活动的外观的两种方式

经常有童鞋在群里面问同样一个问题:如何自定义WF4.0活动的外观.其实一 共有两种方式去实现自定义WF4.0活动的外观:一种方式我在以前的博文上实现 过,见:WF4.0实战(十一):邮件通知:另外一种方式我将在这里讲述它的实 现.故这篇文章中,我将分别用这两种方式去一个最简单的WF4.0自定义活动外 观的例子. 第一种方式:使用[Designer]属性.命名空间为:using System.ComponentModel;代码如下: [Designer(typeof(CustomWriteLine

WF4.0实战(二十三):自定义工作流活动的外观的两种方式

经常有童鞋在群里面问同样一个问题:如何自定义WF4.0活动的外观.其实一共有两种方式去实现自定义WF4.0活动的外观:一种方式我 在以前的博文上实现过,见:WF4.0实战(十一):邮件通知:另外一种方式我将在这里讲述它的实现.故这篇文章中,我将分别用这两种 方式去一个最简单的WF4.0自定义活动外观的例子. 第一种方式:使用[Designer]属性.命名空间为:using System.ComponentModel;代码如下: [Designer(typeof(CustomWriteLineDe