经验首页 前端设计 程序设计 Java相关 移动开发 数据库/运维 软件/图像 大数据/云计算 其他经验
当前位置:技术经验 » 移动开发 » Android » 查看文章
【Android】关于连续多次点击控件的控制方案(新建监听类)
来源:cnblogs  作者:阿丢  时间:2021/1/25 10:46:37  对本文有异议

参考:防止Android过快点击造成多次事件的三种方法_胖胖的博客-CSDN博客

实现逻辑很简单:

    • 设置限定时间
    • 在用户点击时开始计时
    • 若计时未超过限定时间,则不允许触发点击事件

因还未学习过Rxjava,因此使用类似文中的第二种进行实现

完成后发现一个小问题:当多个控件绑定一个 Listener 时,点击 控件A 后会对 控件B 也会造成点击限制;初步设想在自定义Listener类的时候多加一个对ID的判断,这样的话要另外设计一个能储存ID和限定时间的数据结构了。

 

in OnMultiClickListener.java:

  1. public abstract class OnMultiClickListener implements View.OnClickListener {
  2. // 两次点击按钮之间的点击间隔不能少于指定时间
  3. private static final int MIN_CLICK_DELAY_TIME = 5000;
  4. private static long lastClickTime;
  5. public abstract void onMultiClick(View v);
  6. @Override
  7. public void onClick(View v) {
  8. long curClickTime = System.currentTimeMillis();
  9. if((curClickTime - lastClickTime) >= MIN_CLICK_DELAY_TIME) {
  10. // 超过点击间隔后再将lastClickTime重置为当前点击时间
  11. lastClickTime = curClickTime;
  12. onMultiClick(v);
  13. }
  14. }
  15. }

 

使用(使用的类不用继承任何接口了):

  1. public void initView() {
  2. Button listBtn = findViewById(R.id.btn_toListView);
  3. Button testBtn = findViewById(R.id.btn_test);
  4. listBtn.setOnClickListener(multiClickListener);
  5. testBtn.setOnClickListener(multiClickListener);
  6. }
  1. OnMultiClickListener multiClickListener = new OnMultiClickListener() {
  2. @Override
  3. public void onMultiClick(View v) {
  4. switch (v.getId()) {
  5. case R.id.btn_toListView:
  6. Toast.makeText(mContext, "點擊 btn_toListView", Toast.LENGTH_SHORT).show();
  7. break;
  8. case R.id.btn_test:
  9. Toast.makeText(mContext, "點擊 btn_test", Toast.LENGTH_SHORT).show();
  10. break;
  11. default:
  12. throw new IllegalStateException("Unexpected value: " + v.getId());
  13. }
  14. }
  15. };

 

原文链接:http://www.cnblogs.com/DiaoMQ/p/14310706.html

 友情链接:直通硅谷  点职佳  北美留学生论坛

本站QQ群:前端 618073944 | Java 606181507 | Python 626812652 | C/C++ 612253063 | 微信 634508462 | 苹果 692586424 | C#/.net 182808419 | PHP 305140648 | 运维 608723728

W3xue 的所有内容仅供测试,对任何法律问题及风险不承担任何责任。通过使用本站内容随之而来的风险与本站无关。
关于我们  |  意见建议  |  捐助我们  |  报错有奖  |  广告合作、友情链接(目前9元/月)请联系QQ:27243702 沸活量
皖ICP备17017327号-2 皖公网安备34020702000426号