文档章节

我的Android应用学习笔记(三)回调事件处理和监听事件处理

斯基劳绅士
 斯基劳绅士
发布于 2015/02/04 23:12
字数 593
阅读 53
收藏 0

Android 事件处理分为回调事件处理和监听事件处理两类

 

(一)回调事件处理:

当用户操作激发某事件时由事件源自身的处理方法来处理该事件,往往通过重写View组件来实现

 

事件(Event):用户的某个操作所携带的信息

事件源(EventSource):产生事件的源头,通常是一些可视化的组件(如Button)

监听器(EventListener):监听事件发生与响应事件的机制

 

例如(重写一个Button类):

public class ExButton extends Button{

	public ExButton(Context context, AttributeSet attrs) {
		super(context, attrs);
		// TODO 自动生成的构造函数存根
	}
	
	@Override
	public boolean onKeyDown(int keyCode, KeyEvent event) {
		// TODO 自动生成的方法存根
		this.setText("it has been clicked");
		return true;
	}

}



直接在布局文件中应用该组件:

<com.example.test.ExButton
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="a Button"
        />



回调事件处理的传播问题:

回调事件处理需要返回一个boolean值,当返回时true时,表示处理方法已经完全处理该事件,事件不会传播;

当返回是false时,事件未处理完全,会传播

传播顺序为:监听器→组件提供的回调方法→组件所在的Activity

其中任何一个返回true,中断处理

 

(二)监听器事件处理

类似于Java中AWT和Swing编程的时间处理机制

三要素:事件源,事件,事件监听器

核心:实现事件监听器

 

需要事件(Event)对象的情况:当事件发生时有比较多的信息需要传给事件监听器时,则将信息封装成Event对象,

将Event对象传递给事件处理函数。

 

监听器(Listener)的几种形式:

1)匿名内部类:

使用最广泛,直接在将事件监听器注册给事件源时(view.setOnXxxListener(new OnXxxListener))创建匿名内部类形式

事件监听器

例子:

button.setOnClickListener(new OnClickListener(){
        	@Override
        	public void onClick(View _view){
        		Intent intent=new Intent(MainActivity.this,secondActivity.class);
        		startActivity(intent);
        	}
        });



2)内部类:

例如:

button.setOnClickListener(new ExClickListener());

class ExClickListener implements View.OnClickListener{}



3)外部类:

在外部实现一个监听器接口,由于与GUI界面不耦合,一般不使用

 

4)Activity本身实现Listener接口:

直接在Activity内写事件处理方法

 

5)在XML中写事件监听:

android:onClick="事件处理方法"


  

© 著作权归作者所有

斯基劳绅士
粉丝 9
博文 11
码字总数 13905
作品 0
兰州
程序员
私信 提问
Android平台的事件处理机制和手指滑动例子

作者:田仁智 Android平台的事件处理机制有两种 基于回调机制的事件处理:Android平台中,每个View都有自己的处理事件的回调方法,开发人员可以通过重写View中的这些回调方法来实现需要的响应...

晨曦之光
2012/03/14
360
0
深入解析Andoird事件分发机制

本文详细讲述了Android事件分发机制,包括事件源,事件,事件监听器的概念,现在整理出来分享给Android程序员兄弟们,希望给他们的开发工作带来帮助。 一、监听与回调 第一,要明白和事件相关的...

alunbar
2015/10/15
624
1
Andromeda:适用于多进程架构的组件通信框架(下)

  首先插播一条自己的广告——有些朋友可能都知道了,我最近创建了一个知识星球,在这里试了一周,发现私密圈子的效率果然比群要好很多,付费门槛过滤掉了大部分广告和没有意愿学习分享的人...

Android群英传
2018/05/29
0
0
Android游戏开发之处理按键的响应方式(二十二)

Android游戏开发之处理按键的响应方式 雨松MOMO原创文章如转载,请注明:转载自雨松MOMO的博客原文地址:hhttp://blog.csdn.net/xys289187120/article/details/6685378 1.onKeyDown 方法 onKe...

彭博
2012/03/09
76
0
Android游戏开发之处理按键的响应方式(二十二)

Android游戏开发之处理按键的响应方式 雨松MOMO原创文章如转载,请注明:转载自雨松MOMO的博客原文地址:hhttp://blog.csdn.net/xys289187120/article/details/6685378 1.onKeyDown 方法 onKe...

晨曦之光
2012/03/07
377
1

没有更多内容

加载失败,请刷新页面

加载更多

CentOS7.6中安装使用fcitx框架

内容目录 一、为什么要使用fcitx?二、安装fcitx框架三、安装搜狗输入法 一、为什么要使用fcitx? Gnome3桌面自带的输入法框架为ibus,而在使用ibus时会时不时出现卡顿无法输入的现象。 搜狗和...

技术训练营
昨天
5
0
《Designing.Data-Intensive.Applications》笔记 四

第九章 一致性与共识 分布式系统最重要的的抽象之一是共识(consensus):让所有的节点对某件事达成一致。 最终一致性(eventual consistency)只提供较弱的保证,需要探索更高的一致性保证(stro...

丰田破产标志
昨天
8
0
docker 使用mysql

1, 进入容器 比如 myslq1 里面进行操作 docker exec -it mysql1 /bin/bash 2. 退出 容器 交互: exit 3. mysql 启动在容器里面,并且 可以本地连接mysql docker run --name mysql1 --env MY...

之渊
昨天
10
0
python数据结构

1、字符串及其方法(案例来自Python-100-Days) def main(): str1 = 'hello, world!' # 通过len函数计算字符串的长度 print(len(str1)) # 13 # 获得字符串首字母大写的...

huijue
昨天
6
0
PHP+Ajax微信手机端九宫格抽奖实例

PHP+Ajax结合lottery.js制作的一款微信手机端九宫格抽奖实例,抽奖完成后有收货地址添加表单出现。支持可以设置中奖概率等。 奖品列表 <div class="lottery_list clearfix" id="lottery"> ......

ymkjs1990
昨天
5
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部