关闭

Android中ontouchlistener和ontouchevent事件的区别

标签: ontouch
378人阅读 评论(0) 收藏 举报
分类:
    最显著的区别为onTouchListener的接口的优先级是要高于onTouchEvent
    也就是说,如果ontouchlistener中的ontouch方法返回了true,就说明本次的触摸事件已经被消费了。比ontouchlistener优先级低的ontouchevent就收不到消息。
    同理,button的click事件是通过ontouchevent实现的,当在ontouchlistener监听返回true后,也就意味着button的点击事件失效。

例如,Google中对于dispatchTouchEvent的实现:
public boolean dispatchTouchEvent(MotionEvent event){
        ... ...
        if(onFilterTouchEventForSecurity(event)){
            ListenerInfo li = mListenerInfo;
            if(li != null && li.mOnTouchListener != null && (mViewFlags & ENABLED_MASK) == ENABLED
                && li.mOnTouchListener.onTouch(this, event)) {
                return true;
            }
            if(onTouchEvent(event)){
                return true;
            }
        }
        ... ...
        return false;
    }
0
0

查看评论
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场
    个人资料
    • 访问:10731次
    • 积分:149
    • 等级:
    • 排名:千里之外
    • 原创:3篇
    • 转载:1篇
    • 译文:0篇
    • 评论:20条
    文章分类
    文章存档
    最新评论