Android学习笔记(36):Android的两种事件处理方式 一时失言乱红尘 2022-01-26 03:09 221阅读 0赞 Android提供了两种事件处理的方式:基于回调的事件处理 和 基于监听的事件处理。 我们来说的容易理解一点: (1)基于回调的事件处理就是继承GUI组件,并重写该组件的事件处理方法。除了一些特定的情况,大部分情况使用基于回调的事件处理方式并不是最好的选择。 (2)基于监听的事件处理就是在监听器中定义事件的处理方式,再为组件绑定监听器。这种方式无疑是更能够体现面向对象思想的。 基于回调的事件处理: View类包含如下的方法可以用于重写: boolean onKeyDown(int keyCode,KeyEvent event):按下某个按键时触发 boolean onKeyUp(int keyCode,KeyEvent event):松开某个按键时触发 boolean onKeyLongPress(int keyCode,KeyEvent event):长按某个按键时触发 boolean onKeyShortcut(int keyCode,KeyEvent event):按下某个快捷键时触发 boolean onTouchEvent(MotionEvent event):触摸屏幕时触发 我们注意到返回值都是一个boolean值,这用于标识该方法能否完全处理该事件。返回true表示能完全处理,事件不会传播出去,返回false表示不能完全处理,事件会传播出去。交给下面的事件处理方法处理。 基于监听的事件处理: 这是一种委派式的事件处理方式:普通组件(事件源)将事件处理委托给(绑定)事件监听器,事件源发生指定的事件时,通知事件监听器来处理该事件。 下图展示的是基于监听的事件处理流程图: ![Center][] 了解下下面这几种概念: 事件源:就是各种GUI组件。 事件监听器:各种XxxListener类,需要实现事件处理方法的接口。 注册监听器:调用事件源的setXxxListener(XxxListener)方法。 View包含如下几个内部接口: View.OnClickListener:处理单击事件 View.OnCreateContextMenuListener:处理单击上下文菜单项的事件 View.onFocusChangeListener:处理焦点改变事件 View.OnKeyListener:处理按键事件 View.OnLongClickListener:处理长按事件 View.OnTouchListener:处理触摸事件 一个事件监听器可以被多个GUI组件所共用。 实现事件监听器可以有如下几种形式: 内部类、外部类、Activity本身实现,匿名内部类、直接绑定到标签(这是特殊但很方便的形式)。 这各种实现如果熟悉Java的话,实现都是不难的。 [Center]: /images/20220126/980a147e6cbd48a0b533c92b6c3fe06c.png
还没有评论,来说两句吧...