Android View進(jìn)行手勢(shì)識(shí)別詳解
我們?cè)谶M(jìn)行Android游戲開(kāi)發(fā)時(shí)會(huì)用到很多種控制,包括前面講到的按鍵和軌跡球控制方式,除此之外還有手勢(shì)操作、重力感應(yīng)等多種控制方式需要了解掌握。本節(jié)主要為大家講解在View中如何進(jìn)行手勢(shì)識(shí)別。
很多網(wǎng)友發(fā)現(xiàn)Android中手勢(shì)識(shí)別提供了兩個(gè)類,由于Android 1.6以下的版本比如cupcake中無(wú)法使用android.view.GestureDetector,而android.gesture.Gesture是Android 1.6開(kāi)始支持的,考慮到仍然有使用Android 1.5固件的網(wǎng)友,就來(lái)看下兼容性更強(qiáng)的android.view.GestureDetector。在android.view.GestureDetector類中有很多種重載版本,下面我們僅提到能夠自定義在View中的兩種方法,分別為GestureDetector(Context context, GestureDetector.OnGestureListener listener) 和GestureDetector(Context context, GestureDetector.OnGestureListener listener, Handler handler) 。我們可以看到第一個(gè)參數(shù)為Context,所以我們想附著到某View時(shí),最簡(jiǎn)單的方法就是直接從超類派生傳遞Context,實(shí)現(xiàn)GestureDetector里中提供一些接口。
下面我們就以實(shí)現(xiàn)手勢(shì)識(shí)別的onFling動(dòng)作,在CwjView中我們從View類繼承,當(dāng)然大家可以從TextView等更高層的界面中實(shí)現(xiàn)觸控。
Java代碼
class CwjView extends View { private GestureDetector mGD; public CwjView(Context context, AttributeSet attrs) { super(context, attrs); mGD = new GestureDetector(context, new GestureDetector.SimpleOnGestureListener() { public boolean onFling(MotionEvent e1, MotionEvent e2, float velocityX, float velocityY) { int dx = (int) (e2.getX() - e1.getX()); //計(jì)算滑動(dòng)的距離 if (Math.abs(dx) > MAJOR_MOVE && Math.abs(velocityX) > Math.abs(velocityY)) { //降噪處理,必須有較大的動(dòng)作才識(shí)別 if (velocityX > 0) { //向右邊 } else { //向左邊 } return true; } else { return false; //當(dāng)然可以處理velocityY處理向上和向下的動(dòng)作 } } }); } /*提示大家上面僅僅探測(cè)了Fling動(dòng)作僅僅實(shí)現(xiàn)了onFling方法,這里相關(guān)的還有以下幾種方法來(lái)實(shí)現(xiàn)具體的可以參考我們以前的文章有詳細(xì)的解釋: boolean onDoubleTap(MotionEvent e) boolean onDoubleTapEvent(MotionEvent e) boolean onDown(MotionEvent e) void onLongPress(MotionEvent e) boolean onScroll(MotionEvent e1, MotionEvent e2, float distanceX, float distanceY) void onShowPress(MotionEvent e) boolean onSingleTapConfirmed(MotionEvent e) boolean onSingleTapUp(MotionEvent e) */ //接下來(lái)是重點(diǎn),讓我們的View接受觸控,需要使用下面兩個(gè)方法讓GestureDetector類去處理onTouchEvent和onInterceptTouchEvent方法。 @Override public boolean onTouchEvent(MotionEvent event) { mGD.onTouchEvent(event); return true; } @Override public boolean onInterceptTouchEvent(MotionEvent event) { return mGD.onTouchEvent(event); } }
本節(jié)關(guān)于View中手勢(shì)識(shí)別的內(nèi)容就講這些。大家知道,很多Android設(shè)備都提供了重力感應(yīng)器和加速度感應(yīng)器,而稍好些的設(shè)備還具備陀螺儀感應(yīng)器,提供測(cè)試角速度功能。下一節(jié)將為大家講解重力感應(yīng)知識(shí)。
以上就是對(duì)Android View進(jìn)行的手勢(shì)識(shí)別的資料整理,謝謝大家對(duì)本站的支持,后續(xù)繼續(xù)補(bǔ)充相關(guān)資料。
- Android通過(guò)滑動(dòng)實(shí)現(xiàn)Activity跳轉(zhuǎn)(手勢(shì)識(shí)別器應(yīng)用)
- Android手勢(shì)識(shí)別器GestureDetector使用詳解
- 札記:android手勢(shì)識(shí)別功能實(shí)現(xiàn)(利用MotionEvent)
- Android基礎(chǔ)開(kāi)發(fā)之手勢(shì)識(shí)別
- Android應(yīng)用開(kāi)發(fā)中觸摸屏手勢(shì)識(shí)別的實(shí)現(xiàn)方法解析
- android開(kāi)發(fā)之為activity增加左右手勢(shì)識(shí)別示例
- android創(chuàng)建手勢(shì)識(shí)別示例代碼
- android使用gesturedetector手勢(shì)識(shí)別示例分享
- 理解Android的手勢(shì)識(shí)別提高APP的用戶體驗(yàn)
- Android使用GestureOverlayView控件實(shí)現(xiàn)手勢(shì)識(shí)別
相關(guān)文章
Android MaterialCardView的使用介紹與示例
MaterialCardView是一個(gè)基于Android支持庫(kù)中的CardView的可自定義組件。 MaterialCardView提供了CardView的所有功能,但增加了一些自定義屬性,使用起來(lái)更加方便實(shí)用2021-11-11Android編程實(shí)現(xiàn)兩個(gè)Activity相互切換而不使用onCreate()的方法
這篇文章主要介紹了Android編程實(shí)現(xiàn)兩個(gè)Activity相互切換而不使用onCreate()的方法,結(jié)合實(shí)例形式分析了多個(gè)Activity切換而不重新創(chuàng)建的操作技巧,需要的朋友可以參考下2017-01-01一步步實(shí)現(xiàn)Viewpager卡片翻頁(yè)效果
一步步實(shí)現(xiàn)Viewpager卡片翻頁(yè)效果,文章很精彩,實(shí)現(xiàn)步驟很詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2016-08-08Android開(kāi)發(fā)實(shí)現(xiàn)圖片圓角的方法
這篇文章主要介紹了Android開(kāi)發(fā)實(shí)現(xiàn)圖片圓角的方法,涉及Android針對(duì)圖形圖像的相關(guān)操作技巧,需要的朋友可以參考下2016-10-10Android 根據(jù)EditText搜索框ListView動(dòng)態(tài)顯示數(shù)據(jù)
這篇文章主要介紹了Android 根據(jù)EditText搜索框ListView動(dòng)態(tài)顯示數(shù)據(jù)的相關(guān)資料,需要的朋友可以參考下2016-09-09使用Eclipse配置android開(kāi)發(fā)環(huán)境教程
這篇文章主要介紹了使用Eclipse配置android開(kāi)發(fā)環(huán)境教程,本文講解了下載需要用到的工具、下載完需要的工具之后開(kāi)始安裝、讓Ecplise自動(dòng)安裝Android開(kāi)發(fā)插件(ADT- plugin)、配置Andiord SDK路徑、測(cè)試開(kāi)發(fā)一個(gè)Android項(xiàng)目等內(nèi)容,需要的朋友可以參考下2015-04-04更新至Android Studio4.1后發(fā)現(xiàn)as打不開(kāi)的解決方法(原因分析)
這篇文章主要介紹了更新至Android Studio4.1后發(fā)現(xiàn)as打不開(kāi)的解決方案,本文給大家分享問(wèn)題所在原因給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2020-10-10Android優(yōu)化查詢加載大數(shù)量的本地相冊(cè)圖片
本文介紹了Android優(yōu)化查詢加載大數(shù)量的本地相冊(cè)圖片,可以方便的照片的查詢,,感興趣的小伙伴們可以參考一下。2016-10-10Android WebView上實(shí)現(xiàn)JavaScript與Java交互
這篇文章主要介紹了Android WebView上實(shí)現(xiàn)JavaScript與Java交互 的相關(guān)資料,需要的朋友可以參考下2016-03-03