View的事件分发机制

原创 2018年04月16日 16:04:55

1.为什么会有事件分发机制

安卓上面的View是树形结构的,View可能会重叠在一起,当我们点击的地方有多个View都可以响应的时候,这个点击事件应该给谁呢?为了解决这一个问题,就有了事件分发机制。

2.三个重要的事件分发的方法

(1). dispatchTouchEvent方法用于分发事件

(2). onInterceptTouchEvent方法用于拦截事件

(3). onTouchEvent方法用于处理事件

3.事件分发流程

Activity-PhoneWindow-DecorView-ViewGroup-...-view

顶级View接收到事件后,就会按照事件分发机制去分发事件。如果所有的view都不处理某个事件,即onTouchEvent返回false,那么这个事件最终会传递给Activity处理。

4.优先级:OnTouchListener>OnTouchEvent>OnClickListenser(onTouch->onTouchEvent->onClick

  1. 当一个View需要处理事件时,如果它设置了OnTouchListener,那么OnTouchListener的onTouch方法会被回调。
  2. 这时事件如何处理还得看onTouch的返回值,如果返回false,则当前View的onTouchEvent方法会被调用;如果返回true,那么onTouchEvent方法将不会被调用。由此可见,给View设置的onTouchListener,其优先级比onTouchEvent要高。
  3. 如果当前方法中设置了onClickListener,那么它的onClick方法会被调用。可以看出,常用的OnClickListener,其优先级别最低。

android之View和ViewGroup事件分发机制分析(一)(View的事件分发机制)

要把安卓学好,自定义View,事件分发机制,自定义动画之类的是必须掌握的,如果不想弄得那么高级来自定义,也可以不学。当初自己也是看了很多相关的书籍和博客文章,理了很久的思路。现在事件分发机制的分析已经...
  • gsw333
  • gsw333
  • 2016年07月25日 19:10
  • 706

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

Android View 虽然不是四大组件,但其并不比四大组件的地位低。而View的核心知识点事件分发机制则是不少刚入门同学的拦路虎。ScrollView嵌套RecyclerView(或者ListVi...
  • u010302764
  • u010302764
  • 2017年05月23日 08:59
  • 1407

Android View 事件分发机制 源码解析 (上)

一直想写事件分发机制的文章,不管咋样,也得自己研究下事件分发的源码,写出心得~首先我们先写个简单的例子来测试View的事件转发的流程~1、案例为了更好的研究View的事件转发,我们自定以一个MyBut...
  • lmj623565791
  • lmj623565791
  • 2014年09月02日 09:32
  • 63822

Android View事件分发机制总结(下)

上一篇Android View事件分发机制总结(上)中结合例子和源码对View(不包括ViewGroup)的事件处理过程做了总结性分析,并没有涉及事件分发机制,本篇咱们接着上篇没有讲完的话题继续深入。...
  • u013058549
  • u013058549
  • 2017年02月17日 10:00
  • 480

Android进阶笔记(一)View事件分发机制理解

作为一名Android程序猿,相信你一定碰到过滑动冲突这一问题,解决它的理论基础就是要了解view的事件分发机制,本博客只是从大的方面分析事件分发机制,如果要深入研究它,建议大家结合系统源码去进一步分...
  • Jerry_1911
  • Jerry_1911
  • 2016年03月09日 14:52
  • 451

Android中的事件分发机制(上)——ViewGroup的事件分发

Android中的事件分发机制也就是View与ViewGroup的对事件的分发与处理。在ViewGroup的内部包含了许多View,而ViewGroup继承自View,所以ViewGroup本身也是一...
  • ljd2038
  • ljd2038
  • 2016年05月13日 13:31
  • 11065

View的事件分发机制解析

引言Android事件构成 在Android中,事件主要包括点按、长按、拖拽、滑动等,点按又包括单击和双击,另外还包括单指操作和多指操作。所有这些都构成了Android中的事件响应。总的来说,所有的...
  • Wei_Smile
  • Wei_Smile
  • 2016年04月03日 22:41
  • 4502

【自定义View系列】View的事件分发机制

本部分介绍View的一个核心知识点:事件分发机制。事件分发机制不仅仅是核心知识点更是难点,不少初学者甚至中级开发者面对这个问题都会觉得困惑。另外,View的另一大难题滑动冲突,它的解决方法的理论基础就...
  • a910626
  • a910626
  • 2016年06月01日 09:41
  • 1205

android面试题之触摸事件分发与处理简述

android触摸事件分发与处理     android的分发机制:由父控件判断是否拦截,如果不拦截事件,则继续分发到子控件,然后一直分发下去。     处理:与分发相反,由子控件先处理事件,如果子控...
  • qq_35366908
  • qq_35366908
  • 2016年06月21日 10:23
  • 1564

Android开发-事件分发机制实验分析ViewGroup、View事件分发,结合职责链模式

介绍上一篇博客职责链/责任链模式(Chain of Responsibility)分析理解和在Android的应用 介绍了职责链模式,作为理解View事件分发机制的基础。 套用职责链模式的结构分析...
  • Card361401376
  • Card361401376
  • 2016年06月01日 18:01
  • 4697
收藏助手
不良信息举报
您举报文章:View的事件分发机制
举报原因:
原因补充:

(最多只允许输入30个字)