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后销毁
时间: 2024-11-09 02:04:12