面试之Android事件分发机制

面试之Android事件分发机制

事件分发的本质

当一个点击事件发生后,系统需要将这个事件传递给一个具体的View去处理。这个事件传递的过程就是分发过程。

首先了解一下事件分发的对象

也就是事件
当用户触摸屏幕时(View或ViewGroup派生的控件),将产生点击事件(也就是Touch事件)。
Android将Touch事件相关细节(发生触摸的位置、时间、历史记录、手势动作等)封装成MotionEvent对象
主要发生的Touch事件有四种

  • MotionEvent.ACTION_DOWN:按下View(所有事件的开始)
  • MotionEvent.ACTION_MOVE:滑动View
  • MotionEvent.ACTION_CANCEL:非人为原因结束本次事件
  • MotionEvent.ACTION_UP:抬起View(与DOWN对应)
    所以说从手指接触屏幕至手指离开屏幕,这个过程会产生一系列事件, 任何事件列都是以DOWN事件开始,UP事件结束,中间有无数的MOVE事件.
接下来说下具体的事件传递流程:

一个点击事件产生后,传递顺序是:Activity(Window) -> ViewGroup -> View

参与事件分发的主要事件

事件分发过程主要由dispatchTouchEvent() 、onInterceptTouchEvent()和onTouchEvent()三个方法协助完成
当我们需要对点击事件进行处理的时候可以通过改变这几个方法的返回值来达到具体的分发需求.

首先讲一下一般的点击事件处理情况

首先是默认情况:即不对控件里的方法(dispatchTouchEvent()、onTouchEvent()、onInterceptTouchEvent())进行重写或更改返回值
---------------------------------------------------------------------持续更新-----------------------------------------------------

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值