Android如何使用GestureDetector進行手勢檢測詳解
1.引言
在操作應用的時候,會有很多不同的手勢操作,如按下、單擊、雙擊、長按等手勢,我們可以在這些手勢事件中添加相應的業(yè)務邏輯,那么如何檢測不同的手勢操作就比較重要了,本文將帶大家了解如何使用GestureDetector進行手勢檢測。
2.進行手勢檢測
2.1 創(chuàng)建GestureDetector
進行手勢檢測之前,需要先新建GestureDetector對象,示例如下:
gestureDetector = new GestureDetector(context, new GestureDetector.OnGestureListener() {
@Override
public boolean onDown(MotionEvent e) {
log("onDown");
return true;
}
@Override
public void onShowPress(MotionEvent e) {
log("onShowPress");
}
@Override
public boolean onSingleTapUp(MotionEvent e) {
log("onSingleTapUp");
return true;
}
@Override
public boolean onScroll(MotionEvent e1, MotionEvent e2, float distanceX, float distanceY) {
log("onScroll");
return true;
}
@Override
public void onLongPress(MotionEvent e) {
log("onLongPress");
}
@Override
public boolean onFling(MotionEvent e1, MotionEvent e2, float velocityX, float velocityY) {
log("onFling");
return true;
}
});2.2 與onTouchEvent結(jié)合使用
示例中重寫了Activity的onTouchEvent(MotionEvent event)方法,并在其內(nèi)部使用GestureDetector處理觸摸事件,示例如下:
@Override
public boolean onTouchEvent(MotionEvent event) {
boolean b = gestureDetector.onTouchEvent(event);
if (b) {
return true;
}
return super.onTouchEvent(event);
}2.3 GestureDetector.OnGestureListener
實現(xiàn)GestureDetector.OnGestureListener內(nèi)的方法,在其中可以檢測到多種手勢,如onDown(MotionEvent e)按下、onShowPress(MotionEvent e)已經(jīng)執(zhí)行按下,還沒有移動或抬起、onSingleTapUp(MotionEvent e)單擊、onScroll(MotionEvent e1, MotionEvent e2, float distanceX, float distanceY)滾動、onLongPress(MotionEvent e)長按、onFling(MotionEvent e1, MotionEvent e2, float velocityX, float velocityY)。
2.4 檢測雙擊手勢
雙擊手勢也是一種常見的手勢事件,使用GestureDetector檢測雙擊手勢需要調(diào)用setOnDoubleTapListener()方法設置GestureDetector.OnDoubleTapListener(),并實現(xiàn)其中的方法,其中的onDoubleTap(MotionEvent e)表示雙擊事件,示例如下:
gestureDetector.setOnDoubleTapListener(new GestureDetector.OnDoubleTapListener() {
@Override
public boolean onSingleTapConfirmed(MotionEvent e) {
log("onSingleTapConfirmed");
return true;
}
@Override
public boolean onDoubleTap(MotionEvent e) {
log("onDoubleTap");
return true;
}
@Override
public boolean onDoubleTapEvent(MotionEvent e) {
log("onDoubleTapEvent");
return true;
}
});
}2.5 GestureDetector.SimpleOnGestureListener
如果不想實現(xiàn)GestureDetector.OnGestureListener 內(nèi)的多個方法,那么可以創(chuàng)建類并繼承GestureDetector.SimpleOnGestureListener,示例如下:
class SimpleGestureListener extends GestureDetector.SimpleOnGestureListener{
@Override
public boolean onDown(MotionEvent e) {
return true;
}
}在創(chuàng)建GestureDetector對象的時候,傳入擴展后的類對象即可,示例如下:
gestureDetector = new GestureDetector(context, new SimpleGestureListener());
3.總結(jié)
使用GestureDetector能方便地進行手勢檢測,靈活合理地使用手勢檢測,在其中處理應用的業(yè)務邏輯,能讓體驗更加的友好。
到此這篇關(guān)于Android如何使用GestureDetector進行手勢檢測的文章就介紹到這了,更多相關(guān)Android GestureDetector手勢檢測內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
- Android GestureDetector用戶手勢檢測實例講解
- android使用gesturedetector手勢識別示例分享
- Android GestureDetector手勢滑動使用實例講解
- Android手勢識別器GestureDetector使用詳解
- Android自定義viewgroup可滾動布局 GestureDetector手勢監(jiān)聽(5)
- Android自定義GestureDetector實現(xiàn)手勢ImageView
- Android GestureDetector實現(xiàn)手勢滑動效果
- Android編程使用GestureDetector實現(xiàn)簡單手勢監(jiān)聽與處理的方法
- Android觸摸及手勢操作GestureDetector
- Android使用手勢監(jiān)聽器GestureDetector遇到的不響應問題
相關(guān)文章
Android 2d游戲開發(fā)之貪吃蛇基于surfaceview
Android Studio配置Kotlin開發(fā)環(huán)境詳細步驟
Android使用SQLite數(shù)據(jù)庫的簡單實例
Android開發(fā)之RadioGroup的簡單使用與監(jiān)聽示例

