国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 系統 > Android > 正文

Android View進行手勢識別詳解

2019-12-12 05:35:25
字體:
來源:轉載
供稿:網友

       我們在進行Android游戲開發時會用到很多種控制,包括前面講到的按鍵和軌跡球控制方式,除此之外還有手勢操作、重力感應等多種控制方式需要了解掌握。本節主要為大家講解在View中如何進行手勢識別。

       很多網友發現Android中手勢識別提供了兩個類,由于Android 1.6以下的版本比如cupcake中無法使用android.view.GestureDetector,而android.gesture.Gesture是Android 1.6開始支持的,考慮到仍然有使用Android 1.5固件的網友,就來看下兼容性更強的android.view.GestureDetector。在android.view.GestureDetector類中有很多種重載版本,下面我們僅提到能夠自定義在View中的兩種方法,分別為GestureDetector(Context context, GestureDetector.OnGestureListener listener) 和GestureDetector(Context context, GestureDetector.OnGestureListener listener, Handler handler) 。我們可以看到第一個參數為Context,所以我們想附著到某View時,最簡單的方法就是直接從超類派生傳遞Context,實現GestureDetector里中提供一些接口。

       下面我們就以實現手勢識別的onFling動作,在CwjView中我們從View類繼承,當然大家可以從TextView等更高層的界面中實現觸控。

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()); //計算滑動的距離             if (Math.abs(dx) > MAJOR_MOVE && Math.abs(velocityX) > Math.abs(velocityY)) { //降噪處理,必須有較大的動作才識別              if (velocityX > 0) {                //向右邊               } else {                //向左邊               }              return true;            } else {              return false; //當然可以處理velocityY處理向上和向下的動作            }          }        });    }    /*提示大家上面僅僅探測了Fling動作僅僅實現了onFling方法,這里相關的還有以下幾種方法來實現具體的可以參考我們以前的文章有詳細的解釋:   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)   */    //接下來是重點,讓我們的View接受觸控,需要使用下面兩個方法讓GestureDetector類去處理onTouchEvent和onInterceptTouchEvent方法。     @Override   public boolean onTouchEvent(MotionEvent event) {       mGD.onTouchEvent(event);      return true;    }     @Override   public boolean onInterceptTouchEvent(MotionEvent event) {      return mGD.onTouchEvent(event);    }   } 

       本節關于View中手勢識別的內容就講這些。大家知道,很多Android設備都提供了重力感應器和加速度感應器,而稍好些的設備還具備陀螺儀感應器,提供測試角速度功能。下一節將為大家講解重力感應知識。

       以上就是對Android View進行的手勢識別的資料整理,謝謝大家對本站的支持,后續繼續補充相關資料。

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 金塔县| 儋州市| 安溪县| 临汾市| 金阳县| 东宁县| 平陆县| 芦溪县| 仁寿县| 峨眉山市| 丹凤县| 温泉县| 屏南县| 汶上县| 济源市| 商水县| 郓城县| 五大连池市| 兰考县| 广宁县| 榆树市| 高安市| 安岳县| 涞水县| 中阳县| 永吉县| 库尔勒市| 五台县| 门源| 安新县| 财经| 高雄市| 渝中区| 高尔夫| 师宗县| 金昌市| 承德市| 佛冈县| 临朐县| 炉霍县| 英山县|