亚洲激情专区-91九色丨porny丨老师-久久久久久久女国产乱让韩-国产精品午夜小视频观看

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

Android手勢識別器GestureDetector使用詳解

發布時間:2020-10-15 05:20:52 來源:腳本之家 閱讀:179 作者:劉洋浪子 欄目:移動開發

以前只知道控件的onTouchEvent()事件,它的動作有MotionEvent.ACTION_DOWN、MotionEvent.ACTION_MOVE、MotionEvent.ACTION_UP;今天有個需求,要監聽控件的雙擊、拖動、滑動等事件,這時onTouchEvent()很明顯不能滿足我們的需求,經多方打聽,找到了今天的主角GestureDetector,下面就對它進行簡單的學習。

構造方法:

已過時的有2個,不推薦使用。

GestureDetector(GestureDetector.onGestureListener listener);

GestureDetector(GestureDetector.onGestureListener listener,Handler handler);

推薦使用。

 GestureDeterctor(Context context,GestureDetector.onGestureListener listener);

 GestureDeterctor(Context context,GestureDetector.onGestureListener listener,Handler handler);

 GestureDeterctor(Context context,GestureDetector.onGestureListener listener,Handler handler,boolean unused);

參數handler主要用來執行延時操作時使用,參數unused暫時沒有使用。

從構成函數可以看出,當我們需要創建一個GestureDetector對象時,必須給它傳一個GestureDetector.onGestureListener對象,查看API之后,發現它是個接口(interface),創建GestureDetector.onGestureListener的對象時,必須實現一下幾個方法:

1、onDown(MotionEvent e);

      當用戶按下時的回調。

2、onFling(MotionEvent e1,MontionEvent e2,float velocityX,float velocityY);

      當用戶快速拖動,并離開屏幕時,控件還在滑動的回調。

3、onLongPress(MotionEvent e);

      當用戶長按控件時的回調。

4、onScroll(MotionEvent e1,MotionEvent e2,float distanceX,float distanceY);

      當用戶拖著控件(控件本身并沒有動)滑動時的回調。

5、onShowPress(MotionEvent e);

      當用戶按下,還沒有執行移動或者抬起的動作的回調。

6、onSingleTapUp(MotionEvent e);

      用戶按下,立即抬起,沒有做其它動作時的回調。

有了這個監聽之后,我們還可以給GestureDetector設置雙擊監聽,使用的方法是:

mGestureDetector.setOnDoubleTapListener(GestureDetector.OnDoubleTapListener onDoubleListener);

參數是雙擊監聽的對象,GestureDetector.OnDoubleTapListener它也是一個接口(interface),創建它的對象時,也必須實現以下幾個方法。

1、onDoubleTap(MotionEvent e);

      當用戶雙擊時回調。

2、onDoubleTapEvent(MotionEvent e);

      雙擊間隔事件的回調。

3、onSingleTapConfirmed(MotionEvent e);

      當用戶單擊時回調。

上面的兩個監聽,回調函數都是必須實現,有時候我們不需要監聽所有的事件,只對自己感興趣的事件進行監聽,GestureDetector有個內部類幫我們實現此功能GestureDetector.SimpleOnGestureListener,該類實現了GestureDetector.onGestureListener、GestureDetector.onDoubleTapListener、GestureDetector.onContextClickListener這三個接口,并實現了它們的方法,只不過是空實現,在我們需要這三個接口的時候,我們可以創建GestureDetector.SimpleOnGestureListener對象,然后需要監聽哪個事件,我們就重寫它的哪個方法,下面我把它的所有方法都實現了,其實和上邊兩個接口實現的方法是一樣。

GestureDetector.SimpleOnGestureListener mGestureDetector = new SimpleOnGestureListener(){ 
 
   @Override 
   public boolean onSingleTapUp(MotionEvent e) { 
    return super.onSingleTapUp(e); 
   } 
 
   @Override 
   public void onLongPress(MotionEvent e) { 
    super.onLongPress(e); 
   } 
 
   @Override 
   public boolean onScroll(MotionEvent e1, MotionEvent e2, 
     float distanceX, float distanceY) { 
    return super.onScroll(e1, e2, distanceX, distanceY); 
   } 
 
   @Override 
   public boolean onFling(MotionEvent e1, MotionEvent e2, 
     float velocityX, float velocityY) { 
    return super.onFling(e1, e2, velocityX, velocityY); 
   } 
 
   @Override 
   public void onShowPress(MotionEvent e) { 
    super.onShowPress(e); 
   } 
 
   @Override 
   public boolean onDown(MotionEvent e) { 
    return super.onDown(e); 
   } 
 
   @Override 
   public boolean onDoubleTap(MotionEvent e) { 
    return super.onDoubleTap(e); 
   } 
 
   @Override 
   public boolean onDoubleTapEvent(MotionEvent e) { 
    return super.onDoubleTapEvent(e); 
   } 
 
   @Override 
   public boolean onSingleTapConfirmed(MotionEvent e) { 
    return super.onSingleTapConfirmed(e); 
   } 
    
  }; 

只有理論沒有實踐,怎么行呢?這里我也寫了一個Demo,這個Demo是我從另一篇博客中抄的,文章的內容也是參考他的博客寫的,下面會把大神的那篇博客地址貼出來。

參考資料:Android GestureDetector用戶手勢檢測實例講解

以上就是本文的全部內容,希望對大家的學習有所幫助,也希望大家多多支持億速云。

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

陵水| 富蕴县| 扶余县| 太原市| 哈密市| 芦山县| 巨野县| 枣强县| 阿坝| 唐河县| 通道| 进贤县| 广河县| 大宁县| 枣强县| 民和| 灌南县| 三明市| 铜陵市| 昌邑市| 耒阳市| 泰安市| 隆尧县| 麦盖提县| 平湖市| 高淳县| 拉萨市| 盐城市| 阿坝| 清丰县| 西乌| 磐安县| 桃园市| 崇明县| 大邑县| 交口县| 江安县| 延长县| 喀喇沁旗| 古蔺县| 新平|