一、 前言
在Android日常开发中,我们时有处理业务中手势的需求,即:基于事件的拦截、分发、消费三个回调,判断手势逻辑。
我们知道,当一个View消费了ACTION_DOWN
事件,才可以接受到后续的事件,反之无法收到后续事件。那么如果一个View消费了事件后,判断为自己不需要的事件,又想将事件重新传递给子View处理怎么办呢?
这就引出了本文的要点——手势拦补点操作,以Android Q为例,进行介绍。
二、 拦点
1. 什么是拦点
拦点,即拦截触摸事件点位,不让事件向下传递。这并非我们常规的onInterceptTouchEvent
方法中返回一个true来实现拦截这么简单,而是宏观上的以应用或窗口为单位的拦截,比如Android Q开始原生支持的手势交互。
2. 为什么拦点
以OPPO手机ColorOS 7为例,在设置
-便捷辅助
-导航键
中选择两侧滑动手势,打开一个应用,我们在屏幕两侧偏下的边缘,向内滑动,可以触发手势操作:
而在这个位置点击,如果对应位置有按钮之类的控件(比如设置页的Prefer