码迷,mamicode.com
首页 > 移动开发 > 详细

总体把握Android中的触摸事件处理

时间:2015-05-18 18:56:28      阅读:148      评论:0      收藏:0      [点我收藏+]

标签:事件处理   motionevent   android   event   

先看几个函数:提到Android的触摸事件处理,不少人都会立刻想到某些令人头疼的函数,这里列举一下,刺激一下你的小神经:

    @Override
    public boolean onTouchEvent(MotionEvent event) {
        return super.onTouchEvent(event);
    }
    @Override
    public boolean dispatchTouchEvent(MotionEvent ev) {
        return super.dispatchTouchEvent(ev);
    }
    @Override
    public boolean onInterceptTouchEvent(MotionEvent ev) {
        return super.onInterceptTouchEvent(ev);
    }
    @Override
    public boolean onTouch(View v, MotionEvent event) {
        return false;
    }

恩,今天我们来看一下这四个函数的作用以及之间的调用关系,从而理清触摸事件处理机制。

一. 我们先来搞定其中的两个:

    @Override
    public boolean onTouchEvent(MotionEvent event) {
        return super.onTouchEvent(event);
    }
    @Override
    public boolean onInterceptTouchEvent(MotionEvent ev) {
        return super.onInterceptTouchEvent(ev);
    }

1.1 首先明确一点,Android的事件分发和处理是自上而下的,即一个触摸事件第一次肯定是发给最外层的View的。
1.2 这里我们举个例子:我们假设一个窗口的多个ViewGroup组成了一个大家庭,其中最外层的View辈分最长,最里层的View辈分最小,然后把一个触摸事件event比喻成一个苹果。那么,如果发生了一个事件(获得了一个苹果),将会发生如下的事情:

苹果的传递过程:

爷爷——>爸爸——>孙子。

那如果爷爷这一辈把苹果吃掉了呢,这时我们称这个事件被消费。

看下图:

技术分享

再细致地去分析:
技术分享

至此,是不是对Android中的消息传递机制有了一个整体上的把握呢,
下面我们再去弄清一些细节。

总体把握Android中的触摸事件处理

标签:事件处理   motionevent   android   event   

原文地址:http://blog.csdn.net/hello_chillax/article/details/45824999

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!