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

什么是事件?

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

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

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接口

  四大组件不能混淆

转载于:https://www.cnblogs.com/chalk/p/4712277.html

Android事件机制相关推荐

  1. Android事件机制详解

    转自:http://www.codeceo.com/article/android-event.html 1概述 在Android平台上,主要用到两种通信机制,即Binder机制和事件机制,前者用于跨 ...

  2. android 事件机制总结

    http://www.cnblogs.com/sunzn/archive/2013/05/10/3064129.html http://www.cnblogs.com/sunzn/archive/20 ...

  3. Android事件机制全然解析

    android事件是一级一级传递的,假设父控件不拦截.就传给子控件,假设父控件想要消费事件也就是拦截事件的话,须要重写这种方法 public boolean onInterceptTouchEvent ...

  4. Android事件机制:事件传递和消费

     Android中的事件在表现形式上有很多,如onTach.onClick和onLongClick等,在具体微观上的表现形势有action_down.action_move和action_up等. ...

  5. android 事件机制初探

    由于android中的view操作不是线程安全的(线程安全的方法或实例,可以在多个线程使用的情况下不出错),所以android中使用了handler的机制.通过handler,可以将各个线程中的更新u ...

  6. Android事件分发机制详解

    2019独角兽企业重金招聘Python工程师标准>>> 之前在学习Android事件方法机制的时候,看过不少文章,但是大部分都讲的不是很清楚,我自己理解的也是云里雾里,也尝试过阅读源 ...

  7. android触摸事件分发,Android 事件分发机制

    Android 事件分发机制一直让人头痛,之前也是面向 GitHub 编程得过且过.今天下定决心了解一下,以便后面自己定制 View 效果.Android 触摸事件有三个基本类型:ACTION_DOW ...

  8. 【Android 事件分发】事件分发源码分析 ( ViewGroup 事件传递机制 七 )

    Android 事件分发 系列文章目录 [Android 事件分发]事件分发源码分析 ( 驱动层通过中断传递事件 | WindowManagerService 向 View 层传递事件 ) [Andr ...

  9. 【Android 事件分发】事件分发源码分析 ( ViewGroup 事件传递机制 六 )

    Android 事件分发 系列文章目录 [Android 事件分发]事件分发源码分析 ( 驱动层通过中断传递事件 | WindowManagerService 向 View 层传递事件 ) [Andr ...

最新文章

  1. Synergy 共享键盘和鼠标
  2. android studio无法新建工程,我刚刚升级了Android Studio3.3.2,但是我不能创建一个新的项目。这里是错误日志。我使用的开发语言是Java。...
  3. SpringMVC源码之参数解析绑定原理
  4. centerpoint 项目
  5. goland 远程调试go_手把手教你学Go语言,基础环境配置和Hello World
  6. CurvLearn开源 | 阿里妈妈曲率学习框架详解
  7. REST资源何时应获得其自己的地址?
  8. 每个人都应该使用的Python 3中被忽略的3个功能
  9. java数据类型后缀_java基础知识---基本数据类型
  10. 如何通过改造休闲旅行车赚到1000万元?
  11. HDU1248 寒冰王座【0/1背包+DP】
  12. 输出匹配项:grep
  13. Ubuntu 18.04右键新建文档功能
  14. 王者荣耀背景html,《王者荣耀》登录界面背景怎么修改 登录背景图片更换方法...
  15. 安全组-出入战规则设置
  16. 读《诗经·邶风·击鼓》有感-间歇博客
  17. python爬虫——scrapy+selenium爬取新浪微博及评论
  18. cocos creator屏幕适配fitHeight / fitWidth,手机端竖屏,pc端浏览器适配,pc分辨率全屏适配,血条跟随的适配
  19. STM32学习笔记(13)——模数转换ADC
  20. 相对于java,C++中的那些神奇语法

热门文章

  1. cnpm搭建私有仓库
  2. ASP.NET: 简要分析Table类的使用
  3. 程序文档的重要性理解
  4. Team Foundation Server安装指南(转)
  5. 美丽的闭包,在js中实现函数重载
  6. BZOJ1566:[NOI2009]管道取珠——题解
  7. Linux排序命令sort详解
  8. 使用 jetty-maven-plugin发布maven项目
  9. linux shell中 if else以及大于、小于、等于逻辑表达式
  10. Dom4j和Xpath(转)