安卓实战中防止Button的频繁点击多次执行点击事件和点击切换文字
2016-07-18 18:10
411 查看
哈哈,今天来写两种button在安卓开发实战的对应效果处理,也是对button的点击事件触发过程的处理。
开发实战中button事件处理3种情况:
情况一:button点击触发倒计时
情况二:button频繁点击(特别是触发网络请求),本人公司是金融公司很容易产生两笔交易的情况。
情况三:button点击时不断轮流切换文字
看效果:
安卓CountDownTimer实现全民夺宝抢购倒计时和短信验证码倒计时
怎么控制一个Button俩次点击的时间大于2s
每次点击事件执行之前 先判断俩次点击间隔是否大于2000毫秒
具体使用:
*完成/编辑
来回切换的。
开发实战中button事件处理3种情况:
情况一:button点击触发倒计时
情况二:button频繁点击(特别是触发网络请求),本人公司是金融公司很容易产生两笔交易的情况。
情况三:button点击时不断轮流切换文字
看效果:
情况一:button触发倒计时
请移步我的:频繁点击安卓CountDownTimer实现全民夺宝抢购倒计时和短信验证码倒计时
情况二:
用户非常快的双击按钮 按钮事件相当于二次怎么控制一个Button俩次点击的时间大于2s
每次点击事件执行之前 先判断俩次点击间隔是否大于2000毫秒
package com.losileeya.buttonclick; import android.view.View; /** * User: Losileeya (847457332@qq.com) * Date: 2016-05-21 * Time: 20:22 * 类描述: * * @version : */ public abstract class OnClickEvent implements View.OnClickListener { private static long lastTime; public abstract void singleClick(View v); private long delay; public OnClickEvent(long delay) { this.delay = delay; } @Override public void onClick(View v) { if (onMoreClick(v)) { return; } singleClick(v); } public boolean onMoreClick(View v) { boolean flag = false; long time = System.currentTimeMillis() - lastTime; if (time < delay) { flag = true; } lastTime = System.currentTimeMillis(); return flag; } }上面是对点击事件进行处理:
具体使用:
singleClick.setOnClickListener(new OnClickEvent(delayTime) { @Override public void singleClick(View v) { Snackbar.make(v,"防止重复点击额",Snackbar.LENGTH_SHORT).show(); } });
情况三:点击button来回切换文字
上述的情况比如淘宝的购物车里面就有出现,我这里也是以*完成/编辑
来回切换的。
package com.losileeya.buttonclick;
import android.os.Bundle;
import android.support.design.widget.Snackbar;
import android.support.v7.app.AppCompatActivity;
import android.view.View;
import android.widget.Button;
import butterknife.BindView;
import butterknife.ButterKnife;
public class MainActivity extends AppCompatActivity {
@BindView(R.id.single_click)
Button singleClick;
@BindView(R.id.change_click)
Button changeClick;
//通过标志来动态显示文字
private int flag=0;
//延迟时间
private int delayTime=2000;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
ButterKnife.bind(this);
doEvent();
}
private void doEvent() {
singleClick.setOnClickListener(new OnClickEvent(delayTime) { @Override public void singleClick(View v) { Snackbar.make(v,"防止重复点击额",Snackbar.LENGTH_SHORT).show(); } });
changeClick.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
flag = (flag + 1) % 2;//点击然后改变flag的值
changeClick.setText(flag >0?"编辑":"完成");
}
});
}
}
相关文章推荐
- [转载]Activity中ConfigChanges属性的用法
- android之定时器AlarmManager
- android上改变listView的选中颜色
- Winform消除button按下出现的虚线简单实现方法
- Android编程之Button控件用法实例分析
- 在ASP.NET 2.0中操作数据之四十五:DataList和Repeater里的自定义Button
- ASP.NET 中 Button、LinkButton和ImageButton 三种控件的使用详解
- Jquery自定义button按钮的几种方法
- 验证控件与Button的OnClientClick事件详细解析
- 基于jQuery的Spin Button自定义文本框数值自增或自减
- 关于asp.net button按钮的OnClick和OnClientClick事件
- 关于WPF使用MultiConverter控制Button状态的详细介绍
- button没写type=button会导致点击时提交
- input、button的不同type值在ajax提交表单时导致的陷阱
- Android开发笔记之:如何屏蔽Button setClickable与setEnabled
- Android 控件(button)对齐方法实现详解
- 在javaScript中关于submit和button的区别介绍
- js触发asp.net的Button的Onclick事件应用
- c# 给button添加不规则的图片以及用pictureBox替代button响应点击事件的方法
- 学习使用bootstrap基本控件(table、form、button)