您的位置:首页 > 其它

安卓实战中防止Button的频繁点击多次执行点击事件和点击切换文字

2016-09-12 11:26 399 查看


情况一:

用户非常快的双击按钮 按钮事件相当于二次 

怎么控制一个Button俩次点击的时间大于2s

每次点击事件执行之前 先判断俩次点击间隔是否大于2000毫秒
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来回切换文字

上述的情况比如淘宝的购物车里面就有出现,我这里也是以 
*完成/编辑 

来回切换的。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?"编辑":"完成");
}
});
}
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  Button