上一页 1 2 3 4 5 6 7 8 9 10 ··· 15 下一页
几乎所有基于回调的事件处理方法都有一个boolean类型的返回值,该返回值用于标识该处理方法是否能完全处理该事件:如果处理事件的回调方法返回true,表明该处理方法以完全处理该事件,该事件不会传播出去。如果处理事件的回调方法返回false,表明该处理方法并未完全处理该事件,该事件会传播出去。 对于基于回调的事件传播而言,某组件上所发生的事件不仅激发该组件上的回调方法,也会触发该组件所在Activity的回调用法——只要事件能传播到该Activiy。 下面的一个程序示范了Android系统中的事件传播,该程序重写了Button类的onKeyDown(int keyCode,KeyEvent e. Read More
posted @ 2013-11-05 12:06 TealerProg Views(1023) Comments(0) Diggs(0) Edit
如果说事件监听机制是一种委托式的事件处理,那么回调机制则恰好与之相反;对于基于回调的事件处理模型来说,事件源与事件监听器是统一的,或者说事件监听器完全消失了。当用户在GUI组件上激发某个事件时,组件自己特定的方法将会负责处理该事件。 为了使用回调机制类处理GUI组件上所发生的事件,我们需要为该组件提供对应的事件处理方法——而Java又是一种静态语言,我们无法为某个对象动态的添加方法,因此只能继承GUI组件类,并重写该类的事件处理方法来实现。 为了实现回调机制的事件处理,Android为所有GUI组件都提供了一些事件处理的回调方法,以View为例,该类包含如下方法。boolean onKeyD. Read More
posted @ 2013-11-05 09:09 TealerProg Views(1942) Comments(0) Diggs(0) Edit
Android还有一种更简洁的绑定事件监听器的方式,直接在界面布局文件中为指定标签绑定事件处理方法。 对于很多Android界面组件标签而言,它们都支持onClick属性的属性值就是一个形如xxx(View source)的方法的方法名。 例如下面界面界面布局文件: 上面的程序中粗体字代码用于在界面布局文件中为Button按钮绑定一个事件处理方法:clickHandler,这就意味着开发者需要在该界面布局对应的Activity中定义一个void clickHandler(View source)方法,该方法将会负责处理该按钮上的单击事件。下面是该界面布局... Read More
posted @ 2013-11-04 21:28 TealerProg Views(617) Comments(0) Diggs(0) Edit
大部分时候,事件处理器都没有什么复用价值(可复用的代码通常都被抽象成了业务逻辑方法),因此大部分事件监听器只是临时使用一次,所以使用匿名内部类形式的事件监听器更合适。实际上,这种形式是目前最广泛的事件监听器形式。下面的程序使用匿名内部类来创建事件监听器。 下面的程序示范匿名内部类作为事件监听器类 该实例的界面布局文件如下: 该Activity的后台代码如下:package com.example.studyevent;import android.os.Bundle;import android.app.Activity;import android.vi... Read More
posted @ 2013-11-04 20:55 TealerProg Views(2881) Comments(0) Diggs(0) Edit
这种形式使用Activity本身作为监听器类,可以直接在Activity类中定义事件处理方法,这种形式非常简洁。但这种做法有两个缺点:这种形式可能造成程序结构混乱,Activity的主要职责应该是完成界面初始化工作,但此时还需要包含事件处理器方法,从而引起混乱。如果Activity界面类需要实现监听器接口,让人感觉比较怪异。 下面的程序使用Activity对象作为事件监听器。 该程序的界面布局文件如下: 该程序的后台代码如下:package com.example.studyevent;import android.os.Bundle;import android.a... Read More
posted @ 2013-11-04 17:15 TealerProg Views(1382) Comments(0) Diggs(0) Edit
使用内部类定义事件监听器类的形式比较少见,主要因为如下两个原因:事件监听器通常属于特定的GUI界面,定义成外部类不利于提高程序的内聚性。外部类形式的事件监听器不能自由访问创建GUI界面的类中的组件,编程不够简洁。但如果某个事件监听器确实需要被多个GUI界面所共享,而且主要是完成某种业务逻辑的实现,则可以考虑使用外部类的形式来定义事件监听器类。下面的程序定义了一个外部类作为OnLongClickListener类,该事件监听器实现了发送短信的功能。package com.example.studyevent;import android.app.Activity;import android.. Read More
posted @ 2013-11-04 16:55 TealerProg Views(927) Comments(0) Diggs(0) Edit
前面两个程序中所使用的事件监听器类都是内部类形式,使用内部类可以在当前类中复用该监听器类;因为监听器是外部类的内部类,所以可以自由访问外部类的所有界面组件。这也是内部类的两个优势。 Read More
posted @ 2013-11-04 16:18 TealerProg Views(660) Comments(0) Diggs(0) Edit
当外部动作在Android组件上执行操作时,系统会自动生成事件对象,这个事件对象会作为参数传给事件源上注册的事件监听器。 事件监听的处理模型涉及三个成员:事件源、事件和事件监听器,其中事件源最容易创建,任意界面组件都看作为事件源;事件的产生无须程序员关心,它是由系统自动产生的;所以实现事件监听器是整个事件处理的核心。 Android对事件监听模型做了进一步进化:如果事件源触发的事件足够简单、事件里封装的事件比较有限,那就无须封装事件对象、将事件对象传入事件监听器。 但对于键盘事件、触摸屏事件等,此时程序需要获取事件发生的详细信息:例如键盘事件需要获取是哪个键触发的事件;触摸屏事件需要获取事件. Read More
posted @ 2013-11-04 15:29 TealerProg Views(1813) Comments(0) Diggs(0) Edit
在事件监听的处理模型中,主要涉及如下三类对象。Event Source(事件源):事件发生的场所,通常就是各个组件,例如按钮、窗口、菜单等。Event(事件):事件封装了界面组件上发生的特定事情(通常就是一次用户操作)。如果程序需要获得界面组件上所发生事件的相关信息,一般通过Event对象来取得。Event Listener(事件监听器):负责监听事件源所发生的事件,并对各种事件作出相应的响应。 当用户按下一个按钮或者单击某个菜单项时,这些动作就会激发一个相应的事件,该事件就会触发事件源上注册的事件监听器(特殊的Java对象),事件监听器调用对应的事件处理器(事件监听器里的实例方法)来做相应. Read More
posted @ 2013-11-04 09:30 TealerProg Views(2033) Comments(0) Diggs(0) Edit
不管是桌面应用还是手机应用程序,面对最多的就是用户,经常需要处理的就是用户的动作——也就是需要为用户动作提供响应,这种为用户动作提供响应的机制就是事件处理。 Android提供了强大的事件处理机制,包括两套事件处理机制:基于监听的事件处理。基于回调的事件处理。 对于Android基于监听的事件处理而言,主要做法就是为Android界面组件绑定特定的监听器。 对于Android基于回调的事件处理而言,主要做法就是重写Android组件特定的回调方法,或者重写Activity的回调方法。Android为绝大部分组件都提供了事件响应的回调方法,我们只需要重写他们即可。 一般来说,基于回调的事件处理. Read More
posted @ 2013-11-04 09:14 TealerProg Views(268) Comments(0) Diggs(0) Edit
上一页 1 2 3 4 5 6 7 8 9 10 ··· 15 下一页