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

MotionEvent中的ACTION_CANCEL和ACTION_UP有什么区别?

在Android开发中,MotionEvent是用于处理触摸事件的类。其中,ACTION_CANCEL和ACTION_UP是MotionEvent的两个常量,表示不同的触摸事件类型。

  1. ACTION_CANCEL:表示触摸事件被取消。当父容器拦截了触摸事件或者发生了意外情况(如突然来电),当前的触摸事件序列会被取消,即触摸事件的处理被中断。ACTION_CANCEL通常在ACTION_DOWN之后触发,用于通知应用程序取消当前的触摸操作。
  2. ACTION_UP:表示触摸事件结束。当用户松开手指时,会触发ACTION_UP事件。它标志着触摸事件的结束,可以用于执行最终的操作,例如处理点击事件或手势识别。

区别:

  • ACTION_CANCEL是触摸事件被取消,而ACTION_UP是触摸事件结束。
  • ACTION_CANCEL通常在ACTION_DOWN之后触发,而ACTION_UP在用户松开手指时触发。
  • ACTION_CANCEL用于通知应用程序取消当前的触摸操作,而ACTION_UP用于执行最终的操作。

推荐的腾讯云相关产品和产品介绍链接地址:

腾讯云提供了丰富的云计算产品和服务,包括云服务器、云数据库、云存储等。您可以访问腾讯云官方网站了解更多详情:https://cloud.tencent.com/

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

相关·内容

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

4.ACTION_CANCEL 当前 View 手势被打断,后续不会再收到任何事件 从 ACTION_DOWN 开始到 ACTION_UP/ACTION_CANCEL 结束我们称为一个事件序列 正常情况下...-> ACTION_UP 某些情况下,我们可能会没有收到 ACTION_UP 事件,是收到 ACTION_CANCEL 事件。...对于一些复位或者重置操作,我们应该在 ACTION_UP ACTION_CANCEL 里面同时进行处理。...dispatchTouchEvent onTouchEvent框里个【true---->消费】字,表示意思是如果方法返回true,那么代表事件就此消费,不会继续往别的地方传了,事件终止。...目前所有的图事件是针对ACTION_DOWN,对于ACTION_MOVEACTION_UP我们最后做分析。

66320
  • View事件分发机制源码解析

    ACTION_UP 等事件一些重置状态 if (canceled || actionMasked == MotionEvent.ACTION_UP...= null 情况。 mFirstTouchTarget 不为空的话,代码里处理都是除了 ACTION_DOWN 事件,也就是 ACTION_MOVE ACTION_UP 事件。...这样,以后事件就完全移交给 ViewGroup 了,没子 View 什么事了。 最后就是对 ACTION_CANCEL ACTION_UP 事件一些状态重置。...当然也有一些不完善地方,比如事件是怎样传递给 Activity 在本文中没有涉及到,想了解同学可以看下这篇《AndroidMotionEvent来源ViewRootImpl》,任大神作品。...References AndroidMotionEvent来源ViewRootImpl Android 事件分发机制源码攻略(二) —— ViewGroup篇

    36740

    Android进阶——多点触控

    单点触控 Android 触摸事件处理核心方法为onTouchEvent(MotionEvent event) onTouchEvent(MotionEvent event) 方法可以接收到完整触摸事件流...下面是一个完整事件流例子: ACTION_DOWN ---> ACTION_MOVE ---> ....... ---> ACTION_MOVE ---> ACTION_UP (或者ACTION_CANCEL...ACTION_DOWN: 手指按下事件, 一次事件流只触发1次,是事件起始标志 ACTION_MOVE: 手指移动事件 ACTION_UP : 手指抬起 ACTION_CANCEL:...通过这个两个函数可以获取当前手指在屏幕位置。 ACTION_MOVE 时不断获取最新手指位置,就能够判断手指移动方向距离,从而更新对应view位置。...每个触摸到view手指都会包含 index id数据。 index id 变化规则如下: 1,index 从0 开始分配 2,index 在一个事件流是会变化

    1.1K30

    Android View事件分发机制

    触摸事件 在用户触摸屏幕时,总是离用户触摸点最近控件来响应触摸事件,如果最近控件没有实现响应事件,那这个事件会不断向父类传递,直到view响应时,就会将触摸反馈事件流传递给这个viewonTouchEvent...2.触摸反馈事件流是以ACTION_DOWN开始,以ACTION_UP或者ACTION_CANCEL结束一组事件,例如: 按钮点击事件触摸反馈事件流 ACTION_DOWN -> ACTION_MOVE...-> ACTION_MOVE -> ACTION_UP 被中止事件触摸反馈事件流 ACTION_DOWN -> ACTION_MOVE -> ACTION_CANCEL 事件拦截 现在有如下这样一种场景...tips: 1. onTouchEvent() 函数只有ACTION_DOWN时返回true才是有效,若ACTION_DOWN没有返回true,那么后续事件流也就不会再进来了,这个view也就无缘了...1. onInterceptEvent() 函数可以在最开始ACTION_DOWN时返回false,然后再之后事件流来判断是否需要开始拦截本次事件流,也就是说可以在之后事件流过程来判断是否达到触发拦截条件

    35110

    Android自定义系列——14.MotionEvent

    MotionEvent在android触摸事件起到了很重要作用,本文主要介绍MotionEvent,简要介绍触摸事件,主要包括 单点触控、多点触控、鼠标事件 以及 getAction() getActionMasked...Android 将所有的输入事件都放在了 MotionEvent : 版本号 更新内容 Android 1.0 (API 1 ) 支持单点触控轨迹球事件。...手指落下(ACTION_DOWN) -> 多次移动(ACTION_MOVE) -> 离开(ACTION_UP) 本次事例 ACTION_MOVE 多次触发。...ACTION_UP 最后一个 手指 离开屏幕 时触发。 ACTION_POINTER_DOWN 非主要手指按下(即按下之前已经手指在屏幕上)。...(参数 pointerIndex 就是 actionIndex) 获取压力(接触面积大小) MotionEvent支持获取某些输入设备(手指或触控笔)与屏幕接触面积压力大小,主要有以下方法:

    1.8K10

    Android触屏事件MotionEvent详解

    在一个触屏事件序列多个事件,同一个pointer拥有相同id,但是index可以不同。 这里只讨论MotionEvent关于touch event部分。...在MotionEvent定义了一系列int常量来表示各种预定义操作类型。列举如下。...ACTION_CANCEL 这个事件比较特殊,它上述事件都不一样,上述事件都是由用户在屏幕上操作所触发,但是这个事件是由系统自动产生。当一个事件序列需要提前终止时候由系统自动产生此事件。...结合上面触屏事件序列描述可以知道,一个正常触屏事件序列一定是以ACTION_DOWN为开始,以ACTION_UP为结束,中间可以0个或多个ACTION_MOVE, 如果是多点触摸,中间还会有若干次...一个提前终止触屏事件序列一定是以ACTION_DOWN为开始,以ACTION_CANCEL为结束,中间可以0个或多个ACTION_MOVE, 如果是多点触摸,中间还会有若干次ACTION_POINTER_DOWN

    3.6K00

    Android触摸事件_android设置按钮点击事件

    在Android系统,手势识别是通过 .OnGestureListener接口来实现,利用,摸屏Fling、Scroll等方法可以进行滑动或翻页效果实现;触摸屏相关事件,是通过onTouchListener...我们可以通过MotionEventgetAction()方法来获取Touch事件类型,包括 ACTION_DOWN, ACTION_MOVE, ACTION_UP, ACTION_CANCEL。...ACTION_DOWN是指按下触摸屏,ACTION_MOVE是指按下触摸屏后移动受力点,ACTION_UP则是指松开触摸屏; 当我们捕捉到Touch操作时候,如何识别出用户Gesture?...这里我们需要GestureDetector.OnGestureListener接口帮助,实现如下例子: @Override public boolean onTouch(View v, MotionEvent...如发现本站涉嫌侵权/违法违规内容, 请发送邮件至 举报,一经查实,本站将立刻删除。

    3.2K20

    简述android触屏事件处理_移动端touch事件哪些

    在一个触屏事件序列多个事件,同一个pointer拥有相同id,但是index可以不同。 这里只讨论MotionEvent关于touch event部分。...在MotionEvent定义了一系列int常量来表示各种预定义操作类型。列举如下。...ACTION_CANCEL 这个事件比较特殊,它上述事件都不一样,上述事件都是由用户在屏幕上操作所触发,但是这个事件是由系统自动产生。当一个事件序列需要提前终止时候由系统自动产生此事件。...结合上面触屏事件序列描述可以知道,一个正常触屏事件序列一定是以ACTION_DOWN为开始,以ACTION_UP为结束,中间可以0个或多个ACTION_MOVE, 如果是多点触摸,中间还会有若干次...一个提前终止触屏事件序列一定是以ACTION_DOWN为开始,以ACTION_CANCEL为结束,中间可以0个或多个ACTION_MOVE, 如果是多点触摸,中间还会有若干次ACTION_POINTER_DOWN

    1.3K10

    Android事件分发原理分析

    事件,当然如果你没抬手,只是吧触碰点移动出了控件范围,那应该是发生ACTION_CANCEL事件(这个有些手机可能不会发生ACTION_CANCEL事件而是发生ACTION_UP事件),这才是一个完整触摸动作...image.png MotionEvent.ACTION_UP传递 上面提到,一个单点完整触摸动作是从ACTION_DOWN开始,并以ACTION_UP或者ACTION_CANCEL结束ACTION_UP...方法开始往下逐层传递,这边可通过对比ButtonTextView对于ACTION_UP不同处理作比较: Button与TextView对于ACTION_UP区别,Buton是可点击isClickable...ACTION_UP传递结果打印: 12-06 00:10:27.258 13203-13203/?...事件,这些都是在onTouchEventACTION_UP时候处理判断,因此如果OnTouchListener这里把触摸事件拦截了,那OnClickListenerOnLongClickListener

    1.2K30

    View,ViewGroupTouch事件分发机制

    == MotionEvent.ACTION_CANCEL);   if (isUpOrCancel) {   //如果是ACTION_UP或者ACTION_CANCEL, 将disallowIntercept...才会走到这里, 假如在ACTION_MOVE或者ACTION_UP拦截 //Touch事件, 将ACTION_CANCEL派发给target,然后直接返回true //表示消费了此Touch...是对onTouchEvent()方法一个屏蔽扩展作用,假如你不一样理解,你也可以告诉我下,这里就不纠结这个了。...Touch事件,而一般View既不是clickable也不是longclickable(即不会消费Touch事件,只会执行ACTION_DOWN而不会执行ACTION_MOVEACTION_UP...ACTION_DOWN执行,点击事件是在ACTION_UP执行,要想执行长按事件,这个View必须是longclickable, 也许你会纳闷,一般View不是longClickable为什么也会执行长按事件呢

    1.2K70

    Android触摸事件传递(下)

    上一篇,我说明了AndroidActivityView触摸事件传递流程,现在我们来继续学习MotionEvent在View容器ViewGroup传递过程。  ...很明显,我们按钮触摸事件和它父容器触摸事件,都触发了,这是因为,我们EventBtnonTouchListener方法onTouchEvent方法都返回false,没有消费触摸事件,事件会向上继续传递...我们也很好读懂,如果事件是ACTION_UP或者ACTION_CANCEL,表示触摸结束,但是还有第三种是 如果触摸事件是ACTION_DOWN 并且result==false,同样停止嵌套触摸事件传递...,即后面的ACTION_MOVE,ACTION_UP都不会触发,因为在我们上面的例子,没有消费触摸事件,返回都是false,所以只触发了ACTION_DOWN事件。...关于AndroidViewGroup触摸事件传递就介绍到这里,难免很多地方有错误纰漏,但是我能够坚持把这些写出来,我觉得我已经一点小小提高了,很开心~~

    1K10

    JavaScript == === 什么区别

    == ===运算符一直是热门讨论的话题。让我们看看这两者何不同。 双等号(==) 符号检查松散相等,而三等号(===) 符号检查严格相等。...;//Output:false 示例 1 在示例 1 ,您可以看到使用两个等号 (==) 返回 true,因为字符串“2”在进行比较之前已转换为数字2,但使用 (===) 三个等号可以看出类型是不同...示例 2 在示例 2 ,您可以看到使用两个等号 (==) 返回 true,因为在 JavaScript true _ 为1,_false为0。因此在松散相等比较之前将其转换为1。...但是在 (===) 严格相等,它不会被转换并返回 false 示例 3 这是一个有趣例子。在 (===) 严格相等,我们可以看到它返回 false。...最好在代码中使用 (===) 严格相等,因为它会增加代码清晰度并防止任何误报。

    92021

    教你简单实现RecyclerView自动滚动

    当RecyclerView内容过多,超出屏幕时候,需要让它自己滚动展示数据,尤其是某些Android设备处于高处,或是不可被触摸点击,这样情况下,让其自己滚动展示数据尤为重要了 自动滚动方案很多种...,目前比较常见又最简单一种是:继承至RecyclerView,并实现runnable方法,每间隔10ms(delayTime)就去执行scrollby(x,y)方法,其中delayTimex,y值决定了滚动速度...,即在ACTION_DOWN时,停止滚动线程,在ACTION_UPACTION_CANCEL时再开启线程。...if (running) stop() MotionEvent.ACTION_UP, MotionEvent.ACTION_CANCEL, MotionEvent.ACTION_OUTSIDE...Integer.MAX_VALUE,然后在获取数据时候,用positiondata.size()取余来获取实际记录索引值即可。

    1K40

    MyBatis配置#{}${}什么区别

    前几天,一位应届生去面试,被问到一个MyBatis中比较基础问题,说MyBatis#号$符号什么区别?今天,我给大家来详细介绍一下。...它相当于向PreparedStatement预处理语句中设置参数,而PreparedStatementSQL语句是预编译,如果在设置参数包含特殊字符,会自动进行转义。...,前者是动态参数,后者是占位符, 动态参数无法防止SQL注入问题,所以在实际应用,应该尽可能使用#号占位符。...另外,$符号动态传参,可以适合应用在一些动态SQL场景,比如动态传递表名、动态设置排序字段等。 2、总结 一些小细节如果不注意,就有可能造成巨大经济损失。...在技术如此成熟互联网时代,还是会有一些网站经常出现SQL注入导致信息泄露问题。 以上就是我对MyBatis配置#号$号理解。

    1.6K20

    你必须知道Android事件传递

    前言 在Android开发,Android事件传递可谓比较重要,是一块比较重要知识体系,不管是日常开发还是面试熟悉整套传递机制都尤为重要,Android 事件传递 其实是Android输入子系统一部分...最终会调用到输入焦点3个方法:使用setKeyListener注册监听器onKey,之后是onKeyDownonKeyUp,或者调用activityonKeyDownonKeyUp方法,也就是兜底处理无人处理...在View及其子类没有重写操作 dispatchPointerEvent在View实现为 public final boolean dispatchPointerEvent(MotionEvent...: } onTouch内进行了 ACTION_DOWN、ACTION_MOVE、ACTION_UPACTION_CANCEL相关处理 这里简版给出来长按及点击逻辑,在ACTION_DOWN时会发送一个...500毫秒 长按Runnable 检测,如果到了500毫秒,还没有接收到ACTION_UP事件则认为是一个长按点击,如果在500毫秒内接收到了ACTION_UP则认为是一个点击事件 走OnClick

    2.3K156

    Android触摸事件传递(上)

    前言:智能手机早已成为我们今天身边必不可少手持设备,iOSAndroid也是目前主流二大移动操作系统,当然也有越来越多开发者加入到移动开发工作来。...我也是一名普通Android码农,目前也在学习iOS开发一些成长道路上一些经验教训,很早就想动手记录下来,再三下决心,终鼓起勇气,敲起键盘,了下文,初次行文,文笔未免羞涩,大神轻点喷~    ...在Android,系统将触摸事件包装成MotionEvent对象,同时MotionEvent类内部定义了ACTION_DOWN, ACTION_UP, ACTION_MOVE,ACTION_CANCEL...上面我们讲到Activity会将触摸事件ev传递给根布局rootView,rootView二种类型,ViewViewGroup。      ...也非常好理解,我们查看MotionEvent源代码,ACTION_DONW = 0, ACTION_UP=1, ACTION_MOVE=2, 打印日志与我们手指触摸操作完全一致,先是触发了ACTION_DOWN

    1.1K30
    领券