安卓的事件传递,中断,分发机制

来源:互联网 发布:linux shell有哪几种 编辑:程序博客网 时间:2024/06/05 18:49

安卓的触摸事件有这样的三个机制:

dispatchTouchEvent(MotionEvent ev)(事件分发)

onInterceptTouchEvent(MotionEvent ev)(事件中断)

 onTouchEvent(MotionEvent event)(事件传递)

执行顺序是从上到下


onTouchEvent(MotionEvent event),当手指触摸到屏幕的时候,父控件会把这个事件传递给子控件,如果子控件返回true,则代表这个事件在这里被消费掉,如果返回false,这个事件则向父控件传递,


onInterceptTouchEvent(MotionEvent ev)(事件中断),当事件在父控件手上时,父控件有能力把它中断掉,不在往下传递,

如果返回值为true:则代表事件到这来被中断掉,就会执行自己的onTouchEvent,意,奇怪的是从move开始,而不是down,所以在down里有做处理的要注意,

如果返回值为false:将不会执行onTouchEvent方法,而是把事件传给子控件



dispatchTouchEvent(MotionEvent ev)(事件分发),

如果返回true,事件将在此被消费掉,不再传递,

每一个控件都有一个分发机制,当这个控件被触摸时,可以将这个事件分发给别的控件

用法:要得到此事件的控件对象名.dispatchTouchEvent(MotionEvent ev);

0 0
原创粉丝点击