Android之有效防止按钮多次重复点击的方法

最近开发完项目,测试妹子告诉我频繁点击某个按钮,导致程序在短时间内进行多次数据提交或者数据处理,好*疼的一个问题啊。。。你没事点击那么多次干嘛,,,发牢骚归发牢骚,问题环视要解决滴,不然会让妹纸看不起哥们·····

那么如何有效避免这种情况的发生呢?

我的想法是,判断用户点击按钮间隔时间,如果间隔时间太短,则认为是无效操作,否则进行相关业务处理

首先将这块提取为工具类(方便接下来的调用),现在就起名为:OnClickUtils


/**
 * 防止按钮多次重复点击
 */

public class OnClickUtils {

    private static long lastClickTime = 0;
    private static long DIFF = 1000;
    private static int lastButtonId = -1;

    /**
     * 判断两次点击的间隔,如果小于1000,则认为是多次无效点击
     *
     * @return
     */
    public static boolean isFastDoubleClick() {
        return isFastDoubleClick(-1, DIFF);
    }

    /**
     * 判断两次点击的间隔,如果小于1000,则认为是多次无效点击
     *
     * @return
     */
    public static boolean isFastDoubleClick(int buttonId) {
        return isFastDoubleClick(buttonId, DIFF);
    }

    /**
     * 判断两次点击的间隔,如果小于diff,则认为是多次无效点击
     *
     * @param diff
     * @return
     */
    public static boolean isFastDoubleClick(int buttonId, long diff) {
        long time = System.currentTimeMillis();
        long timeD = time - lastClickTime;
        if (lastButtonId == buttonId && lastClickTime > 0 && timeD < diff) {
            Log.v("isFastDoubleClick", "短时间内按钮多次触发");
            return true;
        }
        lastClickTime = time;
        lastButtonId = buttonId;
        return false;
    }
}

Java文件中使用方式

   case R.id.tv_withdrawal:
                if (!OnClickUtils.isFastDoubleClick(R.id.tv_withdrawal)){//点击事件判断
                    String i = mTvMoney.getText().toString().trim();
                    startActivity(new Intent(getActivity(), WithdrawalActivity.class).putExtra("Money", Money));
                }
                
                break;
            case R.id.bt_balance://充值
                if (!OnClickUtils.isFastDoubleClick(R.id.bt_balance)){
                    startActivity(new Intent(getActivity(), TopUp.class));
                }
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容