参考:防止Android过快点击造成多次事件的三种方法_胖胖的博客-CSDN博客
因还未学习过Rxjava,因此使用类似文中的第二种进行实现
完成后发现一个小问题:当多个控件绑定一个 Listener 时,点击 控件A 后会对 控件B 也会造成点击限制;初步设想在自定义Listener类的时候多加一个对ID的判断,这样的话要另外设计一个能储存ID和限定时间的数据结构了。
in OnMultiClickListener.java:
public abstract class OnMultiClickListener implements View.OnClickListener { // 两次点击按钮之间的点击间隔不能少于指定时间 private static final int MIN_CLICK_DELAY_TIME = 5000; private static long lastClickTime; public abstract void onMultiClick(View v); @Override public void onClick(View v) { long curClickTime = System.currentTimeMillis(); if((curClickTime - lastClickTime) >= MIN_CLICK_DELAY_TIME) { // 超过点击间隔后再将lastClickTime重置为当前点击时间 lastClickTime = curClickTime; onMultiClick(v); } }}
使用(使用的类不用继承任何接口了):
public void initView() { Button listBtn = findViewById(R.id.btn_toListView); Button testBtn = findViewById(R.id.btn_test); listBtn.setOnClickListener(multiClickListener); testBtn.setOnClickListener(multiClickListener); }
OnMultiClickListener multiClickListener = new OnMultiClickListener() { @Override public void onMultiClick(View v) { switch (v.getId()) { case R.id.btn_toListView: Toast.makeText(mContext, "點擊 btn_toListView", Toast.LENGTH_SHORT).show(); break; case R.id.btn_test: Toast.makeText(mContext, "點擊 btn_test", Toast.LENGTH_SHORT).show(); break; default: throw new IllegalStateException("Unexpected value: " + v.getId()); } } };
原文转载:http://www.shaoqun.com/a/512516.html
ensogo:https://www.ikjzd.com/w/1485
tinypic:https://www.ikjzd.com/w/114
参考:防止Android过快点击造成多次事件的三种方法_胖胖的博客-CSDN博客因还未学习过Rxjava,因此使用类似文中的第二种进行实现完成后发现一个小问题:当多个控件绑定一个Listener时,点击控件A后会对控件B也会造成点击限制;初步设想在自定义Listener类的时候多加一个对ID的判断,这样的话要另外设计一个能储存ID和限定时间的数据结构了。inOnMultiClickListener
hts:hts
inkfrog:inkfrog
穿越古往今来的老街去看大溪花花世界 :穿越古往今来的老街去看大溪花花世界
中国山西太原特色菜:油糊角 - :中国山西太原特色菜:油糊角 -
口述:小三打电话劝我不要离婚(3/3):口述:小三打电话劝我不要离婚(3/3)
没有评论:
发表评论