2021年1月21日星期四

【Android】关于连续多次点击控件的控制方案(新建监听类)

参考:防止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

跨境电商:https://www.ikjzd.com/

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)

没有评论:

发表评论