View和ViewGroup的关系
作为android的开发者都应该知道两者的关系吧,view是一切视图的父类,viewgroup也是view的子类。但是我们的结构布局如相对布局继承的是viewgroup而不是直接继承view。而组件view则是继承的view。
消费事件区别
个人总是很容易犯二,所以把这个经常犯二的地方单独拉出来讲了。如果在方法中消费了事件就返回true,没有消费则返回false。
事件分发流程
可以正式来讲述事件事件过程了,我们所有的事件无非是 MotionEvent.ACTION_DOWN、MotionEvent.ACTION_MOVE、MotionEvent.ACTION_UP这三类事件了。在正常的层级结构中,事件是自底向上传递的。也就是正常的布局结构viewgroup中的dispatchTouchEvent先得到事件down,然后在intercepttoucheven来拦截事件,注意这个方法是viewgroup及其子类独有的方法,返回false则不再向下传递了。接着就是ontouchevent方法来处理事件。在我们view中有两个回调方法,一个是ontouch一个是onclick。这两个方法分别在不同时期调用,首先调用的是ontouch方法,在我们dispatchtouchevent方法中就调用了ontouch,而在ontouchevent中调用onclick方法,我们只需要实现回调方法就可以了。当走完整个流程之后,处理接下来的move事件,流程同上述相同,自然up也是这样。图1就是一个完整的流程。
图1 android view
网友评论