Android 防止控件被重复点击

在开发中经常会遇到这样的情况,一个按钮点击后会弹出Toast或者Dialog,如果快速重复地点击,则Toast则会重复地出现. 而我们想要的效果是一定时间内的点击只生效一次,或者说这种快速且重复的点击为无效点击.

 

解决的思路如下:

 1. 需要定义一个全局变量 lastClickTime, 用来记录最后点击的时间.

 2. 每次点击前需要进行判断, 用lastClickTime 和当前时间想比较,并且更新最后点击时间,若小于临界值,则算无效点击,不触发事件

 注:其实用时间去判断重复点击,更多的是防止短时间大量重复或者也可是说是无效的操作, 而间隔时间要根据具体项目中需求情况而定. 这里其实还有一种更好的做法,就是利用java中的信号量Semaphore,以后有时间我会介绍这种方法.

下面请看代码:

工具类:

 

  1. public class CommonUtils {  
  2.     private static long lastClickTime;  
  3.     public static boolean isFastDoubleClick() {  
  4.         long time = System.currentTimeMillis();  
  5.         long timeD = time - lastClickTime;  
  6.         if ( 0 < timeD && timeD < 800) {     
  1. <pre class="java" name="code">           lastClickTime = time;   </pre> return true; } return false; }}  
  2. <pre></pre>  
  3. <p></p>  
  4. <p>控件点击的处理:</p>  
  5. <p></p>  
  6. <pre class="java" name="code">public void onClick(View v) {    
  7.     if (Utils.isFastDoubleClick()) {    
  8.         return;    
  9.     }else{  
  10.         //弹出Toast或者Dialog  
  11.    }  
  12.  }  </pre><br>  
  13. 这样,两次点击时间相隔小于800ms,便不会触发事件,具体的临界时间可以根据需求自己修改.<br>  
  14. <p></p>  
  15. <p><br>  
  16. </p>  
posted @ 2014-09-05 20:39  苹果&小王子  阅读(453)  评论(0编辑  收藏  举报