Android中DrawerLayout+ViewPager滑动冲突的解决方法
短信预约 -IT技能 免费直播动态提醒
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
Android中DrawerLayout+ViewPager滑动冲突的解决方法
下载Word文档到电脑,方便收藏和打印~
下载Word文档
相关文章
- Java 中 Playwright 的优缺点分别有哪些?(java中playwright的优缺点有哪些)
- 在 Java 中怎样生成随机正方形坐标?(Java中如何生成随机正方形坐标)
- 如何在 Java 中定义 list 并实现反转?(Java定义list怎样实现反转)
- Java 中 SimpleDateFormat 如何巧妙处理闰年?(Java SimpleDateFormat如何处理闰年)
- Java 中 BeanUtils 工具类常用方法有哪些?(Java BeanUtils工具类常用方法有哪些)
- 如何在 Java 数据分析中应用 ARIMA 模型?(ARIMA模型在Java数据分析中的应用)
- 如何使用 Java 的 Scanner 读取二进制文件?(Java的Scanner如何读取二进制文件)
- 在 Java 中如何进行变量的声明?(Java中怎么声明一个变量)
- 如何将 Java 父类强制转换成子类?(java父类怎么强制转换成子类)
- 在 Java 中,add()函数的最佳实践究竟是什么?(在Java中add()函数最佳实践是什么)
猜你喜欢
Android中DrawerLayout+ViewPager滑动冲突的解决方法
DrawerLayout 是 Android 官方的侧滑菜单控件,而 ViewPager 相信大家都很熟悉了。今天这里就讲一下当在 DrawerLayout 中嵌套 ViewPager 时,要如何解决滑动冲突的问题,效果如下:首先,让我们先
2023-05-31
Android 中SwipeRefreshLayout与ViewPager滑动事件冲突解决方法
Android 中SwipeRefreshLayout与ViewPager滑动事件冲突解决方法
问题描述:开发中发现,SwipeRefreshLayout的下拉刷新,与ViewPager开发的banner的左右滑动事件有一点冲突,导致ban
2022-06-06
Android App中ViewPager所带来的滑动冲突问题解决方法
叙述
滑动冲突可以说是日常开发中比较常见的一类问题,也是比较让人头疼的一类问题,尤其是在使用第三方框架的时候,两个原本完美的控件,组合在一起之后,忽然发现整个世界都不好了。
关于滑动冲突
滑动冲突分类:
滑动冲突,总的来说就是两类。
1.同
2022-06-06
Android listview的滑动冲突解决方法
Android listview的滑动冲突解决方法
在Android开发的过程中,有时候会遇到子控件和父控件都要滑动的情况,尤其是当子控件为listview的时候。就比如在一个ScrollView里有一个listview,这种情况较常见,就
2022-06-06
Android滑动冲突问题的解决方法
叙述滑动冲突可以说是日常开发中比较常见的一类问题,也是比较让人头疼的一类问题,尤其是在使用第三方框架的时候,两个原本完美的控件,组合在一起之后,忽然发现整个世界都不好了。
关于滑动冲突滑动冲突分类
滑动冲突,总的来说就是两类。
1、同方向滑
2022-06-06
Android滑动事件冲突的解决方法
滑动是Android中不可缺少的一部分,多个滑动必然会产生冲突,比如我们最常见的是ScrollView中嵌套了ListView,一般做法是计算出ListView的总高度,这样就不用去滑动ListView了。又比如一个ViewPager嵌套F
2022-06-06
android中view手势滑动冲突的解决方法
Android手势事件的冲突跟点击事件的分发过程息息相关,由三个重要的方法来共同完成,分别是:dispatchTouchEvent、onInterceptTouchEvent和onTouchEvent。public boolean disp
2022-06-06
浅谈Android View滑动冲突的解决方法
引言
这一篇文章我们就通过介绍滑动冲突的规则和一个实例来更加深入的学习View的事件分发机制。
1、外部滑动方向和内部滑动方向不一致
考虑这样一种场景,开发中我们经常使用ViewPager和Fragment配合使用所组成的页面滑动效果,很多
2022-06-06
2024-04-02
android多种滑动冲突的解决方案
一、前言 Android 中解决滑动的方案有2种:外部拦截法 和内部拦截法。 滑动冲突也存在2种场景: 横竖滑动冲突、同向滑动冲突。 所以我就写了4个例子来学习如何解决滑动冲突的,这四个例子分别为: 外部拦截法解决横竖冲突、外部拦截法解决同
2022-06-06
Android滑动冲突的完美解决方案
关于滑动冲突
在Android开发中,如果是一些简单的布局,都很容易搞定,但是一旦涉及到复杂的页面,特别是为了兼容小屏手机而使用了ScrollView以后,就会出现很多点击事件的冲突,最经典的就是ScrollView中嵌套了ListView
2022-06-06
Android滑动冲突的完美解决
Android滑动在智能手机上是必备的操作,但是在开发的时候,你是否和我一样,经常会遇到滑动冲突的问题,比如最简单需要在ListView里面添加一个侧滑动作,这时候冲突时必然的,那我们该如何解决这个问题呢?
先来说一下滑动冲突都有那些,该
2022-06-06
Android中怎么解决嵌套滑动冲突
本篇文章为大家展示了Android中怎么解决嵌套滑动冲突,内容简明扼要并且容易理解,绝对能使你眼前一亮,通过这篇文章的详细介绍希望你能有所收获。一.会产生滑动冲突的情况那么什么时候会产生滑动冲突呢?比如你有个activity,activit
2023-05-30
Android应用中出现滑动冲突如何解决
今天就跟大家聊聊有关Android应用中出现滑动冲突如何解决,可能很多人都不太了解,为了让大家更加了解,小编给大家总结了以下内容,希望大家根据这篇文章可以有所收获。场景一:类似于ViewPager嵌套Fragmnet并且在Fragmnet中
2023-05-31
Android应用中的View出现滑动冲突如何解决
本篇文章给大家分享的是有关Android应用中的View出现滑动冲突如何解决,小编觉得挺实用的,因此分享给大家学习,希望大家阅读完这篇文章后可以有所收获,话不多说,跟着小编一起来看看吧。1、外部滑动方向和内部滑动方向不一致考虑这样一种场景,
2023-05-31
Android中RecyclerView嵌套滑动冲突解决的代码片段
在纵向RecyclerView嵌套横向RecyclerView时,如果纵向RecyclerView有下拉刷新功能,那么内部的横向RecyclerView的横向滑动体验会很差.(只有纯横向滑动时,才能滑动内部的横向RecyclerView,否
2022-06-06
浅谈Android实践之ScrollView中滑动冲突处理解决方案
1. 前言
在Android开发中,如果是一些简单的布局,都很容易搞定,但是一旦涉及到复杂的页面,特别是为了兼容小屏手机而使用了ScrollView以后,就会出现很多点击事件的冲突,最经典的就是ScrollView中嵌套了ListView
2022-06-06
Android应用的中滑动事件出现冲突如何解决
Android应用的中滑动事件出现冲突如何解决?针对这个问题,这篇文章详细介绍了相对应的分析和解答,希望可以帮助更多想解决这个问题的小伙伴找到更简单易行的方法。外部拦截法外部拦截法是指在有点击事件时都要经过父容器,那么在父容器时如果需要拦截
2023-05-31
Android下拉刷新与轮播图滑动冲突解决方案
最近在开发中遇到了这样一个问题,在下拉刷新组件中包含了一个轮播图组件,当左右滑动的图片时很容易触发下拉刷新,如下图所示:如图中红色箭头所示方向切换轮播图,很容易触发下拉刷新。网上查了很多方法,发现都不能很好的解决,于是自己研究了下。
我选用
2022-06-06