Android 事件分发

要想充分理解android的分发机制,需要对以下几个知识点有所了解:

1.View和ViewGroup

2.事件

3.View事件的分发机制

4.ViewGroup事件的分发机制

一、View和ViewGroup

 Android的UI界面都是由View和ViewGroup及其派生类组合而成,其中,View是所有UI组建的基类,而ViewGroup是容纳这些组件的容器,其本身也是从View派生来的,也就是说ViewGroup的父类就是View。

    通常来说,Button、ImageView、TextView等控件都是继承父类View来实现的,RelativeLayout、LinearLayout、FrameLayout等布局都是集成父类ViewGroup来实现的。

二、事件

    当手指触摸到View或ViewGroup派生的控件后,将会触发一系列的出发响应时间,如:

    onTouchEvent、onClick、onLongClick等。每个view都有自己处理事件的毁掉方法,开发人员只需重写这些回调方法就可以实现需要的响应事件。

    而事件通常重要的有如下三种:

    MotionEvent.ACTION_DOWN   按下View,是所有事件的开始

    MotionEvent.ACTION_MOVE   滑动事件

    MotionEvent.ACTION_UP    与down对应,表示抬起

    事件的响应原理:

    在android开发设计模式中,最广泛应用就是监听、回调,进而形成了事件响应的过程。

    以Button的onClick为例,

1、         OnClickListener类是一个当控件被点击后进行回调的一个接口,它完成被点击后的回调通知。

2、         创建一个按钮Button,并设置监听事件,对这个Button进行setOnClickListener操作

3、         当手指触摸到Button按钮,通过一系列方法(之后将会详细讲解,这里暂时忽略),触发并执行到onTouchEvent方法并执行mPerformClick方法,在mPerformClick方法中,首先会判断注  册的mOnClickListener是否为空,若不为空,它就会回调之前注册的onClick方法,进而执行用户自定义代码。

四、View事件的分发机制

    disPatchTouchEvent和onTouchEvent两个函数,这两个函数都是View的函数,要理解View事件的分发机制,只要清楚这两个函数就基本清楚了。

    这里的“分发”是指一个触摸或点击事件的发生,分发给当前触摸控件所监听的事件(如Onclick、onTouch等),进而来决定是控件的那个函数来响应此次事件。

    dispatchTouchEvent:次函数负责尸检的分发,只需记住当触摸一个View控件,首先会调用这个函数就行,在这个函数里决定将事件分发给谁处理。

    onTouchEvent:次函数负责执行事件的处理,主要处理MontionEvent.ACTION_DOWN、MotionEvent.ACTION_MOVE和MotionEvent.ACTION_UP 这三个事件。

    public boolean onTouchEvent(MotionEvent event)

    参数event为手机屏幕触摸事件封装类的对象,其中封装了该事件的所有信息,例如触摸的位置、触摸的类型及触摸的事件等。该对象会在用户触摸手机屏幕时被创建。

 

转载于:https://www.cnblogs.com/chhom/p/6529068.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值