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接口
四大组件不能混淆
Android事件机制的更多相关文章
- Android事件机制之二:onTouch详解
<Android事件机制之一:事件传递和消费>一文总结了Android中的事件传递和消费机制. 在其中对OntachEvent中的总结中,不是很具体.本文将主要对onTach进行总结. o ...
- Android事件机制之一:事件传递和消费
http://www.cnblogs.com/lwbqqyumidi/p/3500997.html 关于Android中的事件机制,用到的地方还是很多的,并且这个知识点还真有点复杂. 在写这篇文章前, ...
- Android事件机制全然解析
android事件是一级一级传递的,假设父控件不拦截.就传给子控件,假设父控件想要消费事件也就是拦截事件的话,须要重写这种方法 public boolean onInterceptTouchEvent ...
- 讲讲Android事件拦截机制
简介 什么是触摸事件?顾名思义,触摸事件就是捕获触摸屏幕后产生的事件.当点击一个按钮时,通常会产生两个或者三个事件--按钮按下,这是事件一,如果滑动几下,这是事件二,当手抬起,这是事件三.所以在And ...
- Android事件分发机制浅谈(一)
---恢复内容开始--- 一.是什么 我们首先要了解什么是事件分发,通俗的讲就是,当一个触摸事件发生的时候,从一个窗口到一个视图,再到一个视图,直至被消费的过程. 二.做什么 在深入学习android ...
- 通俗理解Android事件分发与消费机制
深入:Android Touch事件传递机制全面解析(从WMS到View树) 通俗理解Android事件分发与消费机制 说起Android滑动冲突,是个很常见的场景,比如SliddingMenu与Li ...
- android事件拦截处理机制详解
前段时间刚接触过Android手机开发,对它的事件传播机制不是很了解,虽然网上也查了相关的资料,但是总觉得理解模模糊糊,似是而非,于是自己就写个小demo测试了一下.总算搞明白了它的具体机制.写下自己 ...
- Android事件分发机制(下)
这篇文章继续讨论Android事件分发机制,首先我们来探讨一下,什么是ViewGroup?它和普通的View有什么区别? 顾名思义,ViewGroup就是一组View的集合,它包含很多的子View和子 ...
- Android事件分发机制(上)
Android事件分发机制这个问题不止一个人问过我,每次我的回答都显得模拟两可,是因为自己一直对这个没有很好的理解,趁现在比较闲对这个做一点总结 举个例子: 你当前有一个非常简单的项目,只有一个Act ...
随机推荐
- fs模块练习
1.fs+path练习01.判断 当前路径下的public是否存在,不存在则创建02.判断 public下的index.html文件是否存在,不存在则创建 <h1>index</h1 ...
- react+flux编程实践(一) 基础篇
1. React概览 最初听到React而还未深入了解它时,大多数人可能和我的想法一样:难道又是一个新的MVC/MVVM前端framework?深入了解后发现不是这么一回事,React关注的东西很单纯 ...
- Linux学习笔记-林耐斯Notes-Linux就该这么学
Linux学习笔记... 参考的优秀Linux网站: http://www.w3cschool.cn/linux/ http://www.linuxeye.com/ http://linux.vbir ...
- SpringMVC(一)--基础、REST、@RequestParam、POST请求乱码等
1.SpringMVC基本概述 Spring 为展现层提供的基于 MVC 设计理念的优秀的Web 框架,是目前最主流的 MVC 框架之一 Spring3.0 后全面超越 Struts2,成为最优秀的 ...
- Spring集成RabbitMQ-必须知道的几个概念
上篇<Spring集成RabbiMQ-Spring AMQP新特性>我们了解了最新spring-rabbit的2.0.0.M5版本相较于之前有哪些变化.其实使用Spring-amqp确实简 ...
- Python学习笔记之运算符之一
算数运算符 +加法运算符 -减法运算符 *乘法运算符 /除法运算符 //整除运算符 **乘积运算符(幂运算符) %取模运算符(取余) #!/usr/bin/python # -*- coding: U ...
- GreenOpenPaint简介
一.项目概述 类似Windows系统下面的画图程序,但是已经从底层全部重新实现,改造成为"图像处理"类程序的基本运行框架. 由于是demo界面,较为简陋,但是因为框架已经搭建完善, ...
- MongoDB对应SQL语句
-------------------MongoDB对应SQL语句------------------- 1.Create and Alter 1. sql: crea ...
- Centos 6启动流程详解
author:JevonWei 版权声明:原创作品 Centos6 启动流程 POST开机自检 当按下电源键后,会启动ROM芯片中的CMOS程序检查CPU.内存等硬件设备是否正常运行,CMOS中的程序 ...
- 页面性能优化和高频dom操作
一.DOM操作影响页面性能的核心问题 通过js操作DOM的代价很高,影响页面性能的主要问题有如下几点: 访问和修改DOM元素 修改DOM元素的样式,导致重绘或重排 通过对DOM元素的事件处理,完成与用 ...