Android 屏幕滑动事件
http://blog.csdn.net/iamfafa/article/details/6316062
Android里有兩個(gè)類
?
android.view.GestureDetector
android.view.GestureDetector.SimpleOnGestureListener
(另外android.widget.Gallery好像是更牛x的OnGestureListener )
?
1)新建一個(gè)類繼承SimpleOnGestureListener,HahaGestureDetectorListener
可以實(shí)現(xiàn)以下event事件。
?
boolean onDoubleTap(MotionEvent e)
解釋:雙擊的第二下Touch down時(shí)觸發(fā)
?
boolean onDoubleTapEvent(MotionEvent e)
解釋:雙擊的第二下Touch down和up都會觸發(fā),可用e.getAction()區(qū)分。
?
boolean onDown(MotionEvent e)
解釋:Touch down時(shí)觸發(fā)
?
boolean onFling(MotionEvent e1, MotionEvent e2, float velocityX, float velocityY)
解釋:Touch了滑動(dòng)一點(diǎn)距離后,up時(shí)觸發(fā)。
?
void onLongPress(MotionEvent e)
解釋:Touch了不移動(dòng)一直Touch down時(shí)觸發(fā)
?
boolean onScroll(MotionEvent e1, MotionEvent e2, float distanceX, float distanceY)
解釋:Touch了滑動(dòng)時(shí)觸發(fā)。
?
void onShowPress(MotionEvent e)
解釋:Touch了還沒有滑動(dòng)時(shí)觸發(fā)
?
(與onDown,onLongPress比較
onDown只要Touch down一定立刻觸發(fā)。
而Touchdown后過一會沒有滑動(dòng)先觸發(fā)onShowPress再是onLongPress。
所以Touchdown后一直不滑動(dòng),onDown->onShowPress->onLongPress這個(gè)順序觸發(fā)。
)
?
boolean onSingleTapConfirmed(MotionEvent e)
boolean onSingleTapUp(MotionEvent e)
解釋:上面這兩個(gè)函數(shù)都是在touch down后又沒有滑動(dòng)(onScroll),又沒有長按(onLongPress),然后Touchup時(shí)觸發(fā)。
?
點(diǎn)擊一下非常快的(不滑動(dòng))Touchup:
onDown->onSingleTapUp->onSingleTapConfirmed
?
點(diǎn)擊一下稍微慢點(diǎn)的(不滑動(dòng))Touchup:
onDown->onShowPress->onSingleTapUp->onSingleTapConfirmed
?
2)在view的新建一個(gè)GestureDetector的對象。
?
構(gòu)造函數(shù)里 gestureDetector = new GestureDetector(new HahaGestureDetectorListener());
?
然后在View的onTouchEvent里以下這樣用,就可以在剛才1)弄的事件里寫自己的代碼了。
?
@Override
public boolean onTouchEvent(MotionEvent event) {
gestureDetector.onTouchEvent(event);
}
?
但是,郁悶的是SimpleOnGestureListener沒有提供onUp(), 還得在View的
onTouchEvent的
case MotionEvent.ACTION_UP:
里來寫對應(yīng)的代碼。
總結(jié)
以上是生活随笔為你收集整理的Android 屏幕滑动事件的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: Chromium浏览器之渲染引擎Blin
- 下一篇: 2003DC 升级到2008R2 DC实