首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

如何管理ACTION_MOVE事件的onTouchListener返回值,比如在调用ACTION_MOVE事件时要更改(true或false)返回值

在Android开发中,通过实现OnTouchListener接口并重写onTouch()方法,可以监听并处理触摸事件。其中,ACTION_MOVE事件表示手指在屏幕上移动。

在管理ACTION_MOVE事件的onTouchListener返回值时,可以根据具体需求来更改返回值,以控制事件的传递和处理。

通常情况下,onTouchListener返回值为true时,表示事件已被处理,并且不再传递给其他View或监听器;返回值为false时,表示事件未被处理,并且会继续传递给其他View或监听器。

在调用ACTION_MOVE事件时更改返回值可以用于以下场景:

  1. 防止误操作:可以在一定条件下更改返回值为false,防止用户在移动过程中发生误操作,如滑动删除列表项时,可以判断滑动距离,如果小于一定阈值,则返回false,不执行删除操作。
  2. 手势识别:可以根据手指移动的方向、距离等信息,判断用户意图并更改返回值,以实现特定的手势识别功能,例如实现拖动、缩放、旋转等操作。
  3. 拦截事件传递:可以通过更改返回值为true来拦截事件的传递,阻止事件继续传递给其他View或监听器,以实现特定的交互效果或功能。

需要注意的是,管理ACTION_MOVE事件的onTouchListener返回值应谨慎使用。在更改返回值时,需要综合考虑用户体验、交互逻辑和功能需求,避免出现意料之外的问题。

作为腾讯云相关产品推荐,可以使用云服务器(ECS)来部署和运行Android应用,提供稳定可靠的计算资源。详细信息请参考腾讯云云服务器(ECS)产品介绍:https://cloud.tencent.com/product/cvm

以上是关于如何管理ACTION_MOVE事件的onTouchListener返回值的答案。

页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

Carson带你学Android:手把手带你深入分析事件分发机制!

后是有返回值的 // 若该控件可点击,那么点击时dispatchTouchEvent的返回值必定是true,因此会导致条件判断成立 //...()时,对于抬起View事件,在调用performClick()时,因为设置了点击事件,所以会回调onClick()。...()、onTouchEvent()、onInterceptTouchEvent())进行重写 或 更改返回值 那么调用的是这3个方法的默认实现:调用下层的方法 & 逐层返回 事件传递情况:(呈U型)...等) 当dispatchTouchEvent()事件分发时,只有前一个事件(如ACTION_DOWN)返回true,才会收到后一个事件(ACTION_MOVE和ACTION_UP) 即如果在执行ACTION_DOWN...时返回false,后面一系列的ACTION_MOVE、ACTION_UP事件都不会执行 从上面对事件分发机制分析知: dispatchTouchEvent()、 onTouchEvent() 消费事件、

81510

Android高级进阶之路【二】十分钟彻底弄明白 View 事件分发机制

后是有返回值的 // 若该控件可点击,那么点击时dispatchTouchEvent的返回值必定是true,因此会导致条件判断成立 //...()时,对于抬起View事件,在调用performClick()时,因为设置了点击事件,所以会回调onClick()。...()、onTouchEvent()、onInterceptTouchEvent())进行重写 或 更改返回值 那么调用的是这3个方法的默认实现:调用下层的方法 & 逐层返回 事件传递情况:(呈U型) 从上往下调用...等) 当dispatchTouchEvent()事件分发时,只有前一个事件(如ACTION_DOWN)返回true,才会收到后一个事件(ACTION_MOVE和ACTION_UP) 即如果在执行ACTION_DOWN...时返回false,后面一系列的ACTION_MOVE、ACTION_UP事件都不会执行 从上面对事件分发机制分析知: dispatchTouchEvent()、 onTouchEvent() 消费事件、

66130
  • 手把手教你读懂源码,View的Touch事件传递流程详细剖析

    Activity的onTouchEvent 方法,同时Activity的dispatchTouchEvent方法返回true; 反之返回false时,这个事件就交给Activity的onTouchEvent...(ev)返回false时,Activity的dispatchTouchEvent方法默认返回false。...dispatchTouchEvent方法片段2 变量intercepted用来标记是否要拦截该Touch事件,true表示拦截,false表示不拦截。...这里需要注意的是,如果intercepted为true,也就是ACTION_MOVE和ACTION_UP事件被拦截了,则cancelChild为true,则会分发一次ACTION_CANCLE事件。...从返回值可以看到,如果重写的OnTouch方法返回true的话,那么result的值就为true,意味着该事件被消费掉了,就不会继续执行后面的onTouchEvent方法了;否则继续执行onTouchEvent

    92970

    Android触摸事件传递(上)

    这里分三步,第一步,如果是触摸开始类型ACTION_DOWN事件,会回调onUserInteraction()方法,所以在项目中可以考虑将一些需要用户开始触摸时就执行的代码放到此方法中;第二步,将触摸事件...事件,然后是几个ACTION_MOVE事件,最后是ACTION_UP事件。...接下来,我们给EventBtn添加onTouchListener,并返回true ?    运行App,查看打印的日志, ?    ...下面我们将onTouchListener的返回值改为false,并重写EventBtn onTouchEvent方法,并返回true。 ?    运行App,点击按钮,查看打印的日志, ?    ...看到源码,很一目了然,框架先调用onTouchListener,如果事件没有被消费掉,再调用onTouchEvent,最后result表示此触摸事件是否被消费,作为返回值。

    1.2K30

    Android触摸事件传递(下)

    ViewGroup触摸事件的传递,我们要先了解onInterceptTouchEvent()方法,这个方法默认返回false,表示ViewGroup是否拦截触摸事件,即如果返回true,拦截触摸事件,则不会将任何触摸事件...可以看到,我们的button没有接收到触摸事件,现在将onInterceptTouchEvent返回值改为false,再次运行App,点击按钮,查看打印日志, ?    ...很明显,我们的按钮的触摸事件和它的父容器的触摸事件,都触发了,这是因为,我们EventBtn的onTouchListener方法和onTouchEvent方法都返回false,没有消费触摸事件,事件会向上继续传递...那么如果ViewGroup不拦截触摸事件,事件在它的子Views中又是如何传递的呢?    ...同样,我们可以利用代码来验证我们上面的结论,我们打开EventBtn类中dispatchTouchEvent方法中的日志打印代码,同时我们将btn3的onTouchListener方法返回true,消费掉触摸事件

    1.1K10

    View,ViewGroup的Touch事件的分发机制

    //ACTION_UP才会走到这里, 假如在ACTION_MOVE或者ACTION_UP拦截的 //Touch事件, 将ACTION_CANCEL派发给target,然后直接返回true...上面的ViewGroup的Touch事件分发就告一段落先,因为这里要调用TextView(也就是View)的dispatchTouchEvent()方法,所以我们先分析View的dispatchTouchEvent...接口的onTouch()方法的返回值了,如果调用了setTouchListener()设置OnTouchListener,并且onTouch()方法返回true,View的dispatchTouchEvent...我觉得OnTouchListener接口是对处理Touch事件的屏蔽和扩展作用吧,屏蔽作用我就不举例介绍了,看上面的源码就知道了,我就说下扩展吧,比如我们要打印View的Touch的点的坐标,我们可以自定义一个...重写了onTouchEvent(),所以这里还是调用CustomLayout的onTouchEvent(), 这个方法返回false, 不消费Touch事件,所以不会在触发ACTION_MOVE,ACTION_UP

    1.2K70

    Android 事件分发机制

    用来进行事件分发和传递的,返回true的时候一定是自己去消费,返回false有可能是自己消费也有可能是传递给上一级的OnTouchEvent方法, super就传递给其他的view。...1.6 onClick 是一个点击事件,是在onTouchEvent的up事件里面执行的,它的优先级是最低,如果在onTouchEvent或OnTouchListener的onTouch方法如果返回true...箭头上的值表示该方法的返回值,消费框表示事件被消费掉,不会向下或者向上传递,接下来我们写代码运行一下看效果。...的点击事件响应怎么办,按照上面的andorid事件分发流程图,方法多了,我们可以在不同的阶段进行控制,不让事件向下分发,但我们试试onTouch()这个方法,此方法默认返回false,我们现在让它返回true...先让系统以为view的onTouchEvent要消费事件:在view的onTouchEvent中return true,结果如下: ?

    1.7K21

    Art of Android Development Reading Notes 3

    若返回值为True事件会传递到自己的onTouchEvent(); 若返回值为False传递到子view的dispatchTouchEvent()。...若返回值为True,事件由自己处理,后续事件序列让其处理; 若返回值为False,自己不消耗事件,向上返回让其他的父容器的onTouchEvent接受处理。...的优先级比onTouchEvent要高 如果给一个view设置了OnTouchListener,那么OnTouchListener中的onTouch方法会被回调。...这时事件如何处理还要看onTouch的返回值,如果返回false,那么当前view的onTouchEvent方法会被调用;如果返回true,那么onTouchEvent方法将不会被调用。...事件除外,即当面对ACTION_DOWN事件时,ViewGroup总是会调用自己的onInterceptTouchEvent方法来询问自己是否要拦截事件。

    43810

    一文读懂Android View事件分发机制

    上面代码我们给button设置了OnTouchListener并重写了onTouch方法,方法返回值默认为false。如果这里我们返回true,那么你会发现onclick方法不执行了!!!What?...我们重点需要了解这个分发的过程,那么系统是如何去判断这个事件要给哪个View,也就是说是如何进行分发的呢?...特别注意,这是ViewGroup特有的方法,View并没有拦截方法 返回值:是否拦截事件传递,返回true表示拦截了事件,那么事件将不再向下分发而是调用View本身的onTouchEvent方法。...返回值:返回true表示事件被消费,本次的事件终止。返回false表示事件没有被消费,将调用父View的onTouchEvent方法 上面的三个方法可以用以下的伪代码来表示其之间的关系。 ?...当没有设置OnTouchListener或者设置了OnTouchListener但是onTouch方法返回false则会调用View自己的onTouchEvent方法。

    35720

    笔记(四)——事件分发机制

    image 一个事件是指:一个ACTION_DOWN事件或ACTION_MOVE事件或ACTION_UP事件等。它们合称同一个事件序列。...(4)、onInterceptTouchEvent拦截方法,类似一个开关,当return true时该事件则被当前控件消费了,拦截该事件,不再往下传递了;而return false或return super.xxxxxx...down事件流程2 重要注意: (1)、如果一个View或ViewGroup的onTouchEvent不消耗ACTION_DOWN事件返回了false,那么它就不会再接收同一事件序列中的ACTION_MOVE...View的longClickable属性默认都为false,clickable属性要分情况,比如Button的clickable属性默认为true,而TextView的clickable属性默认为false...ACTION_UP事件,这里必须要返回false,假设事件交由子元素处理,如果父容器在ACTION_UP时返回了true,就会导致子元素无法接收到ACTION_UP事件,这个时候子元素中的onClick

    1.2K30

    重新复习Android View事件分发

    ContentView中 触摸事件的类型 触摸事件对应的是MotionEvent类,事件的类型主要有如下三种: ACTION_DOWN ACTION_MOVE(移动的距离超过一定的阈值会被判定为ACTION_MOVE...拦截(onInterceptTouchEvent):方法返回值为true表示拦截这个事件并交由自身的onTouchEvent方法进行消费;返回false表示不拦截,需要继续传递给子视图。...消费(onTouchEvent):方法返回值为true表示当前视图可以处理对应的事件;返回值为false表示当前视图不处理这个事件,它会被传递给父视图的onTouchEvent方法进行处理。...因为一旦一个元素拦截了此事件,那么同一个事件序列内的所有事件都会直接交给它处理(即不会再调用这个View的拦截方法去询问它是否要拦截了,而是把剩余的ACTION_MOVE、ACTION_DOWN等事件直接交给它来处理...View的longClickable属性默认都为false,clickable属性要分情况,比如Button的clickable属性默认为true,而TextView的clickable默认为false

    36220

    笔记——事件分发机制(四)

    3.因此总结,在onTouchEvent()中MotionEvent.ACTION_DOWN的返回值处理是关键;当它返回return true无论后面如何处理,它都是已经处理消费了事件,不会再往上向父容器传递事件...这条也很好理解,就是说当一个View决定拦截一个事件后,那么系统会把同一个事件序列内的其他方法都直接交给它来处理,因此就不用再调用这个View的onInterceptTouchEvent去询问它是否要拦截了...View的longClickable属性默认都为false,clickable属性要分情况,比如Button的clickable属性默认为true,而TextView的clickable属性默认为false...ACTION_UP事件,这里必须要返回false,假设事件交由子元素处理,如果父容器在ACTION_UP时返回了true,就会导致子元素无法接收到ACTION_UP事件,这个时候子元素中的onClick...方法在ACTION_UP时返回了false。

    82940

    事件分发工作流程

    onInterceptTouchEvent 该方法只存在于viewGroup中,当一个事件需要被分发到子view时,viewGroup会调用此方法检查是否要进行拦截。...因此下面的工作流程中都是指down事件的分发 ,而不是ACTION_MOVE或ACTION_UP的分发。...view会先检查是否有onTouchListener且返回值是否为true,如果是true则直接返回,否则调用onTouchEvent方法来处理事件。 基于上述的关系,可以得到下面的工作流程图: ?...那么当viewGroup掐断事件流之后,事件的走向又是如何的呢?参看下图:(注意,这里不讨论多指操作的情况,仅讨论单指操作的move或up事件被viewGroup拦截的情况) ?...消费的原则,如果一个view消耗了down事件却在接下来的move或up事件返回了false,那么此事件不会给上层的viewGroup处理,而是直接返回false。

    74010

    Touch事件实现View拖动

    注意: onTouch和onClick事件冲突问题:   当同时实现了Touch和Click事件时,会发生冲突,如何避免?在我们的onTouchListener的监听方法会返回一个boolean。...当它为false时,就会触发Click事件,当它为true时,便不会触发。我们希望在点击的时候触发点击事件,在拖动的时候实现移动效果的Touch事件。   ...那么,我们定义一个boolean key=false;在ACTION_DOWN里,使key=false。而在ACTION_MOVE中使key=true,最后返回key即可。...这样做会出现很难触发点击事件。拖动事件太容易触发。所以我们需要加点限制。在ACTION_MOVE中我们获得X、Y移动的距离。那么我们判断当期中一个的移动距离大于1的时,才执行key=true。...不过需要在UI控件全部加载完成之后才能调用,不能在onCreate()甚至onResum()中调用,否则全是0。正确的姿势是在touch时间或者click事件触发的时候调用。

    1.5K10

    android 触摸屏事件_android studio按钮点击事件

    一个Action_DOWN, n个ACTION_MOVE, 1个ACTION_UP,就构成了Android中众多的事件。...对于ViewGroup类的控件,有一个很重要的方法,就是onInterceptTouchEvent(),用于处理事件并改变事件的传递方向,它的返回值是一个布尔值,决定了Touch事件是否要向它包含的子View...而方法onTouchEvent(),用于接收事件并处理,它的返回值也是一个布尔值,决定了事件及后续事件是否继续向上传递,这个方法是从子View向父View传递。...返回值为true表示事件被正确接收和处理了,返回值为false表示事件没有被处理,将继续传递下去。...如果某View的onTouchEvent返回了false,则DOWN事件继续向其父ViewGroup类的onTouchEvent传递;如果返回了true,则后续事件会直接传递给其onTouchEvent

    2.1K30

    结合源码,重温 Android View 的事件处理知多少 ?

    内的操作 经过上面分析,我们可以知道: onTouch 事件必须返回 true 时,才会执行该方法块。...我们发现 setOnTouchListener 的 onTouch 默认返回值是 false( 不满足返回值为 true ), 这就表明他会继续去执行下一个代码块: if (!...result && onTouchEvent(event)) { result = true; } 执行这个 if 语句的过程中。首先调用了 onTouchEvent 方法。...; } }); 接着,我们发现 OnLongClick 是有返回值的,如果返回值是 false 还会接着去触发 onClick 事件,如果返回 true 的话,那么这个长按事件就直接被消费掉了(...2.4 总结 100mm 时为点击,500mm 时为长按,接着触发长按事件。 再看长按事件的返回值,如果时 true 就结束。

    35040

    android view事件分发机制

    ; 已经解决一个常见的问题:View的onTouchListener和onTouchEvent的调用关系,相信大家应该已经明白了~let's go;继续往下。  ...;           }   return false;       }   代码还是比较长的, 10-15行,如果当前View是Disabled状态且是可点击则会消费掉事件(return true...-115ms),这个115ms刚好时检测额PREPRESSED时间;也就是用户从DOWN触发开始算起,如果500ms内没有抬起则认为触发了长按事件: 1、如果此时设置了长按的回调,则执行长按时的回调,...的判断,如果OnTouchListener不为null且返回true,则表示事件被消费,onTouchEvent不会被执行;否则执行onTouchEvent。...2、onTouchEvent中的DOWN,MOVE,UP DOWN时: a、首先设置标志为PREPRESSED,设置mHasPerformedLongPress=false ;然后发出一个115ms后的

    1.2K60

    Android面试老生常谈的 View 事件分发机制,看这一篇就够了!

    这个方法能够影响父View是否拦截事件,true 表示父 View 不拦截事件,false 表示父 View 拦截事件 我们先来看一张图。...仔细看的话,图分为3层,从上往下依次是Activity、ViewGroup、View 事件从左上角那个白色箭头开始,由 Activity 的 dispatchTouchEvent 进行分发 箭头的上面字代表方法返回值...,(return true、return false、return super.xxxxx(),super 的意思是调用父类实现。)...如果dispatchTouchEvent返回 false ,则回传给父View的onTouchEvent事件处理; 如果dispatchTouchEvent返回super的话,默认会调用自己的onInterceptTouchEvent...父 View不要拦截事件,这样保证子 View 能够接受到 Action_move 事件,再在 Action_move 动作中根据自己的逻辑是否要拦截事件,不需要拦截事件的话再交给 父 View 处理

    68520

    View 事件分发机制,看这一篇就够了

    这个方法能够影响父View是否拦截事件,true 表示父 View 不拦截事件,false 表示父 View 拦截事件 我们先来看一张图。...箭头的上面字代表方法返回值,(return true、return false、return super.xxxxx(),super 的意思是调用父类实现。)...目前所有的图的事件是针对ACTION_DOWN的,对于ACTION_MOVE和ACTION_UP我们最后做分析。...如果dispatchTouchEvent返回 false ,则回传给父View的onTouchEvent事件处理; 如果dispatchTouchEvent返回super的话,默认会调用自己的onInterceptTouchEvent...父 View不要拦截事件,这样保证子 View 能够接受到 Action_move 事件,再在 Action_move 动作中根据自己的逻辑是否要拦截事件,不需要拦截事件的话再交给 父 View 处理

    74940
    领券