最近遇到Android在界面中重复点击导致多次跳转或打开多个相同界面的问题。这是由于当前界面在点击后,跳转到其他页面,当前页面还未转到后台时,再次触发点击事件导致。网上我主要见到了两种解决方式,一种是设置singletop的flag,不过这种方式在遇到使用startActivityForResult方式启动Activity时不会产生作用,所以我选择的是第二种,设置一个屏蔽机制,及设定在多少时间内,重复点击无效。经过我的非常不严谨的测试(=。=),设置300毫秒左右在现在主流手机上再出现问题的几率已经极小,250毫秒则不能很好的解决这个问题。

网上对于这个方法提供的代码存在逻辑上的问题(至少我看到的是这样),它会导致如果快速点击,则除第一次以外所有的点击都无效,所以我对该方法代码进行了略微的调整。该方法的原理是这样的,用一个long mClickTime记录下点击时间,如果相邻两次点击时间的差小于300ms,则不响应第二次点击,mClickTime不变,若大于300ms,则修改mClickTime为第二次点击的时间。

为了代码重用方便,最好将这个方法加入到一个继承Activity的baseActivity类中,同时设置一个开关,在需要时才打开这个功能,因为经过我的测试,300ms其实也是一个很长的时间,在一些界面中的操作中会降低用户体验,给人以一种系统有些卡顿的感觉。

以下是代码:

/**     * time of last click     */    private long lastClickTime;    /**     * switch of limit for click     */    private boolean clickLimit = false;
protected  void setClickLimit(boolean clickLimit){        this.clickLimit = clickLimit;    }    private boolean isFastDoubleClick() {        long time = System.currentTimeMillis();        long timeD = time - lastClickTime;        if (timeD>300)            lastClickTime = time;        if (!clickLimit)            return timeD < 0;        return timeD <= 300;    }



更多相关文章

  1. Android(安卓)View获取坐标值、相对距离的方法
  2. Android(安卓)极光IM-基础篇
  3. Android(安卓)用户界面---拖放(Drag and Drop)(一)
  4. Android(安卓)模拟按键H5点击方案探究
  5. Android闹钟【复杂版】【大明进化十五】
  6. android的轮播图Banner之本地加载和网络加载图片
  7. 生活中android应用开发有很广阔的天地
  8. android高分段进阶攻略(4)android模拟点击
  9. BlockCanary — 轻松找出Android(安卓)App界面卡顿元凶

随机推荐

  1. 从android1.1到android2.2
  2. android window类解析
  3. Android的ADB工具使用
  4. Android多媒体学习一:Android中Image的简
  5. android Manifest.xml全局配置文件中根标
  6. 【Android应用开发】-(7)安全性设计(完整版
  7. Android高手进阶教程(四)之----Android(
  8. Android多媒体学习一:Android中Image的简
  9. Android中给View设置阴影的三种方式
  10. Android的内存机制