软装搭配服务 | 咨询热线: 159 2048 2283

/ 专业 / 创新 / 共羸 /

幻灯4
幻灯3
幻灯2
幻灯1
365bet体育在线_365bet官网
其它参考

相信看了这篇文章的你会对Android事件分发有进一

发布于:2019-09-18 01:47来源:admin1 点击:

  今天这篇文章主要分析的是Android的事件分发机制,采用例子加源码的方式让大家深刻的理解Android事件分发的具体情况,虽然网上很多Android的事件分发的文章,有些还写的不错,365bet体育在线但是我还是决定写这篇文章,用我自己的思维方式来帮助大家理解Android事件分发,Android事件分发到底有多重要呢?相信很多Android开发者都明白吧,这个我就不介绍了,我也写了很多篇文章里面涉及到Android的事件处理的问题,可能不理解Android事件分发的朋友会有点难理解吧,不过没关系,相信看了这篇文章的你会对Android事件分发有进一步的理解。我这篇文章分析的源码是Android 2.2的源码, 也许你会说,干嘛不去分析最新的源码呢?我这里要解释一下,Android 2.2的源码跟最新的源码在功能效果方面是一样的,只不过最新的源码相对于Android 2.2来说更加健壮一些, Android 2.2的事件处理的代码几乎都写在一个方法体里面,而最新的源码分了很多个方法写,如果用最新的源码调用方法会绕来绕去的,相信你看的也会晕,出于这个考虑,我就拿Android 2.2的源码来给大家分析。

  我们用手指去触摸Android手机屏幕,就会产生一个触摸事件,但是这个触摸事件在底层是怎么分发的呢?这个我还真不知道,这里涉及到操作硬件(手机屏幕)方面的知识,也就是Linux内核方面的知识,我也没有了解过这方面的东西,所以我们可能就往上层来分析分析,我们知道Android中负责与用户交互,与用户操作紧密相关的四大组件之一是Activity, 所以我们有理由相信Activity中存在分发事件的方法,这个方法就是dispatchTouchEvent(),我们先看其源码吧

  我们先新建一个项目,取名AndroidTouchEvent,然后直接用模拟器运行项目, MainActivity的布局文件为

  上面那个FrameLayout是用来显示标题栏的,这个Demo中是一个TextView,当然我们还可以定制我们的标题栏,利用out.XXX); xxx就是我们自定义标题栏的布局XML文件

  现在你了解了View的onTouchEvent()方法和onTouch()的关系了吧,为什么Android提供了处理Touch事件onTouchEvent()方法还要增加一个OnTouchListener接口呢?我觉得OnTouchListener接口是对处理Touch事件的屏蔽和扩展作用吧,屏蔽作用我就不举例介绍了,看上面的源码就知道了,我就说下扩展吧,比如我们要打印View的Touch的点的坐标,我们可以自定义一个View如下

  由于考虑到文章篇幅的问题,我就不继续分析View的长按事件和点击事件了,在这里我直接得出结论吧

  在上面的我就不分析了,大家自行分析一下,跟上面的逻辑是一样的,我直接画了个图来帮大家理解下(这里没有画出onInterceptTouchEvent()方法)

  所以我们点击屏幕上面的TextView的事件分发流程是上图那个样子的,表示Activity的View都不消费ACTION_DOWN事件,所以就不能在触发ACTION_MOVE, ACTION_UP等事件了,具体是为什么?我还不太清楚,毕竟从Activity到TextView这一层是分析不出来的,估计是在底层实现的。

  从上面的流程图得出一个结论,Touch事件是从顶层的View一直往下分发到手指按下的最里面的View,如果这个View的onTouchEvent()返回false,即不消费Touch事件,这个Touch事件就会向上找父布局调用其父布局的onTouchEvent()处理,如果这个View返回true,表示消费了Touch事件,就不调用父布局的onTouchEvent()

  好了,365bet体育在线就分析到这里吧,差不多分析完了,还有一种情况没有分析到,例如我将CustomLayout的代码改成下面的情形,Touch事件又是怎么分发的呢?我这里就不带大家分析了

  一、pc端事件回顾HTML事件、DOM0事件、DOM2事件事件对象。如果上述概念不清楚,请先去了解。二、移动端事件简介2.1pc端事件在移动端的问题​移动设备主要特点是不配备鼠标,键盘也只是在需要输入...博文来自:完善飞跃

  HTML5中新添加了很多事件,但是由于他们的兼容问题不是很理想,应用实战性不是太强,所以在这里基本省略,咱们只分享应用广泛兼容不错的事件,日后随着兼容情况提升以后再陆续添加分享。今天为大家介绍的事件主...博文来自:无猫 无房 无女友 三无青年

  目录一、Touch基本知识二、Android事件传递流程:流程图胜千言流程图原理,对流程图的具体解释:三、如何写自定义touch事件:处理一个手指:处理多个手指:四、常用的系统的处理触摸事件:五、手势...博文来自:隆曦的博客

  MobileInternetdeveloper专注移动互联网开发,注重实战,是软件开发的一柄利剑目录视图摘要视图订阅移动信息安全的漏洞和逆向原理     【观点】世界上最好的语言是什么     58到...博文来自:阿瑞的博客

  学以致用最根本的是要把理论的知识和实际的应用要联合起来,由浅入深地达到熟能生巧的目的,学到的东西要经常揣摩,逐步加深自己的理论知识与实践应用github源码下载地址:博文来自:门心叼龙的专栏

  github源码下载地址:关于Android事件传递机制的文章在前面也零零散散的写过两篇,当时也是时间有限,...博文来自:门心叼龙的专栏

  首先,上个人网站的留言页面,大家可以看看效果:留言板这里也上个效果图前端为了省事,使用jQuery编写,后台使用php简单读写mysql数据库。数据库设计和实现思路数据库创建了一个表:comments...博文来自:weixin_30599769的博客

  前言当我们点击一个View,点击的动作是怎么传递到当前View的,系统会做哪些处理呢?我们在处理滑动冲突的时候,从哪里下手,毫无头绪;我们先来看下事件的传递及分发机制,系统是如何传递事件,分发事件的,...博文来自:fengluoye2012的博客

  前面写过一篇文章,说了下事件分发机制的方法和大致流程,本文尝试从源码的角度一层一层的看下分发机制。源码的查看:(可能是我下...博文来自:安了个卓

  一、MotionEvent事件手指接触屏幕后所产生的事件,主要有如下几种: 1、ACTION_DOWN:手指接触屏幕 2、ACTION_MOVE:手指在屏幕上移动 3、ACTION_UP:手指从屏幕上...博文来自:李加华的专栏

  目录目录1.基础认知1.1事件分发的对象是谁?答:事件 当用户触摸屏幕时(View或ViewGroup派生的控件),将产生点击事件(Touch事件)。 Touch事件相关细节(发生触摸的位置、时间...博文来自:的博客

  前言关于事件分发机制,这个东西对于开发者,很重要,例如:解决滑动冲突;对于面试者,也很重要,比如:请描述一下View的事件分发机制~。说句实话,这个源码是看了很长时间,一直不敢写这篇文章,生怕误人子弟...博文来自:lmq121210的博客

  多说公共JS代码,每个网页只需要插入一次,但必须要插入0.插入公共代码每个页面插一次就可以,可以放在页面尾部,或者js代码里面varduoshuoQuery={short_name:liuyanzh...博文来自:言曌

  本文背景:前些天用到了之前写的自定义图片文字复合控件,在给他设置监听时遇到了麻烦。虽然最后解决了问题,但发现在不重写LinearLayout的onInterceptTouchEvent时,子Image...博文来自:yanzi1225627的专栏

  Android事件分发之Activity篇–dispatchTouchEvent、onTouchEvent之间关系由前面两篇文章的分析可知,在设备获取到事件之后首先流转到的既是Activity,如果在...博文来自:游资程序猿

  事件机制在应用开发中非常重要,手指与界面任何交互都会转化成一个个事件,通过事件机制完成一系列的逻辑处理,最终找到事件的响应者。理解事件机制我们才能准确的把握在具体情况下事件如何交由相应的View进行处...博文来自:wgheng2011的博客

  View事件分发机制时间一久就容易忘记,趁着国庆把这个知识点捋一遍,加深印象。android控件都继承自View和ViewGroup,其实ViewGroup也是继承自View,只是由于ViewGrou...博文来自:努力的八戒

  前言我们在学习View的时候,不可避免会遇到事件的分发,而往往遇到的很多滑动冲突的问题都是由于处理事件分发时不恰当所造成的。因此,深入了解View事件分发机制的原理,对于我们来说是很有必要的。由于Vi...博文来自:android开发笔记

  请问有下图这种评论框CSS代码吗?或者给点思路也行,本人刚接触css,求指点!论坛

  简介通过对dispatchTouchEvent事件分发的理解,了解android事件的处理机制事件分发流程首先先确认事件由系统传递给当前Activity,然后由Activity开始分发,主要的流程:A...博文来自:抽烟的青蛙的专栏

  AndroidView虽然不是四大组件,但其并不比四大组件的地位低。而View的核心知识点事件分发机制则是不少刚入门同学的拦路虎。ScrollView嵌套RecyclerView(或者ListView...博文来自:学无止尽,生命不息..

  1.11【单选题】我国陆地领土面积排名世界第几?(C)A、1B、2C、3D、42【单选题】以下哪个国家不属于金砖五国(BRICS)?(B)A、中国B、365bet体育在线日本C、印度D、俄罗斯3【单选题】以下哪位学者主张...博文来自:ling_wang的博客

  androidView事件分发流程android中的view虽然不是四大组件,但是同样也是相当重要的。不论是我们在平时自定义控件还是面试的时候总会遇到一些关于view点击事件分发的一些问题。接下来就让...博文来自:guojingbu的博客

  Windows10操作系统于2015年7月29日正式发布,此后,win10也就成了新上市的笔记本电脑或者台式机电脑的预装操作系统!win10系统给我们带了全新的体验,当然也带来了一定的烦恼!就拿win...博文来自:happycell188的博客

  今天开始写一点关于view的知识,先从最基本的讲吧,android的事件分发机制,其实在我看来,android的事件分发机制在现实生活中经常能看到,所以我觉得还是很好理解的;先看看生活中常见的一种情形...博文来自:pgg_cold的博客

  转载请标明出处:本文出自方志朋的博客错过了这一篇,你可能再也学不会SpringCloud了!Sp...博文来自:方志朋的专栏

  问题1.在电脑上观看百度网盘里的学习视频,语速有点慢2.一边观看一边打字做笔记,速度有点跟不上视频的播放PS:没有时间观看罗里吧嗦经过的童鞋可以直接看结果第4点和结论,如果有更好的方法求分享~~经过1...博文来自:DearMorning的博客

  2013年年底的时候,我看到了网上流传的一个叫做《Java面试题大全》的东西,认真的阅读了以后发现里面的很多题目是重复且没有价值的题目,还有不少的参考答案也是错误的,于是我花了半个月时间对这个所谓的《...博文来自:骆昊的技术专栏

  中国国防史——秦至两晋南北朝已完成成绩:100.0分1【单选题】中国哪个历史时期的国防是“变法图强,改革军制;奖赏军功,百家论兵”?()A、元朝时期B、先秦时期C、清朝时期D、明朝时期我的答案:B得分...博文来自:ling_wang的博客

  现实世界中数据大多都是不完整,不一致的脏数据,无法直接进行数据挖掘,或挖掘结果差强人意。为了提高数据挖掘的质量,我们一般会在对数据建模前对数据进行预处理。数据预处理的过程主要包括:数据质量分析、数据审...博文来自:洪远的博客

  催经的方法【吐血整理】  1、生姜红糖茶2、益母草颗粒,中成药,很有效。3、乌鸡白凤丸+逍遥丸,艾灸,至少对我这个寒性体质导致的姨妈不来很有效,一周不到姨妈必来.4、 把药膏贴在肚脐眼。气血两虚,...博文来自:夏日向日葵的专栏

  weixin_43213673:就是A叫B执行某个办法,B执行完之后还要通知A?

------分隔线----------------------------
回到顶部