android 屏蔽快速点击,android – 如何防止快速双击按钮

我在这里看了答案 – Android Preventing Double Click On A Button

并实现了qezt的解决方案,我已经尝试过setEnabled(false) –

doneButton.setOnClickListener(new View.OnClickListener() {

@Override

public void onClick(View v) {

// mis-clicking prevention, using threshold of 1 second

if (SystemClock.elapsedRealtime() - doneButtonClickTime < 1000){

return;

}

//store time of button click

doneButtonClickTime = SystemClock.elapsedRealtime();

doneButton.setEnabled(false);

//do actual work

}

});

这些都不能对抗超快速双击.

注意 – 我的处理完成后我没有设置doneButton.setEnabled(true).我只是简单地完成了()活动,所以没有按钮过早启用的问题.

最佳答案

我这样做,效果很好.

public abstract class OnOneOffClickListener implements View.OnClickListener {

private static final long MIN_CLICK_INTERVAL=600;

private long mLastClickTime;

public static boolean isViewClicked = false;

public abstract void onSingleClick(View v);

@Override

public final void onClick(View v) {

long currentClickTime=SystemClock.uptimeMillis();

long elapsedTime=currentClickTime-mLastClickTime;

mLastClickTime=currentClickTime;

if(elapsedTime<=MIN_CLICK_INTERVAL)

return;

if(!isViewClicked){

isViewClicked = true;

startTimer();

} else {

return;

}

onSingleClick(v);

}

/**

* This method delays simultaneous touch events of multiple views.

*/

private void startTimer() {

Handler handler = new Handler();

handler.postDelayed(new Runnable() {

@Override

public void run() {

isViewClicked = false;

}

}, 600);

}

}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值