android触摸屏事件,Android Touch事件分析

android触摸屏事件,Android Touch事件分析AndroidTouch事件分析本文将分析Touch事件的传递。很多复杂的功能都需要深刻的处理Touch事件,例如侧边栏,例如图标的拖动换位。一,Touch事件的执行轨迹Down—>MoveàUP/Cancel二,Touch事件的分类Touch事件可分为两类:OnTouchEvent和onInterceptTouchEvent。消息传递的两种方式(Z轴方向)前者是正在执行touch事件的…

大家好,又见面了,我是你们的朋友全栈君。如果您正在找激活码,请点击查看最新教程,关注关注公众号 “全栈程序员社区” 获取激活教程,可能之前旧版本教程已经失效.最新Idea2022.1教程亲测有效,一键激活。

Jetbrains全系列IDE使用 1年只要46元 售后保障 童叟无欺

Android Touch事件分析

本文将分析Touch事件的传递。很多复杂的功能都需要深刻的处理Touch事件,例如侧边栏,例如图标的拖动换位。

一,Touch事件的执行轨迹

Down—>MoveàUP/Cancel

二,Touch事件的分类

Touch事件可分为两类:OnTouchEvent和 onInterceptTouchEvent。

消息传递的两种方式(Z轴方向)

前者是正在执行touch事件的方法,后者则是拦截touch事件的方法。OnTouchEvent()的传递是自上而下,OnInterceptTouchEvent是自下而上。

f2b14e0154a1deaaaa5c8b1193cf63e6.png

三,Touch事件案例解析

当然,听到这里可能还不是很清楚。下面将以demo的形式来说明。

显然,拦截touch事件的前提是有可拦截的touch事件,即存在子view,所以只有ViewGroup才有OnInterceptTouchEvent()方法。当最上的view(即TouchTextView)被touch到时(可能存在多层,demo以三层来分析)。从最下面开始判断是否需要拦截(Intercept),layout1—> layout2–>TouchTextView,如果不拦截,则

Case1:分别在Layout1, Layout2, TouchTextView中override OnTouchEvent()和OnInterceptTouchEvent(),不做任何处理。点击TouchTextView,log如下:

92baba00f0ebde18b3802efe262593dc.png

很明显,点击TextView之后,先从View的最底层判断要不要要拦截,以此向上处理,都不处理,那么TouchEvent事件最终交给TouchTextView处理。TouchTextView不处理,交给其父亲Layout2处理,Layout2不处理,交给Layout1处理。Layout1不处理,最终交给Activity处理。在拦截时,只通过ACTION_DOWN来判断,最终定下由谁处理TouchEvent时,才最终继续进行ACTION_MOVE, ACTION_UP.

Case2:在Layout1,ACTION_DOWN时拦截(设置返回值为true)。

Log如下:

359c6953771c74a5599c16afd8178841.png

显然Layout1将touch事件拦截,使用自己的TouchEvent()处理。但是ACTION_DOWN返回值为false,Layout已经在最下面,TouchEvent最终交给Activity处理。

Case3,如果不在ACTION_DOWN事件拦截,而在layout中的ACTION_MOVE事件拦截。

Log如下:

23b45cae725cc5cd3935e0dafcd2cfc8.png

显然,在ACTION_MOVE中的拦截,对拦截没有任何作用,可以得出结论,ACTION_DOWN是用来确定某次touch时间到底如何处理。

四,Source code

https://github.com/mikewang0326/TouchEventDemo.git

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。

发布者:全栈程序员-用户IM,转载请注明出处:https://javaforall.cn/197814.html原文链接:https://javaforall.cn

【正版授权,激活自己账号】: Jetbrains全家桶Ide使用,1年售后保障,每天仅需1毛

【官方授权 正版激活】: 官方授权 正版激活 支持Jetbrains家族下所有IDE 使用个人JB账号...

(0)
blank

相关推荐

  • 认识UART接口[通俗易懂]

    认识UART接口[通俗易懂]内容待添加

  • html语言代码超链接,html 超链接 word html超链接代码

    html语言代码超链接,html 超链接 word html超链接代码【网页用word打开】可以直接打开word文件的超链接在网页中,怎么样…“打开/保存”是因浏览者的浏览器而异的,假如浏览者的电脑没有装word软件,那么,无论什么情况,都是打不开的,你只能选择保存(选择打开的话,电脑会让你选择使用什么软件来打开);如果浏览者的电脑装了word软件,那么如果电脑的安全级别高一些,一样会提示“打开/保存”,为的是防止直接打开病毒文件。要达到你要的效果,基本不可能,…

  • BeanUtils.populate()的作用

    BeanUtils.populate()的作用//1.获得请求参数Map<String,String[]>map=request.getParameterMap();Useruser=newUser();//

  • vue关闭eslint检查_vue 校验规则 提取

    vue关闭eslint检查_vue 校验规则 提取在创建项目时,手贱点击了yes。那么怎样关闭Eslint验证呢?1.打开build\webpack.base.conf.js2.找到如下代码,并ctrl点击红框框起的代码3.修改useEslint:true,为false4.最后,在修改完配置文件之后,在终端输入nmprundev。这一点非常重要,我就是没有漏了这步操作,弄了很久。…

  • 阿里云图片存储_阿里云oss价格

    阿里云图片存储_阿里云oss价格oss目的:1.图片和音视频等应用的海量存储2.网页或者移动应用的静态和动态资源分离利用BGP带宽,OSS可以实现超低延时的数据直接下载。也可以配合阿里云CDN加速服务3.云端数据处理比如图片的裁剪,缩放,鉴黄等oss使用:1.http://www.aliyun.com/product/登录阿里云,开通oss图片存储(如果你还没有账号需要先注册获取AccessKey…

    2022年10月28日
  • 不止一个背包的背包问题_超级背包怎么使用方法

    不止一个背包的背包问题_超级背包怎么使用方法有 N 个物品和一个容量是 V 的背包。物品之间具有依赖关系,且依赖关系组成一棵树的形状。如果选择一个物品,则必须选择它的父节点。如下图所示:如果选择物品5,则必须选择物品1和2。这是因为2是5的父节点,1是2的父节点。每件物品的编号是 i,体积是 vi,价值是 wi,依赖的父节点编号是 pi。物品的下标范围是 1…N。求解将哪些物品装入背包,可使物品总体积不超过背包容量,且总价值最大。输出最大价值。输入格式第一行有两个整数 N,V,用空格隔开,分别表示物品个数和背包容量。接下来有 N

发表回复

您的电子邮箱地址不会被公开。

关注全栈程序员社区公众号