android高级空间 )

上传人:xzh****18 文档编号:46737844 上传时间:2018-06-27 格式:PDF 页数:62 大小:2.32MB
返回 下载 相关 举报
android高级空间 )_第1页
第1页 / 共62页
android高级空间 )_第2页
第2页 / 共62页
android高级空间 )_第3页
第3页 / 共62页
android高级空间 )_第4页
第4页 / 共62页
android高级空间 )_第5页
第5页 / 共62页
点击查看更多>>
资源描述

《android高级空间 )》由会员分享,可在线阅读,更多相关《android高级空间 )(62页珍藏版)》请在金锄头文库上搜索。

1、 A n d r o i d应用程序用户界面的各控件仅能被用户看到, 那是“ 死” 的东西, 只有它们与用户 进行交互, 触发了新的动作发生, 那么, 应用程序就活了。例如, 单击一个按钮, 进入了另一个界面。或者, 单击了下拉框, 出现若干选项供选择。又或者, 图片或文本开始像走马灯似的动起来等。因此, 在开发中, 不仅要会在布局文件中描述U I, 还必须在代码文件中做些工作, 才能得到一个“ 活着” 的应用程序。本章将介绍的控件, 都需要结合一定的代码编程, 才能看到其使用时的完整效果。在介绍它们之前, 先来学习A n d r o i d系统的事件处理机制。5 . 1 A n d r o

2、i d事件处理机制在A n d r o i d平台上, 对事件的处理机制有两种:一种是基于回调机制的事件处理, 另一种 是基于监听接口的事件处理。5. 1. 1 基于回调机制的事件处理回调机制实质就是将事件的处理绑定在控件上, 由图形用户界面控件自己处理事件, 回调机制需要自定义V i e w来实现。回调不是由该方法的实现方直接调用, 而是在特定的事件或条件发生时, 由另外的一方通过一个接口来调用, 用于对该事件或条件进行响应。在A n d r o i d平台中, 每个V i e w都有自己的处理事件的回调方法, 开发人员可以通过重写V i e w中的这些回调方法来实现需要的响应事件。当某个事

3、件没有被任何一个V i e w处理时, 便会调用A c t i v i t y中相应的回调方法。V i e w类提供了许多公用的捕获用户在界面上触发事件的回调方法, 为了捕获和处理事 件, 必须继承某个类( 如V i e w类) , 并重写这些方法, 以便开发者自己定义具体的处理逻辑代码。下面介绍一些常见的回调方法。1. o n K e y D o w n( ) 方法几乎所有的V i e w都有o n K e y D o w n( ) 方法, 该方法用来捕捉手机键盘被按下的事件。该方法是接口K e y E v e n t . C a l l b a c k中的抽象方法, 所有的V i e w全

4、部实现了该接口并重写了该方法。o n K e y D o w n( ) 方法声明格式:p u b l i cb o o l e a no n K e y D o w n( i n tk e y C o d e , K e y E v e n te v e n t )9 6 1)参数说明 (1)参数k e y C o d e:该参数为i n t类型, 表示被按下的键值( 即键盘码) 。手机键盘中每个 键都会有其单独的键盘码, 在应用程序中都是通过键盘码才知道用户按下的是哪个键。注意,不同型号的手机中, 键值可能不同。(2)参数e v e n t:该参数为按键事件的对象, 其中包含触发事件的详细信

5、息, 例如事件的 状态、 事件 的类型、 事件 发生的时 间等。当用户按 下 按 键 时, 系 统 会 自 动 将 事 件 封 装 成K e y E v e n t对象供应用程序使用。2)返回值 该方法的返回值为一个b o o l e a n类型的变量。当返回t r u e时, 表示已经完整地处理了这个事件, 并不希望其他的回调方法再次进行处理;而当返回f a l s e时, 表示并没有完全处理完该事件, 更希望其他回调方法继续对其进行处理, 例如A c t i v i t y中的回调方法。2. o n K e y U p( ) 方法o n K e y U p( ) 方法用来捕捉手机键盘按键抬

6、起的事件。该方法同样是接口K e y E v e n t .C a l l b a c k中的一个抽象方法, 并且所有的V i e w同样全部实现了该接口并重写了该方法。o n K e y U p( ) 方法声明格式:p u b l i cb o o l e a no n K e y U p( i n tk e y C o d e , K e y E v e n te v e n t )o n K e y U p( ) 方法的参数与返回值与o n K e y D o w n( ) 方法相同, 在此不作赘述。该方法的使用方法与o n K e y D o w n( ) 基本相同, 只是该方法会在按

7、键抬起时被调用。如果用户需要对按键抬起事件进行处理, 通过重写该方法即可以实现。3. o n T o u c h E v e n t( ) 方法o n T o u c h E v e n t( ) 方法用来处理手机屏幕的触摸事件。该方法在V i e w类中有定义, 并且 所有的V i e w子类全部重写了该方法。o n T o u c h E v e n t( ) 方法声明格式:p u b l i cb o o l e a no n T o u c h E v e n t( M o t i o n E v e n te v e n t )参数说明:参数e v e n t:为手机屏幕触摸事件封装

8、类的对象, 其中封装了该事件的所有信息, 例如触摸的位置、 触摸的类型以及触摸的时间等。该对象会在用户触摸手机屏幕时被创建。该方法的返回值机理与键盘响应事件的相同, 在此不作赘述。该方法并不像之前介绍过的方法只处理一种事件, 一般情况下以下三种情况的事件全部由o n T o u c h E v e n t( ) 方法处理, 只是三种情况中的动作值不同。(1)屏幕被按下:当屏幕被按下时, 会自动调用该方法来处理事件, 此时M o t i o n E v e n t .g e t A c t i o n( ) 的值为M o t i o n E v e n t . A C T I ON_D OWN,

9、 如果在应用程序中需要处理屏幕被按下 的事件, 只需重写该回调方法, 然后在方法中进行动作的判断即可。(2)屏幕被抬起:当触控笔离开屏幕时触发的事件, 该事件同样需要o n T o u c h E v e n t( ) 方 法来捕捉, 然后在方法中进行动作判断。当M o t i o n E v e n t . g e t A c t i o n( ) 的值为M o t i o n E v e n t .A C T I ON_U P时, 表示是屏幕被抬起的事件。 (3)在屏 幕 中 拖 动:该 方 法 还 负 责 处 理 触 控 笔 在 屏 幕 上 滑 动 的 事 件, 同 样 是 调 用9 7

10、 M o t i o n E v e n t . g e t A c t i o n( ) 方法来判断动作值是否为M o t i o n E v e n t . A C T I ON_MOV E再进行 处理。下面通过一个简单的案例介绍手机屏幕的触摸事件。【 案例5. 1】 在屏幕区域内触摸滑动, 捕捉按下、 抬起事件的状态, 滑动的坐标, 触点压力, 触点的大小等信息。【 说明】 在J a v a代码中, 有一系列的g e t . . .( ) 方法可用。在此例中需要用到下列方法。(1)使用M o t i o n E v e n t . g e t A c t i o n( ) 方法来获取屏幕

11、被按下等事件的状态。 (2)使用E v e n t . g e t X( ) 、E v e n t . g e t Y( ) 方法来获取触点坐标值。 (3)使用E v e n t . g e t P r e s s u r e( ) 方法来获取触屏压力大小。 (4)使用E v e n t . g e t S i z e( ) 方法来获取触点尺寸。 【 开发步骤及解析】(1)创建项目。在E c l i p s e中创建一个名为A c t i v i t y_T o u c h的A n d r o i d项目。其应用程 序名为“T o u c h” , 包名为c n . c o m. s g m

12、s c . t o u c h,A c t i v i t y组件名为T o u c h A c t i v i t y。(2)设计布局。编写r e s/l a y o u t目录下的m a i n . x m l文件, 代码如下所示。1 ? x m lv e r s i o n =“ 1. 0 “e n c o d i n g =“ u t f -8 “? 2 L i n e a r L a y o u tx m l n s : a n d r o i d =“ h t t p : / / s c h e m a s . a n d r o i d . c o m / a p k / r e

13、 s / a n d r o i d “ 3 a n d r o i d : o r i e n t a t i o n =“ v e r t i c a l “ 4 a n d r o i d : b a c k g r o u n d =“#F F 0 0 F F “ 5 a n d r o i d : l a y o u t_w i d t h =“ f i l l_p a r e n t “ 6 a n d r o i d : l a y o u t_h e i g h t =“ f i l l_p a r e n t “ 7 T e x t V i e w 8 a n d r o i

14、 d : i d =“+i d / t o u c h_a r e a “ 9 a n d r o i d : l a y o u t_w i d t h =“ f i l l_p a r e n t “ 1 0 a n d r o i d : l a y o u t_h e i g h t =“ 3 6 0 d i p “ 1 1 a n d r o i d : t e x t =“触摸事件测试区“ 1 2 a n d r o i d : t e x t C o l o r =“#9 9 F F F F “ 1 3 / 1 4 T e x t V i e w 1 5 a n d r o i

15、d : i d =“+i d / e v e n t_l a b e l “ 1 6 a n d r o i d : l a y o u t_w i d t h =“ f i l l_p a r e n t “ 1 7 a n d r o i d : l a y o u t_h e i g h t =“ w r a p_c o n t e n t “ 1 8 a n d r o i d : t e x t =“触摸事件: “ 1 9 a n d r o i d : t e x t C o l o r =“#F F F F F F “ 2 0 / 2 1/ L i n e a r L a y o

16、 u t第71 3行声明了一个T e x t V i e w控件。为了在触摸滑动时将相关的信息显示在屏幕 下方, 所以在第1 0行设置T e x t V i e w的高为3 6 0 d i p。第1 42 0行声明另一个T e x t V i e w控件。该控件的资源i d为“e v e n t_l a b e l” 。 (3)开发逻辑代码:打开s r c/c n . c o m. s g m s c . t o u c h包下的T o u c h A c t i v i t y . j a v a文件, 并 编辑之。代码如下所示。1 p a c k a g ec n . c o m . s g m s c . t o u c h ; 2 3 i m p o r ta n d r o i d . a p p . A c t i v i t y ; 4 i m p o r ta n d r o i d . o s . B u n d l e ;

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 行业资料 > 其它行业文档

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号