32_Android GestureDetector 手勢監(jiān)聽類

1. 觸摸屏幕時的事件監(jiān)聽方法

當用戶觸摸到屏幕時浑彰,觸摸監(jiān)聽事件就會被觸發(fā)。

我們通臣吠粒可以通過重寫 onTouchEvent ()方法或實現(xiàn) OnTouchListener 接口的 onTouch()方法來達到監(jiān)聽觸摸事件的功能赖钞。

    @Override
    public boolean onTouchEvent(MotionEvent event) {
        return super.onTouchEvent(event);
    }
    ...
    @Override
    public boolean onTouch(View view, MotionEvent motionEvent) {
        return false;
    }

以上兩種方式的區(qū)別是,onTouchListener 的 onTouch() 方法優(yōu)先級比 onTouchEvent() 高芦倒,會先觸發(fā)。
假如 onTouch() 方法返回 false 會接著觸發(fā) onTouchEvent()不翩,反之 onTouchEvent() 方法不會被調(diào)用兵扬。
內(nèi)置諸如 click 事件的實現(xiàn)等等都基于 onTouchEvent(),假如 onTouch 返回 true口蝠,這些事件將不會被觸發(fā)器钟。

然而,對于需要處理一些復雜的手勢妙蔗,比如要根據(jù)用戶觸摸的軌跡去判斷是什么手勢傲霸。Android sdk 為我們提供了 GestureDetector 類,通過這個類我們可以識別很多的手勢眉反。

2. GestureDetector 類

GestureDetector 類對外主要提供了:

  • OnGestureListener 接口昙啄;
  • OnDoubleTapListener 雙擊接口;
  • SimpleOnGestureListener 類(實現(xiàn)了類內(nèi)的三個接口)禁漓。

當屏幕上發(fā)生特定的觸摸事件跟衅,就會去回調(diào)GestureDector.OnGestureListenerGestureDetector.OnDoubleTapListener 接口中相應的回調(diào)函數(shù)來監(jiān)測各樣的手勢和事件,并且通知用戶播歼。我們通過實現(xiàn)這些接口,并重寫這些方法的具體實現(xiàn)掰读。

SimpleOnGestureListener實現(xiàn)了 OnGestureListener秘狞,OnDoubleTapListenerOnContextClickListener 接口蹈集,類內(nèi)重寫接口中的所有方法烁试,但是都是空實現(xiàn),返回的布爾值都是 false拢肆。主要作用是方便我們繼承這個類有選擇的復寫回調(diào)方法减响,而不是實現(xiàn)接口去重寫所有的方法

2.1 OnGestureListener 類

OnGestureListener 有下面幾個動作:

  • onDown-按下:剛剛手指接觸到觸摸屏的那一剎那郭怪,就是觸的那一下支示;
  • onShowPress-按住:手指按在觸摸屏上鄙才,它的時間范圍在按下起效颂鸿,在長按之前;
  • onSingleTapUp-抬起:手指離開觸摸屏的那一剎那攒庵;
  • onScroll-滾動:手指在觸摸屏上滑動嘴纺;
  • onLongPress-長按:手指按在持續(xù)一段時間败晴,并且沒有松開;
  • onFling-拋擲:手指在觸摸屏上迅速移動栽渴,并松開的動作尖坤。
private final GestureDetector.OnGestureListener mGestureListener = new GestureDetector.OnGestureListener() {
        @Override
        public boolean onDown(MotionEvent motionEvent) {
            return false;
        }

        @Override
        public void onShowPress(MotionEvent motionEvent) {

        }

        @Override
        public boolean onSingleTapUp(MotionEvent motionEvent) {
            return false;
        }

        @Override
        public boolean onScroll(MotionEvent motionEvent, MotionEvent motionEvent1, float v, float v1) {
            return false;
        }

        @Override
        public void onLongPress(MotionEvent motionEvent) {

        }

        @Override
        public boolean onFling(MotionEvent motionEvent, MotionEvent motionEvent1, float v, float v1) {
            return false;
        }
    };

使用 OnGestureListener 接口,需要重載接口所有的方法闲擦,適合監(jiān)聽所有的手勢慢味。但有時我們用不到某個方法,但還要重載佛致。這個時候 SimpleOnGestureListener 類的出現(xiàn)為我們解決了問題贮缕。

2.2 SimpleOnGestureListener 類

class MyGestureListener extends GestureDetector.SimpleOnGestureListener {
        
        @Override
        public boolean onDown(MotionEvent e) {
            return super.onDown(e);
        }
        //...
    }

參考文章
Android 觸摸及手勢操作GestureDetector
觸摸事件與手勢監(jiān)聽--Android GestureDetector詳解

本文章只是作為自己學習和總結所用,如有使用不當之處可隨時@我俺榆,謝謝

最后編輯于
?著作權歸作者所有,轉載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末感昼,一起剝皮案震驚了整個濱河市,隨后出現(xiàn)的幾起案子罐脊,更是在濱河造成了極大的恐慌定嗓,老刑警劉巖,帶你破解...
    沈念sama閱讀 206,013評論 6 481
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件萍桌,死亡現(xiàn)場離奇詭異宵溅,居然都是意外死亡,警方通過查閱死者的電腦和手機上炎,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 88,205評論 2 382
  • 文/潘曉璐 我一進店門恃逻,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人藕施,你說我怎么就攤上這事寇损。” “怎么了裳食?”我有些...
    開封第一講書人閱讀 152,370評論 0 342
  • 文/不壞的土叔 我叫張陵矛市,是天一觀的道長。 經(jīng)常有香客問我诲祸,道長浊吏,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 55,168評論 1 278
  • 正文 為了忘掉前任救氯,我火速辦了婚禮找田,結果婚禮上,老公的妹妹穿的比我還像新娘径密。我一直安慰自己午阵,他們只是感情好,可當我...
    茶點故事閱讀 64,153評論 5 371
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著底桂,像睡著了一般植袍。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上籽懦,一...
    開封第一講書人閱讀 48,954評論 1 283
  • 那天于个,我揣著相機與錄音,去河邊找鬼暮顺。 笑死厅篓,一個胖子當著我的面吹牛,可吹牛的內(nèi)容都是我干的捶码。 我是一名探鬼主播羽氮,決...
    沈念sama閱讀 38,271評論 3 399
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼惫恼!你這毒婦竟也來了档押?” 一聲冷哼從身側響起,我...
    開封第一講書人閱讀 36,916評論 0 259
  • 序言:老撾萬榮一對情侶失蹤祈纯,失蹤者是張志新(化名)和其女友劉穎令宿,沒想到半個月后,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體腕窥,經(jīng)...
    沈念sama閱讀 43,382評論 1 300
  • 正文 獨居荒郊野嶺守林人離奇死亡粒没,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 35,877評論 2 323
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發(fā)現(xiàn)自己被綠了簇爆。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片癞松。...
    茶點故事閱讀 37,989評論 1 333
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖入蛆,靈堂內(nèi)的尸體忽然破棺而出拦惋,到底是詐尸還是另有隱情,我是刑警寧澤安寺,帶...
    沈念sama閱讀 33,624評論 4 322
  • 正文 年R本政府宣布,位于F島的核電站首尼,受9級特大地震影響挑庶,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜软能,卻給世界環(huán)境...
    茶點故事閱讀 39,209評論 3 307
  • 文/蒙蒙 一迎捺、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧查排,春花似錦凳枝、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,199評論 0 19
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽叛买。三九已至,卻和暖如春蹋订,著一層夾襖步出監(jiān)牢的瞬間率挣,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 31,418評論 1 260
  • 我被黑心中介騙來泰國打工露戒, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留椒功,地道東北人。 一個月前我還...
    沈念sama閱讀 45,401評論 2 352
  • 正文 我出身青樓智什,卻偏偏與公主長得像动漾,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子荠锭,可洞房花燭夜當晚...
    茶點故事閱讀 42,700評論 2 345

推薦閱讀更多精彩內(nèi)容