《移动操作系统原理与实践——基于Java语言的Android应用开发》:
提示
匿名内部类就是在使用接口(或者抽象类)的时候,直接给出这个接口(或者抽象类)实现创建实例。在Java中,接口(或者抽象类)是不能实例化的,实例化的是它们的实现类。匿名内部类的优点是: 编译之后代码紧凑,可以在一定程度上减少字节码文件长度,提高虚拟机的加载速度,从而提高运行速度。它的缺点是: 代码可读性差。
纵观三种事件处理模型,各有利弊,用户可以根据自己的喜好来选择,在实际的应用开发过程中,事件处理情况会更加复杂,���一个事件源上会有多个不同事件,因此有的时候不是单一的一种处理模型,而是多种模型的结合。
5.4屏幕上的事件处理
在Android系统中,屏幕是通过活动(Activity)管理的,一个活动相当于一个屏幕,那么屏幕上的事件处理就是活动的事件处理,活动是事件源,活动有触摸事件和键盘事件等。
屏幕事件是在Android应用中常用的事件,本节介绍屏幕中的触摸事件和键盘事件。
5.4.1触摸事件
现在,智能手机设计的一个理念是: 可触摸且大屏幕。Android系统支持触摸屏开发,触摸屏事件要通过运动事件(MotionEvent)接收信息,如果屏幕中触摸事件的事件源是活动,开发人员需要重写活动方法:
public boolean onTouchEvent(MotionEvent event)
onTouchEvent方法返回值是布尔类型,返回true表示已经处理了该事件,false表示还没有处理该事件。参数event是MotionEvent类型,MotionEvent是运动事件,通过MotionEvent的int getAction()方法可以获得触摸动作,触摸动作有三种,通过MotionEvent三个常量表示:
MotionEvent.ACTION_UP。在屏幕上手指抬起。
MotionEvent.ACTION_DOWN。在屏幕上手指按下。
MotionEvent.ACTION_MOVE。在屏幕上手指移动。
另外,触摸点的坐标可以通过MotionEvent的getX()和getY()方法获得。
5.4.2实例: 屏幕触摸事件
图510是屏幕触摸事件实例,当手指在屏幕上按下、抬起和移动时候,手指的动作会显示在屏幕的标签(TextView)上,触摸点的坐标也会显示在屏幕的标签(TextView)。
……