Android事件机制

一句话描述: 用户和程序之间的互动机制

什么是事件?

用户和程序交互时触发的程序操作.

只要是事件,必须具备三方面:

1 事件的发生者

2 事件接受者

3 事件触发和传递

事件处理的方法

观察者模式:事件源就必须拥有一个观察者的引用

      传递:靠调用观察者的方法

         然后把数据传递过去

预定义事件(发生者):单机,双击,长安等,并以类的成员变量分别表示这些事件

这些控件的成员变量按事件的类型定义为不同类型的借口。因此,这些成员变量存放的对应借口的实现类的对象地址

程序员事先编写好实现了某个接口的对象,在该对象的方法中完成对用户操作的相应,然后将该对象的地址保存在控件对象的某个成员变量中

回调:在android程序运行时,用户出触发了该控件的某个事件。Android系统将找到该成员变量中保存的对象中的方法,完成对用户操作的相应,这个过程称之为回调。

 实现步骤:

1 定义事件的监听程序(Listener),并且注册它。

    程序员编写一段相应用户的代码,并以接口的实现类对象的方式,将对象的地址保存在控件的一个成员变量中。

    例如:Button类的单机事件,将一段代码以接口实现类对象的方式保存在Button。mOnClickListener成员变量中

2 用户出触发了注册事件时,系统将会在注册的时间相应程序

    由系统完成,程序只需要完成步骤1中代码的编写和事件的注册。

实现的五种方式和优点

传统方式实现直接监听:

  控件onClick属性设置点击事件的相应方法名

  监听东西少的时候,项目小的时候

  不方便,需要时刻去检查,xml中的控件名字

匿名内部类实现OnClickListener接口:

  单一地方使用,没有重复性,匿名内部类更方便,代码少

  实现机制:通过匿名内部类实现Onclick借口

Activity类实现OnClickListener接口:

  适用于按钮较多,但是每个按钮相应代码较短

  Activity直接实现OnClickListener接口

内部类实现OnClickListener接口:

  具有复用性

  实现机制在Activity类中定义内部类实现OnClickListener接口

外部类实现OnClickListener接口:

  适用于监听器,全局可见,有利于代码混淆,安全

  外部类实现OnClickListener接口

  四大组件不能混淆

时间: 2024-11-12 20:28:54

Android事件机制的相关文章

Android事件机制之一:事件传递和消费

http://www.cnblogs.com/lwbqqyumidi/p/3500997.html 关于Android中的事件机制,用到的地方还是很多的,并且这个知识点还真有点复杂. 在写这篇文章前,网上看了不少博文,有的写的感觉挺不错的.只是当时感觉好像理解了,事后又很容易忘.现在自己也系统整理下吧. Android中的事件在表现形式上有很多,如onTach.onClick和onLongClick等,在具体微观上的表现形势有action_down.action_move和action_up等.

Android事件机制完全解析

android事件是一级一级传递的,如果父控件不拦截,就传给子控件,如果父控件想要消费事件也就是拦截事件的话,需要重写这个方法 public boolean onInterceptTouchEvent(MotionEvent ev),如果返回true,则父控件自己处理,需要再重写onTouchEvent方法.这时候 @Override public boolean dispatchTouchEvent(MotionEvent ev) { if (mInputEventConsistencyVer

Android 事件机制

一.简介 触摸事件就是捕获触摸屏幕后产生的事件.Android为触摸事件封装了一个类——MotionEvent,如果重写onTouchEvent(MotionEvent event)方法,就会发现该方法的参数就是一个MotionEvent类实例. 事件触发分为三个阶段,捕获.目标.冒泡. 第一个阶段为事件捕获,事件从根节点流向目标对象节点.途中经过各个层次的View节点,并在各节上触发捕获事件,直到到达事件的目标节点. 第二个阶段为目标阶段,事件进入到目标阶段,事件在目标节点上被触发,然后会逆向

Android事件机制详解

TouchEvent事件研究 1.          Activity事件分析   dispatchTouchEvent onTouchEvent 执行结果 1 Super Super dispatchTouchEvent à onTouchEvent 2 false dispatchTouchEvent 3 true 2.          View and Activity事件分析 Activity view 执行结果 dispatchTouchEvent(1) onTouchEvent(2

聊一聊Android的事件机制

侯 亮 1概述 在Android平台上,主要用到两种通信机制,即Binder机制和事件机制,前者用于跨进程通信,后者用于进程内部通信. 从技术实现上来说,事件机制还是比较简单的.从大的方面讲,不光是Android平台,各种平台的消息机制的原理基本上都是相近的,其中用到的主要概念大概有: 1)消息发送者: 2)消息队列: 3)消息处理循环. 示意图如下: 图中表达的基本意思是,消息发送者通过某种方式,将消息发送到某个消息队列里,同时还有一个消息处理循环,不断从消息队列里摘取消息,并进一步解析处理.

Android-- Android事件机制之二:onTouch详解

Android事件机制之二:onTouch详解 在其中对OntouchEvent中的总结中,不是很具体.本文将主要对onTouch进行总结. onTouch是Android系统中整个事件机制的基础.Android中的其他事件,如onClick.onLongClick等都是以onTouch为基础的. onTouch包括从手指按下到离开手机屏幕的整个过程,在微观形式上,具体表现为action_down.action_move和action_up等过程. onTouch两种主要定义形式如下: (1)在

Android事件分发机制详解:史上最全面、最易懂

前言 Android事件分发机制是每个Android开发者必须了解的基础知识 网上有大量关于Android事件分发机制的文章,但存在一些问题:内容不全.思路不清晰.无源码分析.简单问题复杂化等等 今天,我将全面总结Android的事件分发机制,我能保证这是市面上的最全面.最清晰.最易懂的 本文秉着"结论先行.详细分析在后"的原则,即先让大家感性认识,再通过理性分析从而理解问题: 所以,请各位读者先记住结论,再往下继续看分析: 文章较长,阅读需要较长时间,建议收藏等充足时间再进行阅读 目

Android事件分发机制总结

理解事件的分发机制,需要对View和ViewGroup事件的分发分别探讨.View和ViewGroup的区别,一个View控件是指它里面不能再包含子控件了,常见的如TextView.Button.ImageView等,而ViewGroup是继承自View的,但是它里面可以包含一些子控件,包括View或者嵌套的ViewGroup,常用的大部分布局都是ViewGroup组件,如LinearLayout.RelativeLayout.FrameLayout等. 首先要明白的是,当我们触摸一个控件时(不

Android事件分发机制

转载请注明出处:http://blog.csdn.net/chziroy/article/details/44401615 要理解Android事件分发机制,首先得了解几个概念,也算是总结,如果暂时看不懂也无妨,本文会讲解这几个问题. 1,点击屏幕,首先事件的传递从Activity的dispatchTouchEvent()方法开始. 2,关于Android事件分发机制,相关方法的方法有三个:onTouchEvent(),dispatchTouchEvent(),还有onInterceptTouc