Android 事件传递机制

2017-11-23  本文已影响0人  AKyS佐毅
Android事件分发机制.png

事件传递:

一、View的事件分发。

首先我们看下下边的案例

I/AKyS: OnTouchListener:acton--0----AppCompatButton{dc64049 VFED..C.. ........ 0,0-1080,144 #7f0b005f app:id/button}
I/AKyS: OnTouchListener:acton--1----AppCompatButton{dc64049 VFED..C.. ...P.... 0,0-1080,144 #7f0b005f app:id/button}
I/AKyS: OnClickListener----AppCompatButton{dc64049 VFED..C.. ...P.... 0,0-1080,144 #7f0b005f app:id/button}

结果:



结论: onTouchListener-->onTouch方法返回false,不会消耗此事件。

此时我们将onTouchEvent中返回true.


结果: OnClick方法不执行了


在Activity中将OnTouch()方法置为false.同时在自定义View中将OnTouchEvent()置为true.结果如下:

结果:



结论: OnClick()方法没有执行。

结果如下:


结论: 没有调用Super, 是无法出发OnClick()方法的。

结果如下:


结论:当我们返回false 时,不会在派发其他的动作。如果此时是Down事件,相应Down,但不消耗其他事件。交给父容器处理。

结果如下:


结论: Button,调用super.dispatchTouchEvent(event);。默认返回的是true.

结果如下:

总结:


上一篇 下一篇

猜你喜欢

热点阅读