long lastClick ;
public void onClick(View v) {
//大于一秒方个通过
if (System.currentTimeMillis() - lastClick <= 1000)
{
showToast("点那么快干什么!!!");
return;
}
lastClick = System.currentTimeMillis();
}
一种常见的写法,记录前后两次点击事件的时间,然后判断一个时间差是否在给定的LimitTime内,如果是则不能点击,
否则,可点击.
这种方式有缺点,多个button,快速切换点击,控制效果不是很好,所以我试着用Android的 handler来控制button点击事件。
//new 一个handler,用于消息处理
Handler handler = new Handler(){
@Override
public void handleMessage(Message msg) {
super.handleMessage(msg);
if(msg.what == GOTO_DIALOG){
//调用button点击事件处理方法goToDialog
goToDialog((Integer)msg.obj);
}
}
};
@Override
public void onClick(View v) {
//发送handler消息之前,清空该消息
handler.removeMessages(GOTO_DIALOG);
//绑定一个msg,内容为接下来需要的button的ID,
Message msg = Message.obtain();
msg.what = GOTO_DIALOG;
msg.obj = v.getId();
//发送消息间隔1秒
handler.sendMessageDelayed(msg, 1000);
}
private void goToDialog(int id){
//多个botton
switch (id){
case R.id.btn_back:
......
break;
case R.id.btn_sumbit:
......
break;
}
使用上面handler处理后,就不再担心多个button之间切换,乱点了
注意:记得用完handler后销毁