总的可分为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