热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

【onTouchEvent()方法】和【OnTouchListener中onTouch()方法】

(1)View类中有onTouchEvent()方法,我们可以重写该方法来处理Touch事件(2)还可以View对象调用setOnTouchListener(mOnTouchListener)来设置监
(1)View类中有onTouchEvent()方法,我们可以重写该方法来处理Touch事件 (2)还可以View对象调用setOnTouchListener(mOnTouchListener)来设置监听器,监听器中onTouch()方法会在发生Touch事件时被调用
当发生Touch事件时,到底调用哪个方法?还是都调用?先调用哪个?
/*  查看View的dispatchTouchEvent()方法的源代码,大概意思如下: */
public boolean dispatchTouchEvent(MotionEvent event) {
if (mOnTouchListener != null && mOnTouchListener.onTouch(this, event)) {
return true;
}
return onTouchEvent(event);
}

如果你给View对象设置了监听器,就调用监听器的onTouch(),若返回true则结束;若返回false则再调用onTouchEvent()。返回值true意味着已经成功处理了Touch事件,返回值false意味着不能处理Touch事件。如果onTouchEvent()也不能处理Touch事件(即返回false),那么dispatchTouchEvent()方法也就返回false了,意味着什么?意味着当发生后续事件时,其外层View不会再把事件传递给该对象,详见:TouchEvent事件传递机制
  • ViewGroup重写了View的方法,源码比较复杂,没看委屈,原理不一定跟上述的相同

推荐阅读
author-avatar
魂丢丶她城
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有