欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

Android View進(jìn)行手勢(shì)識(shí)別詳解

 更新時(shí)間:2016年08月21日 16:19:51   投稿:lqh  
本文主要介紹 Android View進(jìn)行手勢(shì)識(shí)別,這里整理了相關(guān)資料和簡(jiǎn)單示例,有興趣的小伙伴可以參考下

       我們?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)資料。

相關(guān)文章

最新評(píng)論