`
桥下一粒砂
  • 浏览: 209644 次
  • 性别: Icon_minigender_1
  • 来自: 深圳
社区版块
存档分类
最新评论

父View的TouchEvent自执行后再分配/派发的处理

阅读更多
这两天写了一个自定义滑动翻页,类似主页切换效果的组件。

动态加载到组件中的包含Button,Checkbox,ImageButton,这些组件都绑定OnClickListener。

在TextView组件和空白处滑动时,可以切换页面,一旦在Button,CheckBox等上面滑动时,就无法执行切换页面了。

这让我很郁闷。Google+百度了很久,了解Android的Touch事件处理流程。终于得到解决方法:

自执行,再派发。

以下代码是我组件的代码,Override了onInterceptTouchEvent的方法。关键是先执行了本类的TouchEvent处理,再分派给子View。


@Override
public boolean onInterceptTouchEvent(MotionEvent ev){

      if(mIsTouched && mIsDragging){
	    return true;
	}else{
		 //这是我组件的处理TouchEvent的方法
	        onFlipperTouchEvent(ev);
                //释放TouchEvent
	       return super.onInterceptTouchEvent(ev);
	}
       
}



mIsTouched 和 mIsDragging 通过GestureDetector判断,不在此讨论。

特记录下来,希望给遇到同样问题的人一个解决思路。
分享到:
评论

相关推荐

    Android源代码:android触摸事件_TouchEvent

    Android的触摸事件会沿着View层次结构自顶向下传递,从Activity到Window,再到布局及各个子View。每个View都有机会处理这些事件,通过重写`onTouchEvent()`方法。如果一个View未完全消耗事件(即没有返回`true`),...

    Android TouchEvent事件传递

    2. 拦截事件:通过重写ViewGroup的onInterceptTouchEvent(),可以改变默认行为,让父View拦截并处理事件,而不再将事件传递给子View。 3. 事件消耗:在onTouchEvent()中,通常需要根据ACTION_DOWN、ACTION_UP等事件...

    Android TouchEvent事件传递机制

    在Android系统中,TouchEvent事件处理是用户界面交互的核心部分,它涉及到UI组件的触摸响应,是应用程序接收并处理用户触摸屏幕动作的主要方式。本篇将深入解析Android的TouchEvent事件传递机制,帮助开发者更好地...

    android touchevent 例子 Demo

    `dispatchTouchEvent`负责分发事件,而`onInterceptTouchEvent`允许父View拦截并处理事件,而不是将其传递给子View。 在`HelloTouchEvent`的示例中,我们可能看到如何利用这些方法来改变默认的事件分发行为。比如,...

    普通view和Viewgroup中touchEvent的传递简单demo

    只是一套自定义的view和Viewgroup,都是很简单的代码,为了避免麻烦就上传上来了,看touchevent传递的时候可以在dispatchTouchevent和touchevent中打上断点,调试就行了. 只有dispatchTouchEvent和TouchEvent

    cocos2d-x学习笔记(10)--touchEvent.rar

    5. **事件派发模式**:cocos2d-x有两种事件派发模式:`DispatchMode::ALL_AT_ONCE`(同时派发所有触摸事件)和`DispatchMode::ONE_BY_ONE`(一次派发一个触摸事件)。默认模式是`DispatchMode::ONE_BY_ONE`,在这种...

    TouchEvent:解释Android TouchEvent的流程。http

    在Android开发中,TouchEvent是处理用户触摸屏幕交互的核心机制。本文将深入解析Android TouchEvent的工作流程,帮助开发者更好地理解和利用这一关键功能。 Android系统通过MotionEvent类来封装触摸事件的信息,...

    android事件处理

    事件会沿着View层次结构自顶向下传递,即从父View到子View,这个过程称为事件分发。如果某个View不处理特定事件,事件会继续传递给其子View,直至被处理或被消费。 在描述中提到的"TouchEventActivity"可能是一个...

    flash 多触点 同时拖动多个元件移动

    这个例子中,我们创建了一个名为`DraggableObject`的类,它继承自`Sprite`并监听`TouchEvent`。当触摸开始时,记录初始触摸位置;当触摸移动时,根据当前触摸位置更新元件的位置;当触摸结束时,重新添加移动事件...

    自定义view-画板

    第二个自定义View可能是用来处理触摸事件(TouchEvent)和手势识别的。在Android中,通过重写onTouchEvent()方法,我们可以捕获用户的触摸动作,包括ACTION_DOWN、ACTION_MOVE和ACTION_UP等。在这个过程中,我们需要...

    View的onInterceptTouchEvent(MotionEvent ev)和dispatchTouchEvent(MotionEvent ev) 解析

    但是,有时候我们可能希望父View能捕获这些事件,例如在滑动菜单或者抽屉布局中,就需要父View拦截并处理触摸事件。 `onInterceptTouchEvent` 返回一个布尔值,表示是否拦截当前的MotionEvent。如果返回true,那么...

    测试Android事件分发机制的demo

    父View在这里有机会决定事件是应该自己处理还是传递给子View。默认情况下,父View会尝试将事件传递给子View。 3. **onInterceptTouchEvent()** 父View可以通过重写`onInterceptTouchEvent()`来拦截事件。如果返回`...

    TouchEvent的dispatchTouchEvent事件分发流程图

    TouchEvent的dispatchTouchEvent事件分发流程图

    android测试Touch事件DEMO

    `Test_TouchEvent`可能是这个DEMO中的主要测试类,它可能包含了一个自定义的View或者Activity,用于演示触摸事件的监听和处理。在这个类中,开发者可能会重写`onTouchEvent(MotionEvent event)`方法,通过`event.get...

    通过手势实现的缩放处理.zip

    4. **TouchEvent的传递**:在多点触控环境中,父View需要正确处理并转发TouchEvent给子View。`onInterceptTouchEvent(MotionEvent ev)`和`onTouchEvent(MotionEvent ev)`这两个方法在事件传递过程中起关键作用。在...

    安卓基本知识值时间处理机制学习源代码

    1. **事件传递链(Event Dispatching Chain)**:当一个事件发生时,它会在View层次结构中从父到子进行传递,直到某个View消耗掉事件。这个过程也称为事件分发。 2. **触摸事件(TouchEvent)**:在安卓中,触摸...

    View的onInterceptTouchEvent(MotionEvent ev)和dispatchTouchEvent(MotionEvent ev)

    如果在分发过程中,父View组想要处理这个事件而不是让子View处理,它可以在`onInterceptTouchEvent`中返回`true`,表示拦截了事件。如果返回`false`,则事件将继续传递给子View。注意,这个方法只在 ViewGroup 中...

    starling使用范例

    这里的`YourEntryClass`是你应用的主类,通常继承自`starling.display.Sprite`,它会作为舞台的根节点。 接下来,加载资源。Starling使用`Texture`对象来表示图像,你可以通过`TextureAtlas`加载多个图像。在`demo`...

    Android事件模型之interceptTouchEvnet ,onTouchEvent关系正解

    如果这个方法返回`true`,那么事件会被父View拦截,`onTouchEvent`不会被调用,事件由父View处理。 - 如果`onInterceptTouchEvent`返回`false`,事件将传递给子View,并调用子View的`onTouchEvent`。如果子View的`...

    Android的Touch事件处理机制介绍

    6. 父View若决定处理事件或子View未处理事件,它将按照普通View的方式处理;否则,它不处理事件,仅负责事件分发。 7. 当父View在onInterceptTouchEvent中拦截事件,事件将直接由父View处理,而不会再次调用...

Global site tag (gtag.js) - Google Analytics