
上QQ阅读APP看书,第一时间看更新
2.3 触摸屏事件
上一节讲的是Android键盘事件,本节将介绍同样基于回调机制的Android触摸屏事件。本节的例子实现在Android设备屏幕上描绘一个红色的小圆球,这个小圆球随着手指在屏幕上的移动而移动。

上面的程序自定义了一个View类,重写了View组件的onTouchEvent(MotionEvent event)方法,使该组件能够处理触摸屏事件。本例的onTouchEvent方法中获取了当前手指的x、y坐标,然后在当前位置上用该View重绘小球。
MotionEvent是用于处理运动事件的类,这个类可以获取动作的类型、坐标。在Android 2.0版本之后,MotionEvent中还包含了多点触摸的信息,当有多个触点同时起作用的时候,可以获得触点的数目和每一个触点的坐标。
接下来就是直接在界面中使用该View组件了。


图2.3 跟随手指的小球
接下来在Activity类中无须为这个View绑定任何事件监听器,因为这个View自己就可以处理它的触摸屏事件了。运行效果如图2.3所示。
通过为View提供事件处理的回调方法,可以很好地将时间处理方法封装在View内部,从而提高程序的内聚性。
基于回调的事件处理更适合那种事件处理逻辑比较固定的View。