本文主要是介绍【Android】Android防止过快点击造成多次事件执行(防止按钮重复点击),希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
在用户使用 Android 应用的时候,经常会出现过快且多次点击同一按钮的情况,一方面这是因为应用或手机当前有些卡顿,另一方面也可能是由于很多应用并没有设置按钮点击时的 selector 或者其它按钮响应方式(例如点击按钮时按钮放大,常见于游戏),导致用户误认为没有点击到当前按钮,当然,除了相对应的对应用进行优化和设置点击selector以外,我们还可以做一些其它的工作,例如,判断按钮的 onClick 事件在规定事件段内只响应一次(在论坛的搜索功能中,我们常见到每10秒才可以进行一次搜索的设置,这就在一定程度上减少了无效的网络访问量,减轻服务器压力,APP同理),就如下面代码所示:
全局写法
public class Utils {// 两次点击按钮之间的点击间隔不能少于1000毫秒private static final int MIN_CLICK_DELAY_TIME = 1000;private static long lastClickTime;public static boolean isFastClick() {boolean flag = false;long curClickTime = System.currentTimeMillis();if ((curClickTime - lastClickTime) >= MIN_CLICK_DELAY_TIME) {flag = true;}lastClickTime = curClickTime;return flag;}
}
btn.setOnClickListener(new View.OnClickListener() {@Overridepublic void onClick(View v) {if (Utils.isFastClick()) {// 进行点击事件后的逻辑操作}}});
单个按钮接口写法
public abstract class OnMultiClickListener implements View.OnClickListener{// 两次点击按钮之间的点击间隔不能少于1000毫秒private static final int MIN_CLICK_DELAY_TIME = 1000;private static long lastClickTime;public abstract void onMultiClick(View v);@Overridepublic void onClick(View v) {long curClickTime = System.currentTimeMillis();if((curClickTime - lastClickTime) >= MIN_CLICK_DELAY_TIME) {// 超过点击间隔后再将lastClickTime重置为当前点击时间lastClickTime = curClickTime;onMultiClick(v);}}
}
btn.setOnClickListener(new OnMultiClickListener() {@Overridepublic void onMultiClick(View v) {// 进行点击事件后的逻辑操作}});
生活不易,全靠努力,谢谢支持了
这篇关于【Android】Android防止过快点击造成多次事件执行(防止按钮重复点击)的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!