有内容参考了别人的文章,感谢作者。
Input Events
Event Listeners
Event Handlers
Touch Model
Handling Focus
https://developer.android.com/guide/topics/ui/ui-events.html
引用:http://www.cnblogs.com/vtianyun/archive/2012/04/15/2450947.html
为了增加触摸点击事件的响应,需要在重写onTouch方法的时候,讲action传递给onTouchEvent来处理,由相应的callback函数来调用相对应的事件处理。
通过GestureDetector.OnGestureListener来获取当前被触发的操作手势(Single Tap Up、Show Press、Long Press、Scroll、Down、Fling),具体包括以下几种:
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
方向键事件:
int KEYCODE_DPAD_CENTER Key code constant: Directional Pad Center key.
int KEYCODE_DPAD_DOWN Key code constant: Directional Pad Down key.
int KEYCODE_DPAD_LEFT Key code constant: Directional Pad Left key.
int KEYCODE_DPAD_RIGHT Key code constant: Directional Pad Right key.
int KEYCODE_DPAD_UP Key code constant: Directional Pad Up key.
方向键和画面滚动方向是相反的。