Android 手勢識別

1、GestureDetector
OnGestureListener接口的6個方法:
單擊:onDown(MotionEvent e)
抬起:onSingleTapUp(MotionEvent e)
短按:onShowPress(MotionEvent e)
長按:onLongPress(MotionEvent e)
滾動:onScroll(MotionEvent e1, MotionEvent e2, float distanceX, float disanceY)
滑動:onFling(MotionEvent e1, MotionEvent e2, float velocityX, float velocityY)
(注解:velocity:速率,速度)

OnDoubleTapListener接口的3個方法:
雙擊:onDoubleTap(MotionEvent e)
雙擊按下和抬起各觸發(fā)一次:onDoubleTapEvent(MotionEvent e)
單擊確認(rèn):onSingleTapConfirmed(MotionEvent e)就是很快地按下并抬起,但不連續(xù)點(diǎn)擊第二下。

如果分別去實(shí)現(xiàn)這兩個接口的所有方法,未免太麻煩了,所以這里提供了另一個接口:SimpleOnGestureListener,它已經(jīng)繼承了前面所講的兩個監(jiān)聽器。

  • 繼承SimpleOnGestureListener
  • 重載感興趣的手勢

2、GestureOverlayView
給gestureOverlayView設(shè)置監(jiān)聽器:
gestureOverlayView.addOnGesturePerformedListener(new OnGesturePerformedListener(){})
重寫方法onGesturePerformed()。
如圖,onGesturePerformed()的示例代碼,也就是關(guān)于手勢識別的代碼實(shí)現(xiàn)。
ArrayList<Prediction>:預(yù)測集
predction.score:相似度,值越大,則越相似,也就是說你必須做出幾乎一模一樣的手勢才能通過識別。相似度的取值范圍一般是0.0~10.0,取10.0就已經(jīng)太夸張了,因?yàn)楹茈y做出非常接近的手勢。所以,這里的下限只取5.0:
predction.score>=5.0
如果覺得顯示的手勢的軌跡不好看,可以自定義軌跡的樣式。
一些常見的XML屬性設(shè)置:
Android:eventInterceptionEnabled 定義當(dāng)手勢已經(jīng)被識別出來時,是否攔截該手勢動作
Android:fadeDuration 當(dāng)用戶畫完的時候,手勢效果淡出的時間
Android:fadeEnabled 用戶畫完之后,手勢是否自動淡出
Android:gestureColor 手勢的顏色
Android:gestureStrokeType 筆畫的類型
Android:gestureStrokeWidth 筆畫的粗細(xì)

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容