Android教程網
  1. 首頁
  2. Android 技術
  3. Android 手機
  4. Android 系統教程
  5. Android 游戲
 Android教程網 >> Android技術 >> Android開發實例 >> Android 中文API (91) —— GestureDetector

Android 中文API (91) —— GestureDetector

編輯:Android開發實例

前言

  本章內容是android.view.GestureDetector,版本為Android 2.3 r1,翻譯來自"Haiya 胡蝶",再次感謝"Haiya 胡蝶" !。

 

 

正文

  一、結構

 

public class GestureDetector extends Object

        

java.lang.Object

android.view.GestureDetector

 

 

  二、概述

 

 

  通過系統提供的MotionEvent來監測各種手勢和(觸摸)事件。當一個指定的手勢事件發生時,GestureDetector.OnGestureListener回調函數將通告用戶。這個類僅僅處理由觸摸引發的MotionEvent(不能處理由軌跡球引發的事件)。要使用這個類需執行以下操作:

  * 為你的View建立一個GestureDetector實例。

  * 在View的onTouchEvent(MotionEvent)方法裡確保調用(GestureDetector的)onTouchEvent(MotionEvent)方法。當相關事件發生時,定義在回調函數裡的方法將被執行。

 

 

  三、嵌套類

 

  interface          GestureDetector.OnDoubleTapListener

  雙擊和輕擊(confirmed single-tap)事件的監聽器。(譯者注:confirmed single-tap是用戶快速點一下觸摸屏所引發的動作。區分下面兩種情況:

  1.       手指按下,停留0.2秒(估計值)以上再抬起時,不算confirmed single-tap

  2.       快速點擊屏幕兩次不會引發兩次confirmed single-tap事件,而是引發一次DoubleTap事件。)

 

  interface          GestureDetector.OnGestureListener

  在有手勢動作發生時,通知的監聽器

 

  class        GestureDetector.SimpleOnGestureListener         

  當只需要監聽部分手勢時,用於擴展的便捷類

 

 

  四、構造函數

 

public GestureDetector (GestureDetector.OnGestureListener listener, Handler handler)

已棄用,替代方法:

GestureDetector(android.content.Context, android.view.GestureDetector.OnGestureListener, android.os.Handler)

通過提供的監聽器來創建一個GestureDetector,這個構造函數只能用於非UI線程(因為它允許指定一個handler)。

參數

         listener 用於觸發所有回調函數的監聽器,不能為空

handler 需要使用到的handler

異常

         NullPointerException   Listener或者handler為空時

 

public GestureDetector (GestureDetector.OnGestureListener listener)

已棄用,替代方法:

GestureDetector(android.content.Context, android.view.GestureDetector.OnGestureListener)

通過提供的監聽器來創建一個GestureDetector。你只能於UI線程裡使用這個構造函數(這是通常的情況)

參數

         listener    用於觸發所有回調函數的監聽器,不能為空

異常

    NullPointerException   如果Listener為空

參見

    Handler()

 

public GestureDetector (Context context, GestureDetector.OnGestureListener listener)

通過提供的監聽器來創建一個GestureDetector。(通常情況下)你只能於UI線程裡使用這個構造函數

         參數

                   context    應用程序上下文

listener    用於觸發所有回調函數的監聽器,不能為空

                   異常

           NullPointerException   如果Listener為空

參見

        Handler()

 

public GestureDetector (Context context, GestureDetector.OnGestureListener listener, Handler handler)

通過提供的監聽器來創建一個GestureDetector. (通常情況下)你只能於UI線程裡使用這個構造函數

         參數

context    應用程序上下文

listener    用於觸發所有回調函數的監聽器,不能為空

handler    需要使用到的handler

                   異常

           NullPointerException       如果Listener為空

參見

       Handler()

 

public GestureDetector (Context context, GestureDetector.OnGestureListener listener, Handler handler, boolean ignoreMultitouch)

通過提供的監聽器來創建一個GestureDetector. (通常情況下)你只能於UI線程裡使用這個構造函數

         參數

context    應用程序上下文

listener    用於觸發所有回調函數的監聽器,不能為空

handler    需要使用到的handler

ignoreMultitouch     是否忽視多點觸控(譯者注:僅適用於2.2以上的android版本,如果沒設置這個參數(即使用的是上一個構造函數),則會忽視多點觸控

,由於網上都沒有在GestureDetector傳入handler的例子,所以我也不明白這裡的handler的具體用意。如果有需要深入理解的朋友,請參照GestureDetector的源碼

                  異常

           NullPointerException       如果Listener為空

參見

       Handler()

 

 

  五、公共方法

 

public boolean isLongpressEnabled ()

返回值

如果允許長按事件,則返回true,否則為false

 

public boolean onTouchEvent (MotionEvent ev)

分析指定的動作事件,如何滿足條件,就觸發在GestureDetector.OnGestureListener中提供的回調函數

         參數

                   ev     當前的觸摸事件(譯者注:如MotionEvent_DOWN, MotionEvent_UP)

         返回值

                   如果GestureDetector.OnGestureListener消耗了這個事件,則返回true,否則返回false

 

public void setIsLongpressEnabled (boolean isLongpressEnabled)

設置是否啟用長按。如果啟用長按,當用戶按下並保持按下狀態時,將收到一個長按事件,同時不再接收其它事件;如果禁用長按,當用戶按下並保持按下狀態然後再移動手指時,將會接收到scroll事件。長按默認為啟用。

         參數

                   isLongpressEnabled                  是否啟用接收長按事件

 

public void setOnDoubleTapListener (GestureDetector.OnDoubleTapListener onDoubleTapListener)

設置雙擊及其相關手勢的監聽器

         參數

                   onDoubleTapListener       觸發所有回調函數的監聽器,或者設為null以停止監聽雙擊的手勢

 

  1. 上一頁:
  2. 下一頁:
熱門文章
閱讀排行版
Copyright © Android教程網 All Rights Reserved