DrawerLayout 是 Android 官方的侧滑菜单控件,而 ViewPager 相信大家都很熟悉了。今天这里就讲一下当在 DrawerLayout 中嵌套 ViewPager 时,要如何解决滑动冲突的问题,效果如下:
首先,让我们先来解决 DrawerLayout 和 ViewPager 的侧滑事件冲突。当 DrawerLayout 中嵌套 ViewPager 时,侧滑默认是执行 DrawerLayout 的侧滑事件,因为 Android 的事件分发是从 外层 ViewGroup 向里逐级传递到 View 的。
所以会先执行 DrawerLayout 的 onTouchEvent 方法:
@Overridepublic boolean onTouchEvent(MotionEvent ev) { mLeftDragger.processTouchEvent(ev); mRightDragger.processTouchEvent(ev); final int action = ev.getAction(); boolean wantTouchEvents = true; switch (action & MotionEventCompat.ACTION_MASK) { case MotionEvent.ACTION_DOWN: { final float x = ev.getX(); final float y = ev.getY(); mInitialMotionX = x; mInitialMotionY = y; mDisallowInterceptRequested = false; mChildrenCanceledTouch = false; break; } case MotionEvent.ACTION_UP: { final float x = ev.getX(); final float y = ev.getY(); boolean peekingOnly = true; final View touchedView = mLeftDragger.findTopChildUnder((int) x, (int) y); if (touchedView != null && isContentView(touchedView)) { final float dx = x - mInitialMotionX; final float dy = y - mInitialMotionY; final int slop = mLeftDragger.getTouchSlop(); if (dx * dx + dy * dy < slop * slop) { // Taps close a dimmed open drawer but only if it isn't locked open. final View openDrawer = findOpenDrawer(); if (openDrawer != null) { peekingOnly = getDrawerLockMode(openDrawer) == LOCK_MODE_LOCKED_OPEN; } } } closeDrawers(peekingOnly); mDisallowInterceptRequested = false; break; } case MotionEvent.ACTION_CANCEL: { closeDrawers(true); mDisallowInterceptRequested = false; mChildrenCanceledTouch = false; break; } } return wantTouchEvents;}
免责声明:
① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。
② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341
软考中级精品资料免费领
- 历年真题答案解析
- 备考技巧名师总结
- 高频考点精准押题
- 资料下载
- 历年真题
193.9 KB下载数260
191.63 KB下载数245
143.91 KB下载数1139
183.71 KB下载数640
644.84 KB下载数2752
相关文章
发现更多好内容猜你喜欢
AI推送时光机Android App中ViewPager所带来的滑动冲突问题解决方法
后端开发2022-06-06
Android listview的滑动冲突解决方法
后端开发2022-06-06
Android滑动冲突问题的解决方法
后端开发2022-06-06
Android滑动事件冲突的解决方法
后端开发2022-06-06
android中view手势滑动冲突的解决方法
后端开发2022-06-06
浅谈Android View滑动冲突的解决方法
后端开发2022-06-06
ViewPager2滑动冲突的解决方法
后端开发2024-04-02
android多种滑动冲突的解决方案
后端开发2022-06-06
Android滑动冲突的完美解决方案
后端开发2022-06-06
Android滑动冲突的完美解决
后端开发2022-06-06
Android中怎么解决嵌套滑动冲突
后端开发2023-05-30
Android应用中出现滑动冲突如何解决
后端开发2023-05-31
Android应用中的View出现滑动冲突如何解决
后端开发2023-05-31
Android中RecyclerView嵌套滑动冲突解决的代码片段
后端开发2022-06-06
浅谈Android实践之ScrollView中滑动冲突处理解决方案
后端开发2022-06-06
Android应用的中滑动事件出现冲突如何解决
后端开发2023-05-31
Android下拉刷新与轮播图滑动冲突解决方案
后端开发2022-06-06
咦!没有更多了?去看看其它编程学习网 内容吧