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

什么是事件?

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

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

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

  四大组件不能混淆

Android事件机制的更多相关文章

  1. Android事件机制之二:onTouch详解

    <Android事件机制之一:事件传递和消费>一文总结了Android中的事件传递和消费机制. 在其中对OntachEvent中的总结中,不是很具体.本文将主要对onTach进行总结. o ...

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

    http://www.cnblogs.com/lwbqqyumidi/p/3500997.html 关于Android中的事件机制,用到的地方还是很多的,并且这个知识点还真有点复杂. 在写这篇文章前, ...

  3. Android事件机制全然解析

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

  4. 讲讲Android事件拦截机制

    简介 什么是触摸事件?顾名思义,触摸事件就是捕获触摸屏幕后产生的事件.当点击一个按钮时,通常会产生两个或者三个事件--按钮按下,这是事件一,如果滑动几下,这是事件二,当手抬起,这是事件三.所以在And ...

  5. Android事件分发机制浅谈(一)

    ---恢复内容开始--- 一.是什么 我们首先要了解什么是事件分发,通俗的讲就是,当一个触摸事件发生的时候,从一个窗口到一个视图,再到一个视图,直至被消费的过程. 二.做什么 在深入学习android ...

  6. 通俗理解Android事件分发与消费机制

    深入:Android Touch事件传递机制全面解析(从WMS到View树) 通俗理解Android事件分发与消费机制 说起Android滑动冲突,是个很常见的场景,比如SliddingMenu与Li ...

  7. android事件拦截处理机制详解

    前段时间刚接触过Android手机开发,对它的事件传播机制不是很了解,虽然网上也查了相关的资料,但是总觉得理解模模糊糊,似是而非,于是自己就写个小demo测试了一下.总算搞明白了它的具体机制.写下自己 ...

  8. Android事件分发机制(下)

    这篇文章继续讨论Android事件分发机制,首先我们来探讨一下,什么是ViewGroup?它和普通的View有什么区别? 顾名思义,ViewGroup就是一组View的集合,它包含很多的子View和子 ...

  9. Android事件分发机制(上)

    Android事件分发机制这个问题不止一个人问过我,每次我的回答都显得模拟两可,是因为自己一直对这个没有很好的理解,趁现在比较闲对这个做一点总结 举个例子: 你当前有一个非常简单的项目,只有一个Act ...

随机推荐

  1. Spring(二)

    1.1 AOP概述 1.1.1什么是AOP AOP(Aspect Oriented Programing) 面向切面编程. AOP采取横向抽取机制,取代了传统纵向继承体系重复性代码(性能监视.事务管理 ...

  2. shell 编程之函数

    shell 函数的定义和普通的c语言函数定义差不多 function(){ } shell 函数的返回值,可以显示的return 语句,如果没有return  那么就会把最后一条语句的执行结果作为返回 ...

  3. 解析Linux中的VFS文件系统之文件系统的来源与简介(一)

    最近挂载了N多的文件系统,大致了不同文件系统的相应特性及挂载方式,却还是对Linux的文件系统没有从源码方面去了解.不求甚解确实不好不好. 于是借鉴一些大牛的博客及自己的理解,总结了博客系列: 一.V ...

  4. CentOS 7 服务器配置--配置iptables防火墙

    #检查服务器是否安装了iptables systemctl status iptables.service #安装iptables yum install -y iptables #更新iptable ...

  5. BYS推荐MS前端PhoneCall面试问题整理-1

    1. SQL: 查出产品对应的销售数量,会用到2个表之间的连接: select Products.ProductName, Sales.SalesAmount from Product left ou ...

  6. win下安装Redmine常见错误解决方案

    成长型公司,最近需要项目管理的软件,所以在windows的服务器上搭建了redmine,其中也遇到了两个坑,现记录下来. Redmine是用Ruby开发的基于web的项目管理软件,是用ROR框架开发的 ...

  7. VMware Workstation 12 Player之安装林耐斯-Linux Red Hat 7 -系统

    Linux系统之Red Hat 7 安装笔记... Red Hat(红帽)公司(NYSE:RHT)是一家开源解决方案供应商,也是标准普尔500指数成员.总部位于美国北卡罗来纳州的罗利市,截止2015年 ...

  8. 9.19.3 反射和Properties(重要)

    dbinfo.properties文件中的内容:     driver oracle.jdbc.driver.OracleDriver url=jdbc:oracle:thin:@192.168.1. ...

  9. Linux虚拟机之间实现密钥登陆

    Server1与Server2在同一虚拟网络当中,在Server2中使用Server1的Hostname连接Server1,并且无需密码认证. Server1,  Hostname:  hlmvmea ...

  10. java使用字节流和字符流实现文件复制

    大家在Java开发中都会遇到文件复制的文件,众所周知,需要通过文件输入输出流实现. 那究竟该怎么做那,话不多说,直接上代码: 一,使用字节流复制文件 public class FileByteCopy ...