对于ACTION_CANCEL理解

对于ACTION_CANCEL理解_第1张图片

百度翻译

当前手势已中止。您将不会收到任何更多的点。你应该把它当作一个UP事件,但不执行任何你通常会。

我的理解

这玩意就是和up一个意思,可以直接当做up事件使用

何时触发该事件

当控件收到前驱事件(什么叫前驱事件?一个从DOWN一直到UP的所有事件组合称为完整的手势,中间的任意一次事件对于下一个事件而言就是它的前驱事件)之后,后面的事件如果被父控件拦截,那么当前控件就会收到一个CANCEL事件,并且把这个事件会传递给它的子事件。(注意:这里如果在控件的onInterceptTouchEvent中拦截掉CANCEL事件是无效的,它仍然会把这个事件传给它的子控件)之后这个手势所有的事件将全部拦截,也就是说这个事件对于当前控件和它的子控件而言已经结束了。

简单来说就是他不是一个完整的手势响应 例如 子控件只是响应了down 而父控件把子控件的up事件拦截了 这个时候就会触发cancel事件 来区分up事件(儿子自己收到微信妈妈要给他一个苹果down,老爹给拦截了

onInterceptTouchEvent返回false,儿子哭了cancel)

使用跟up一样使用即可,特殊情况特殊处理

实例代码

@Override
public boolean onInterceptTouchEvent(MotionEvent ev) {
    switch (ev.getAction()) {
        case MotionEvent.ACTION_UP:
            return true;
 case MotionEvent.ACTION_CANCEL:
            return true;
 }
    return super.onInterceptTouchEvent(ev);
}


你可能感兴趣的:(Android)