`
isiqi
  • 浏览: 16341351 次
  • 性别: Icon_minigender_1
  • 来自: 济南
社区版块
存档分类
最新评论

GestureDetector 和 ScrollView混用后onFling无法正常工作

阅读更多

开始在学习用GestureDetector中的onFling,都正常,可是加入ScrollView后就没法响应了, google了很久,似乎也没个具体的方法,后来看到说用dispatchTouchEvent(MotionEvent ev) 的方法,果然可以,不过帖子没说具体怎么办,查了些文档,试验了几个方法,果然找到了一个,和大家分享下。
具体原因我也不是很明白,可能是因为ScrollView抢占了MotionEvent 事件,所以GestureDetector
捕获不到任何的touch event,自然就不会相应了,方法是@override
public boolean dispatchTouchEvent(MotionEvent ev) {
mGestureDetector.onTouchEvent(ev);
scroll.onTouchEvent(ev);
return super.dispatchTouchEvent(ev);

}
然后发送MotionEvent分别给你的GestureDetector和ScrollView,而不是dispatchMotionEvent,我猜 测dispatch后会被ScrollView先取走,从而GestureDetector就无法响应了,所以这里就都派发出去。
声明,我试验过了,是可以的,不过没有理论上面的支撑,所以哪位知道的还请给个具体些的解释哈

eg1:

从今天解决的一个问题了解到, viewGroup的dispatchTouchEvent方法会在其onInterceptTouchEvent方法之前被触发.

又搜了些资料,个人觉得最受用的总结如下:

首先触发ACTIVITY的dispatchTouchEvent

然后触发ACTIVITY的onUserInteraction

然后触发LAYOUT的dispatchTouchEvent

然后触发LAYOUT的onInterceptTouchEvent

供参考的文章蛮多的,我不再废话了:

http://blog.csdn.net/iefreer/archive/2009/09/23/4586351.aspx

http://blog.csdn.net/ddna/archive/2010/04/11/5473293.aspx

http://blog.csdn.net/ddna/archive/2010/04/05/5451722.aspx

http://blog.csdn.net/G_rrrr/archive/2009/11/24/4861189.aspx

摘自eoeandroid

分享到:
评论

相关推荐

    GestureDetector和SimpleOnGestureListener的使用教程

    GestureDetector和SimpleOnGestureListener的使用教程 GestureDetector是Android SDK中的一种手势识别机制,它可以识别多种手势,例如down、up、scroll、filing等。通过GestureDetector的构造方法,可以将...

    OnFling左右滑动效果

    本篇文章将详细讲解如何实现"OnFling"左右滑动效果,结合`GestureDetector`手势监听和`ViewPager`组件来装左右滑动页面。 首先,我们来理解`OnFling`事件。在Android的`GestureDetector`类中,`OnFling`是处理快速...

    使用onFling方法,实现滑动切换画面的效果

    首先,我们需要了解`onFling`的工作原理。`onFling`是在用户进行快速滑动时被调用的,它接受两个MotionEvent对象作为参数,分别代表滑动开始和结束的位置。通过计算这两个事件之间的速度和方向,我们可以判断用户的...

    利用GestureDetector实现页面滑动Demo

    运行你的应用,测试滑动手势是否正常工作。可能需要调整滑动阈值,以确保手势的灵敏度和稳定性。同时,为了提高用户体验,可以添加一些视觉反馈,如滑动动画或指示器。 总结,`GestureDetector`在Android开发中...

    android ScrollView截图涂鸦

    Android提供了多种方式实现画图,例如使用View的onTouchEvent()方法处理触摸事件,或者使用GestureDetector和Path类。一个简单的涂鸦功能可以这样实现: ```java public class DrawView extends View { private ...

    用ViewFlipper+GestureDetector实现的滑屏demo

    本示例项目“用ViewFlipper+GestureDetector实现的滑屏demo”正是针对这一需求,通过结合`ViewFlipper`和`GestureDetector`来创建一个简单易用的滑动切换界面。下面我们将详细探讨这两个关键组件以及如何将它们结合...

    ScrollView 瀑布流实现

    5. 动态适配:为了适应不同屏幕尺寸和设备,我们需要确保瀑布流布局能在各种情况下正常工作。例如,当设备旋转时,屏幕宽度发生变化,我们可能需要重新计算列数和宽度。 6. 性能优化:由于自定义ScrollView涉及到...

    android GestureDetector依赖onTouchEvent判断左右滑动

    在Android开发中,手势识别是用户交互的重要组成部分,`GestureDetector`类是Android SDK提供的一种用于处理常见手势的工具类。...同时,理解`GestureDetector`的工作机制也有助于提升Android应用的性能和用户体验。

    【Android】滑动屏幕效果GestureDetector、OnGestureListener、ViewFlipper

    3. 在 `onFling()` 方法中,根据滑动速度和方向,决定是向前还是向后切换 `ViewFlipper` 的视图。可以使用 `ViewFlipper.showNext()` 和 `ViewFlipper.showPrevious()` 方法来实现切换。 4. 如果需要,可以添加边界...

    Android编程开发ScrollView中ViewPager无法正常滑动问题解决方法

    通过创建一个自定义的ScrollView子类,并结合GestureDetector,我们可以有效地解决这个问题,使得在ScrollView内的ViewPager或其他需要水平滑动的组件能够正常工作。这种方法在实际开发中非常实用,对于提升应用的...

    自定义GestureDetector实现多点触控

    在Android开发中,手势识别是实现用户交互的关键部分,尤其是多点触控功能,它可以极...通过深入理解MotionEvent和GestureDetector的工作原理,开发者可以自由地设计和实现各种自定义手势,提升应用的可玩性和功能性。

    scrollview图片的缩放处理

    Android提供了GestureDetector和ScaleGestureDetector两个类来处理这类手势。通过 ScaleGestureDetector,我们可以检测到手指间的缩放比例,进而调整ImageView的scaleType或直接改变其宽度和高度来实现图片的缩放。 ...

    利用GestureDetector关闭activity

    在Android开发中,手势识别是用户体验设计的重要组成部分。`GestureDetector`是Android SDK提供的一种用于检测常见触摸手势的...对于Android开发者来说,深入理解和熟练运用`GestureDetector`是非常重要的技能之一。

    Scrollview滑动,并且单个页面也实现放大缩小,滑回来可还原

    滑回来可还原,双击屏幕也能放大”的功能,主要涉及以下几个步骤:自定义ScrollView,嵌套HorizontalScrollView或ViewPager,处理页面的放大缩小逻辑,以及管理页面状态以实现滑动后恢复原状。这个过程需要对Android...

    对应源码---完整版

    `GestureDetector`是Android框架中的一个工具类,主要用于识别和处理常见的触摸屏手势。它可以监听`MotionEvent`事件,然后根据用户触摸屏幕的动作序列判断出对应的手势。`GestureDetector`主要提供了`onDown()`, `...

    ViewFlipper+GestureDetector多页面切换

    在Android开发中,ViewFlipper和GestureDetector是两个非常重要的组件,它们可以帮助开发者实现丰富的用户交互功能,尤其是多页面切换。本教程将深入探讨如何利用这两个工具来创建一个高效的多页面切换体验。 **...

    GestureDetector

    在Android开发中,`GestureDetector`是一个非常重要的工具类,它允许开发者轻松地识别和处理基本的手势操作,如滑动、点击等。本篇文章将深入解析`GestureDetector`类,帮助开发者理解和快速实现复杂的手势需求。 ...

    scrollview的滑动监听底部以及横向滑动

    通过GestureDetector和Scroller类,我们可以实现更精细的滑动手势控制,例如快速滑动时的平滑滚动效果。 总结起来,这个ScrollviewBottomDemo主要展示了如何在ScrollView中嵌套HorizontalScrollView以实现双向滚动...

    gesturedetector demo

    4. `onFling(MotionEvent e1, MotionEvent e2, float velocityX, float velocityY)`:当用户快速滑动并松开手指时调用,速度可以通过`velocityX`和`velocityY`获取。 5. `onLongPress(MotionEvent e)`:当用户长时间...

    通过scrollview响应父类的touch事件

    默认情况下,ScrollView会捕获所有的触摸事件,使得其他组件无法接收到这些事件。 要使ScrollView允许父类或子视图处理触摸事件,我们可以重写ScrollView的onTouchEvent()方法。在该方法中,我们可以通过调用`super...

Global site tag (gtag.js) - Google Analytics