• 解决Android中多次点击启动多个相同界面的问题


    在Android开发过程中我们经常会碰到这样的问题,当用户点击一个View启动一个新的Activity的时候,如果快速地多次点击就会启动多个相同的界面。虽然说很少会有用户这么玩自己的手机,但是一旦出现这样的情况确实是很不好的体验。刚好前段时间研究过lanchmode,那我们把要启动的Acitivity改为singleTop,这样最上面只能有一个相同的界面,问题应该解决了吧?实验了一下,只能说基本满足要求了,但是有一些特殊情况如使用startActivityForResult启动的时候还是不好用。下面来一劳永逸地解决这个问题吧。

         首页,在项目中我们要创建一个父类Activity,就叫FatherActivity吧,实践证明,项目中使用这么一个父类真是好处多多啊,在这里就不一一列举了。然后需要重写一下父类的dispatchTouchEvent方法,仅仅需要几行代码。思想就是每次有按下的事件的时候做一下时间间隔的判断,如果是快速点击就直接拦截下来。

    点击(此处)折叠或打开

    1. @Override
    2.     public boolean dispatchTouchEvent(MotionEvent ev) {
    3.         if (ev.getAction() == MotionEvent.ACTION_DOWN) {
    4.             if (Util.isFastDoubleClick()) {
    5.                 return true;
    6.             }
    7.         }
    8.         return super.dispatchTouchEvent(ev);
    9.     }

        对于快速点击的判断,我们可以自己定义想要的事件间隔,在这里我定义的是一秒钟:

    点击(此处)折叠或打开

    1. public static boolean isFastDoubleClick() {
    2.         long time = System.currentTimeMillis();
    3.         long timeD = time - lastClickTime;
    4.         lastClickTime = time;
    5.         return truetimeD <= 1000;
    6.     }

        最后只要让所有的Activity都继承FatherActivity就可以了。

  • 相关阅读:
    宠物小精灵之收服(dp)
    装箱问题(dp)
    背包问题(采药)
    导弹防御系统(dfs+贪心)
    2018091-2 博客作业
    第一周例行报告
    洛谷 P6378 [PA2010]Riddle
    洛谷 P5782 [POI2001]和平委员会
    洛谷 P3825 [NOI2017]游戏
    POJ 3683 Priest John's Busiest Day
  • 原文地址:https://www.cnblogs.com/lianghui66/p/5674511.html
Copyright © 2020-2023  润新知