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 }
时间: 2024-10-12 02:59:38