解決SlidingMenu和SwipeBackLayout右滑事件沖突問題


SwipeBackLayout向右滑動關閉當前Activity,SlidingMenu向右滑動則是打開menu部分。在同一個Activity中,當SlidingMenu處於打開狀態時,此時向右滑動,事件會被SwipeBackLayout優先處理,導致屏幕上一大部分是menu,一小部分是Activity內容的時候居然是直接關閉當前Activity,顯然,這不是用戶所願意看到的(正確操作場景為:當SlidingMenu處於打開狀態,右滑先是相應SlidingMenu,慢慢關閉,然后再右滑時才是響應SwipeBackLayout關閉當前Activity,若SlidingMenu處於關閉狀態,則直接響應SwipeBackLayout)。

考慮到SlidingMenu和SwipeBackLayout都各自有着自己的狀態,且為了盡量耦合,可以進行如下處理(直接在當前Activity中重寫dispatchTouchEvent,依據SlidingMenu狀態設置SwipeBackLayout的可用狀態):

 1 @Override  2 public boolean dispatchTouchEvent(MotionEvent ev) {  3     if (menu.isMenuShowing()) {  4         if (mSwipeBackLayout.getEnableGesture()) {  5             mSwipeBackLayout.setEnableGesture(false);  6  }  7     } else {  8         if (!mSwipeBackLayout.getEnableGesture()) {  9             mSwipeBackLayout.setEnableGesture(true); 10  } 11  } 12     return super.dispatchTouchEvent(ev); 13 }

 


免責聲明!

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



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