栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Java

Android07:事件分发事件

Java 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

Android07:事件分发事件

事件分发事件
  • 1. 事件分发机制分发的是什么
  • 2. ACTION_CANCEL什么时候触发
  • 3. 什么是滑动冲突
  • 4. 父view拦截事件的方式(解决滑动冲突的方式)

1. 事件分发机制分发的是什么

当用户点击屏幕里View或者ViewGroup的时候,将会产生一个事件对象,这个事件对象就是MotionEvent对象,这个对象记录了事件的类型,触摸的位置,以及触摸的时间等。MotionEvent里面定义了事件的类型,其实很容易理解,因为用户可以在屏幕触摸,滑动,离开屏幕动作,分别对应:

MotionEvent.ACTION_DOWN:用户触摸View&ViewGroup。

MotionEvent.ACTION_MOVE:用户手指移动View&ViewGroup。

MotionEvent.ACTION_UP:用户手指离开屏幕。

MotionEvent.ACTION_CANCEL:事件退出了,不是用户导致的。

因此用户在触摸屏幕到离开屏幕会产生一系列事件,

ACTION_DOWN->ACTION_MOVE(0个或者多个)->ACTION_UP

2. ACTION_CANCEL什么时候触发

如果某一个子View处理了Down事件,那么随之而来的Move和Up事件也会交给它处理。但是交给它处理之前,父View还是可以拦截事件的,如果拦截了事件,那么子View就会收到一个Cancel事件,并且不会收到后续的Move和Up事件。

3. 什么是滑动冲突

对于相互嵌套的两个View,他们两个谁去处理一个滑动事件

4. 父view拦截事件的方式(解决滑动冲突的方式)
  1. 外部拦截法:指点击事件都先经过父容器的拦截处理,如果父容器需要此事件就拦截,否则就不拦截。具体方法:需要重写父容器的onInterceptTouchEvent方法,在内部做出相应的拦截。
  2. 内部拦截法:指父容器不拦截任何事件,而将所有的事件都传递给子容器,如果子容器需要此事件就直接消耗,否则就交由父容器进行处理。
    具体方法:
    重写子View的dispatchTouchEvent
    需要配合requestDisallowInterceptTouchEvent方法
转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/272230.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号