首页 理论教育 Android游戏开发:基于回调的事件传播

Android游戏开发:基于回调的事件传播

时间:2023-10-22 理论教育 版权反馈
【摘要】:在Android应用程序中,几乎所有基于回调的事件处理方法都有一个boolean类型的返回值,该返回值用于标识该处理方法是否完全处理该事件。因为本实例程序没有阻止事件的传播,所以在实例中可以看到事件从Button传播到Activity的情形。图8-10 执行效果图8-11 输出回调信息由此可见,当该组件上发生某个按键被按下的事件时,Android系统最先触发的是在该按键上绑定的事件监听器,接着才会触发该组件提供的事件回调方法,然后会传播到该组件所在的Activity。

Android游戏开发:基于回调的事件传播

在Android应用程序中,几乎所有基于回调的事件处理方法都有一个boolean类型的返回值,该返回值用于标识该处理方法是否完全处理该事件。不同返回值的具体说明如下。

■ 如果事件处理的方法返回true,表明处理方法已完全处理该事件,该事件不会传播

出去。

■ 如果事件处理的方法返回false,表明该处理方法并未完全处理该事件,该事件会传播

出去。

例如在下面的实例中,演示了在Android系统中传播事件的基本过程。

978-7-111-54543-9-Part02-429.jpg

本实例重写了Button类的onKeyDown方法,而且重写了Button所在Activity的onKeyDown(int keyCode,KeyEvent event)方法。因为本实例程序没有阻止事件的传播,所以在实例中可以看到事件从Button传播到Activity的情形。本实例的具体实现流程如下。

(1)编写布局文件main.xml,在屏幕中插入一个Button按钮控件,具体实现代码如下

978-7-111-54543-9-Part02-430.jpg

978-7-111-54543-9-Part02-431.jpg

(2)编写Java程序文件MyButton.java,功能是定义一个从Button源生出的子类MyButton,具体实现代码如下。(www.xing528.com)

978-7-111-54543-9-Part02-432.jpg

(3)编写文件Propagation.java,功能是调用前面的自定义组件MyButton,并在Activity中重写public Boolean onKeyDown(int keyCode.KeyEvent event)方法,该方法会在某个按键被按下时被回调。文件Propagation.java的具体实现代码如下。

978-7-111-54543-9-Part02-433.jpg

978-7-111-54543-9-Part02-434.jpg

在模拟器中的执行效果如图8-10所示。如果把焦点放在按钮上,然后按下模拟器上的任意按键在DDMS的LogCat的界面中将会显示如图8-11所示的输出信息。

978-7-111-54543-9-Part02-435.jpg

图8-10 执行效果

978-7-111-54543-9-Part02-436.jpg

图8-11 输出回调信息

由此可见,当该组件上发生某个按键被按下的事件时,Android系统最先触发的是在该按键上绑定的事件监听器,接着才会触发该组件提供的事件回调方法,然后会传播到该组件所在的Activity。如果让任何一个事件处理方法返回true,那么这个事件将不会继续向外传播。假如改写本实例中的Activity代码,将程序中标记为(1)部分的代码改为return true,再次运行程序后将会发现:按钮上的监听器阻止了事件的传播。

免责声明:以上内容源自网络,版权归原作者所有,如有侵犯您的原创版权请告知,我们将尽快删除相关内容。

我要反馈