老生常谈onTouch和onTouchEvent(必看篇)
1.ontouch和ontouchevent,都是在dispatchtouchevent()中调用,ontouch优先于ontouchevent执行。如果在ontouch方法中通过返回true将事件消费掉,ontouchevent将不会再执行。另外需要注意的是,ontouch能够得到执行需要两个前提条件,第一montouchlistener的值不能为空,第二当前点击的控件必须是enable的。因此如果你有一个控件是非enable的,那么给它注册ontouch事件将永远得不到执行。对于这一类控件,如果我们想要监听它的touch事件,就必须通过在该控件中重写ontouchevent方法来实现。
1、ontouch方法:
ontouch方法是view的 ontouchlistener借口中定义的方法。
当一个view绑定了ontouchlister后,当有touch事件触发时,就会调用ontouch方法。
(当把手放到view上后,ontouch方法被一遍一遍地被调用)
2、ontouchevent方法:
ontouchevent方法是override 的activity的方法。
重新了activity的ontouchevent方法后,当屏幕有touch事件时,此方法就会别调用。
(当把手放到activity上时,ontouchevent方法就会一遍一遍地被调用)
3、touch事件的传递:
在一个activity里面放一个textview的实例tv,并且这个tv的属性设定为 fill_parent
在这种情况下,当手放到屏幕上的时候,首先会是tv响应touch事件,执行ontouch方法。
如果ontouch返回值为true,
表示这个touch事件被ontouch方法处理完毕,不会把touch事件再传递给activity,
也就是说ontouchevent方法不会被调用。
(当把手放到屏幕上后,ontouch方法被一遍一遍地被调用)
如果ontouch的返回值是false,
表示这个touch事件没有被tv完全处理,ontouch返回以后,touch事件被传递给activity,
ontouchevent方法被调用。
以上这篇老生常谈ontouch和ontouchevent(必看篇)就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持。