Android Touch事件

      Android中跟Touch事件有关的事件有三个:
        1、public boolean dispatchTouchEvent(MotionEvent ev):传递Touch事件至target view。
    2、public boolean onInterceptTouchEvent(MotionEvent ev):在ViewGroup中定义,用于拦截Touch事件的传递。
    3、public boolean onTouchEvent(MotionEvent event): Touch事件处理函数。

    先说下事件传递的两种方式:
    1、隧道方式:从根元素依次往下传递直到最内层子元素或在中间某一元素中由于某一条件停止传递。 
    2、冒泡方式:从最内层子元素依次往外传递直到根元素或在中间某一元素中由于某一条件停止传递。

    Touch事件通过dispatchTouchEvent以隧道方式从上往下传递。

    Touch事件传递过程中经过的元素都是一个View,但是事件处理的最外层的元素却不是View,除下跟Window有关的事件,当一个Touch事件发生的时候,会首先调用当前Activity的dispatchTouchEvent函数,然后才将事件传递至下层的View元素。

    如果调用一个View的onTouchEvent函数时返回true的话,那么接下来的Touch Event事件仍会传递到这个View并调用它的onTouchEvent函数,在onTouchEvent函数中可以根据条件返回不同的值,如果某一次在此函数中返回了false那么接下来的Touch Event事件就不会再传递到这个View,而会在其Parent View终止,调用其Parent View的onTouchEvent。如果所有的View都的onTouchEvent函数都返回false,那么接下来的Touch Event事件会由Activity处理,即调用Activity的onTouchEvent函数。

    当调用ViewGroup的dispatchTouchEvent函数时,会首先调用onInterceptTouchEvent函数判断有没有拦截事件,如果没有拦截则会依次调用这个ViewGroup的所有子View的dispatchTouchEvent函数。

转载于:https://www.cnblogs.com/GLNPCF/archive/2012/05/09/2491465.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值