解決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就可以了。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM