王学岗高级UI9————事件分发机制
一 事件分发流程 被分发的对象是哪些?被分发的对象是用户触摸屏幕而产生的点击事件,事件主要包括:按下、滑动、抬起和取消。这些事件被封装成MotionEvent对象。该对象中的主要事件如下: 事件传递的顺序为:Activity -> Window ->DecorView(当前界面的底层容器)。一个点击操作要是没有被Activity下的任何View处理,即顶层DecorView的dispatchTouchEvent()方法返回false的话,则Activity的onTouchEvent()方法会被调用。 我们下面在源码中追踪下。 当我们点击手机屏幕的时候,硬件会通知软件,软件底层程序(C/C++)会调用java层Activity的dispatchTouchEvent(MotionEvent ev)方法。 public boolean dispatchTouchEvent(MotionEvent ev) { //如果是down,说明是一个新的事件 3398 if (ev.getAction() == MotionEvent.ACTION_DOWN) { 3399 onUserInteraction(); 3400 } //调用了PhoneWindow的superDispatchTouchEvent()方法, //把事件从Activity分发到DecorView /