Android游戏开发系列教程第三讲(事件处理)

总的可分为6大事件:
1.监听器事件
  view是android用户界面的基类
  view中包含了以下几个内部接口,它们分别是:
  onClickListener----监听屏幕点击事件
  onCreateContextMenuListener----监听上下文菜单创建事件
  onFocusChangeListener----监听焦点切换事件
  onKeyListener----监听按键事件
  onLongClickListener----监听焦点切换事件
  onTouchListener----监听屏幕触摸事件
2.按键事件
  最常用的两个方法就是onKeyDown和onKeyUp
  前者是按键被按下时候触发的,如果一直按
  住,就会触发很多次,后者是按键松开时候
  触发的.
  触发的事件是KeyEvent事件:
  常用按键键值:
  常用数字按键:KEYCODE_0到KEYCODE_9
  常用字母按键:KEYCODE_A到KEYCODE_Z
  常用方向按键:KEYCODE_DPAD_CENTER|KEYCODE_DPAD_DOWN|
  KEYCODE_DPAD_LEFT|KEYCODE_DPAD_RIGHT|KEYCODE_DPAD_UP
  菜单按键:KEYCODE_MENU
  音量按键:KEYCODE_VOLUME_DOWN|KEYCODE_VOLUME_UP
  返回按键:KEYCODE_BACK
  注意:全触摸屏在输入法的模式下按下数字和字母键不会触发这个事件
  ,只有按下回退等一些操作性质的按钮才仅仅会触发onKeyUp,onKeyDown
  不会被触发,正常的key比如菜单键,音量等,才能正常演示按下和松开事件
3.触摸屏事件
  触摸屏事件触发的事件是onTouchEvent(MotionEvent event)
  触摸屏有按下和松开的事件,所以会执行两次onTouchEvent方法
4.轨迹球事件
  轨迹球事件触发的事件是onTrackballEvent(MotionEvent event)
  在模拟器中按下F6,模拟器上方出现滚动的小球,鼠标的移动就是
  轨迹球的移动事件,鼠标左键按下就是轨迹球的按下事件
  注意:很多android手机中不支持轨迹球
5.手势事件
  支持一些触摸屏的手势:左划|下划|上划|右划
  实现OnGestureListener接口,并实现其方法:
  onDown(MotionEvent e)//触摸屏按下事件
  onFling()//划过事件
  onLongPress(MotionEvent e)//长按事件处理
  onScroll()//另外一种划过的处理方式
  Gesture的各个方法触发解释:
  最基本的在View里面 onTouchEvent,它主要实现的功能是Flip,主要原理就是按下的时候记录坐标(用到MotionEvent.ACTION_DOWN),然后滑动(MotionEvent.ACTION_MOVE),然后在抬起(MotionEvent.ACTION_UP),在抬起的时候在记录坐标,把按下的坐标和抬起的坐标做比较,这样就能判断出是左还是右了,然后作出相应的处理。一般情况下,我们执行程序操作时就在ACTION_UP时进行。
  最基本的就是onTouchEvent,同时 Android平台还给我们提供了更多彩的操作方式,我们需要android.view.GestureDetector
  android.view.GestureDetector.SimpleOnGestureListener 这两个类
  新建一个类继承SimpleOnGestureListener,HahaGestureDetectorListener
  可以实现以下event事件。
  boolean onDoubleTap(MotionEvent e)
  解释:双击的第二下Touch down时触发
  boolean onDoubleTapEvent(MotionEvent e)
  解释:双击的第二下Touch down和up都会触发,可用e.getAction()区分。
  boolean onDown(MotionEvent e)
  解释:Touch down时触发
  boolean onFling(MotionEvent e1, MotionEvent e2, float velocityX, float velocityY)
  解释:Touch了滑动一点距离后,up时触发。
  void onLongPress(MotionEvent e)
  解释:Touch了不移动一直Touch down时触发
  boolean onScroll(MotionEvent e1, MotionEvent e2, float distanceX, float distanceY)
  解释:Touch了滑动时触发。
  void onShowPress(MotionEvent e)
  解释:Touch了还没有滑动时触发
(与onDown,onLongPress比较
  onDown只要Touch down一定立刻触发。
  而Touchdown后过一会没有滑动先触发onShowPress再是onLongPress。
  所以Touchdown后一直不滑动,onDown->onShowPress->onLongPress这个顺序触发。
  boolean onSingleTapConfirmed(MotionEvent e)
  boolean onSingleTapUp(MotionEvent e)
  解释:上面这两个函数都是在touch down后又没有滑动(onScroll),又没有长按(onLongPress),然后Touchup时触发。
  点击一下非常快的(不滑动)Touchup:
  onDown->onSingleTapUp->onSingleTapConfirmed
  点击一下稍微慢点的(不滑动)Touchup:
  onDown->onShowPress->onSingleTapUp->onSingleTapConfirmed

6.Widget及其专属监听器

代码下载:http://download.csdn.net/detail/qq1059458376/4670408


你可能感兴趣的:(Android游戏开发系列教程第三讲(事件处理))