美文网首页
onClick、onTouch、onTouchEvent、onL

onClick、onTouch、onTouchEvent、onL

作者: 笔记本65 | 来源:发表于2021-01-18 22:27 被阅读0次

    设置OnTouchListener:onTouch方法返回false时,onTouch方法及View的onTouchEvent方法依次被调用;onTouch方法返回true时,只调用onTouch方法,onTouchEvent方法不再被调用

    设置OnTouchListener后:onTouch方法返回false,不影响OnClickListener及OnLongClickListener的触发;onTouch方法返回true时,OnClickListener及OnLongClickListener不再触发

    当只把onTouchEvent 直接返回true:拦截了onClick、OnLongClick事件

    当只把onTouchEvent 直接返回false:截了onClick、OnLongClick事件,而且拦截了ACTION_MOVE、ACTION_UP事件

    OnClickListener的触发条件是手指从触屏抬起;OnLongClickListener的触发条件是按下触屏且停留一段时间(500ms)

    onLongClick方法返回false不影响OnClickListener的触发;onLongClick方法返回true,OnClickListener不再触发

    注意:根据官方的ui-events

    onTouch():此方法返回一个布尔值,指示监听器是否处理完此事件。重要的是,此事件可以拥有多个分先后顺序的操作。因此,如果在收到 down 操作事件时返回 false,则表示您并未处理完此事件,而且对其后续操作也不感兴趣。因此,您无需执行事件内的任何其他操作,如手势或最终的 up 操作事件。

    但实际上当onTouch,down事件返回false,onTouch仍然可以收到move和up事件

    这点跟android官方声称的不一致,本人测试过跟参考的文章答案一致:onClick、onTouch、onTouchEvent的调用_火星男孩的分享空间-CSDN博客

    最后,这些事件的优先级如下:OnTouch>onTouchEvent>onLongClick>onClick

    相关文章

      网友评论

          本文标题:onClick、onTouch、onTouchEvent、onL

          本文链接:https://www.haomeiwen.com/subject/bykfzktx.html