onTouchEvent和onTouch區(qū)別飞醉,以及Gesture手勢(shì)及手勢(shì)庫(kù)基本使用

一、onTouchEvent和onTouch?

在java的繼承關(guān)系中奠涌,新的類(lèi)稱(chēng)為子類(lèi),也叫派生類(lèi)磷杏。


1.如果是直接重寫(xiě)父類(lèi)onTouchEvent的方法溜畅,那么這個(gè)事件是針對(duì)當(dāng)前整個(gè)頁(yè)面,點(diǎn)擊當(dāng)前頁(yè)面的任意位置极祸,這個(gè)方法都會(huì)被回調(diào)慈格,當(dāng)然點(diǎn)到某個(gè)擁有監(jiān)聽(tīng)事件的控件上面這個(gè)方法就無(wú)法回調(diào)。

1)這個(gè)方法最少都會(huì)被調(diào)用2次遥金,一次是按下浴捆,一次抬起。

2)當(dāng)你按住左右滑動(dòng)的時(shí)候onTouchEvent會(huì)被一直調(diào)用稿械,并且一直走到MotionEvent.ACTION_MOVE分支里面

3)如果點(diǎn)擊到某個(gè)擁有監(jiān)聽(tīng)事件的控件上面這個(gè)onTouchEvent就不會(huì)被回調(diào)了选泻。如下圖。


4)這個(gè)方法onTouchEvent的返回值要寫(xiě)成true美莫,原因以后驗(yàn)證页眯。

2.當(dāng)如果這個(gè)類(lèi)去實(shí)現(xiàn)這個(gè)接口,如圖厢呵。


1)會(huì)實(shí)現(xiàn)一個(gè)方法窝撵,onTouch(View view,MotionEvent motionEvent)

2)這個(gè)方法不是針對(duì)當(dāng)前頁(yè)面的,所以如下圖這樣才會(huì)引起回調(diào)襟铭。


3)這個(gè)回調(diào)的方法和全局的ontouch一樣的碌奉,有一點(diǎn)不一樣的是短曾,可以從view參數(shù)中判斷是否是當(dāng)前的控件的事件,和onCilck用法類(lèi)是道批。如圖。


總結(jié)入撒,這就是針對(duì)當(dāng)前頁(yè)面的ontouchEvent()事件方法和針對(duì)控件的ontouch()事件方法隆豹。

如果一個(gè)控件同時(shí)實(shí)現(xiàn)了ontouch()和onClick()事件,那么這2個(gè)方法都會(huì)被同時(shí)調(diào)用茅逮,

但是順序是璃赡,先調(diào)用玩ontouch()后(最少2次),才會(huì)調(diào)用onClick()

2個(gè)方法的返回值献雅,true都是代表了消費(fèi)這個(gè)事件碉考,false都是代表沒(méi)有消費(fèi)此事件

二、Gesture手勢(shì)及手勢(shì)庫(kù)挺身;

OnTouch提供的事件還是相對(duì)較簡(jiǎn)單侯谁,如果需要處理一些復(fù)雜的手勢(shì),用這個(gè)接口就會(huì)很麻煩章钾,因?yàn)槲覀円鶕?jù)用戶(hù)觸摸的軌跡去判斷是什么手勢(shì)墙贱。Androidsdk給我們提供了GestureDetector(Gesture:手勢(shì)Detector:識(shí)別)類(lèi),通過(guò)這個(gè)類(lèi)我們可以識(shí)別很多的手勢(shì)贱傀。

GestureDetector類(lèi)對(duì)外提供了兩個(gè)接口:OnGestureListener惨撇,OnDoubleTapListener,還有一個(gè)內(nèi)部類(lèi)SimpleOnGestureListener府寒;SimpleOnGestureListener類(lèi)是GestureDetector提供給我們的一個(gè)更方便的響應(yīng)不同手勢(shì)的類(lèi)魁衙,它實(shí)現(xiàn)了上述兩個(gè)接口,該類(lèi)是static class株搔,也就是說(shuō)它實(shí)際上是一個(gè)外部類(lèi)剖淀,我們可以在外部繼承這個(gè)類(lèi),重寫(xiě)里面的手勢(shì)處理方法纤房。因此實(shí)現(xiàn)手勢(shì)識(shí)別有兩種方法祷蝌,一種實(shí)現(xiàn)OnGestureListener接口,另一種是使用SimpleOnGestureListener類(lèi)帆卓。

OnGestureListener有下面的幾個(gè)動(dòng)作:

按下(onDown): 剛剛手指接觸到觸摸屏的那一剎那巨朦,就是觸的那一下。

拋擲(onFling): 手指在觸摸屏上迅速移動(dòng)剑令,并松開(kāi)的動(dòng)作糊啡。

長(zhǎng)按(onLongPress): 手指按在持續(xù)一段時(shí)間,并且沒(méi)有松開(kāi)吁津。

滾動(dòng)(onScroll): 手指在觸摸屏上滑動(dòng)棚蓄。

按锥榉觥(onShowPress): 手指按在觸摸屏上,它的時(shí)間范圍在按下起效梭依,在長(zhǎng)按之前稍算。

抬起(onSingleTapUp):手指離開(kāi)觸摸屏的那一剎那。

(一)役拴、操作步驟:

1糊探、在Activity中實(shí)例化GestureDetector,一個(gè)GestureDetector實(shí)例代表一個(gè)手勢(shì)檢測(cè)器河闰;

2科平、構(gòu)建GestureDetector時(shí)需要一個(gè)參數(shù)GestureDetector.OnGestureListener。OnGestureListener是一個(gè)監(jiān)聽(tīng)器姜性,負(fù)責(zé)對(duì)用戶(hù)的手勢(shì)行為提供相應(yīng)瞪慧。

3、重寫(xiě)onToutchEvent()方法部念,返回detector.onToutchEvent(event).


有一部需要注意弃酌,要在ontouchEvent方法里面,用手勢(shì)對(duì)象去調(diào)用ontouchevent方法儡炼。不然無(wú)法使用手勢(shì)庫(kù)矢腻。


以上是針對(duì)整個(gè)屏幕的手勢(shì)。

如果是針對(duì)單個(gè)控件的手勢(shì)射赛,只需要在ontouch()方法里面去調(diào)用detector.onToutchEvent(event).就可以了多柑。如下圖。使用很簡(jiǎn)單楣责。


還有一點(diǎn)需要注意的是竣灌,因?yàn)槭窃趏ntouchevent()和ontouch()方法里面調(diào)用的ontouchevent(),所以如果這個(gè)控件也實(shí)現(xiàn)了點(diǎn)擊事件,也活優(yōu)先執(zhí)行完手勢(shì)事件秆麸,最后執(zhí)行點(diǎn)擊事件onClick();

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末初嘹,一起剝皮案震驚了整個(gè)濱河市,隨后出現(xiàn)的幾起案子沮趣,更是在濱河造成了極大的恐慌屯烦,老刑警劉巖,帶你破解...
    沈念sama閱讀 206,839評(píng)論 6 482
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件房铭,死亡現(xiàn)場(chǎng)離奇詭異驻龟,居然都是意外死亡,警方通過(guò)查閱死者的電腦和手機(jī)缸匪,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 88,543評(píng)論 2 382
  • 文/潘曉璐 我一進(jìn)店門(mén)翁狐,熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái),“玉大人凌蔬,你說(shuō)我怎么就攤上這事露懒〈忱洌” “怎么了?”我有些...
    開(kāi)封第一講書(shū)人閱讀 153,116評(píng)論 0 344
  • 文/不壞的土叔 我叫張陵懈词,是天一觀的道長(zhǎng)蛇耀。 經(jīng)常有香客問(wèn)我,道長(zhǎng)坎弯,這世上最難降的妖魔是什么纺涤? 我笑而不...
    開(kāi)封第一講書(shū)人閱讀 55,371評(píng)論 1 279
  • 正文 為了忘掉前任,我火速辦了婚禮荞怒,結(jié)果婚禮上洒琢,老公的妹妹穿的比我還像新娘秧秉。我一直安慰自己褐桌,他們只是感情好,可當(dāng)我...
    茶點(diǎn)故事閱讀 64,384評(píng)論 5 374
  • 文/花漫 我一把揭開(kāi)白布象迎。 她就那樣靜靜地躺著荧嵌,像睡著了一般。 火紅的嫁衣襯著肌膚如雪砾淌。 梳的紋絲不亂的頭發(fā)上啦撮,一...
    開(kāi)封第一講書(shū)人閱讀 49,111評(píng)論 1 285
  • 那天,我揣著相機(jī)與錄音汪厨,去河邊找鬼赃春。 笑死,一個(gè)胖子當(dāng)著我的面吹牛劫乱,可吹牛的內(nèi)容都是我干的织中。 我是一名探鬼主播,決...
    沈念sama閱讀 38,416評(píng)論 3 400
  • 文/蒼蘭香墨 我猛地睜開(kāi)眼衷戈,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼狭吼!你這毒婦竟也來(lái)了?” 一聲冷哼從身側(cè)響起殖妇,我...
    開(kāi)封第一講書(shū)人閱讀 37,053評(píng)論 0 259
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤刁笙,失蹤者是張志新(化名)和其女友劉穎,沒(méi)想到半個(gè)月后谦趣,有當(dāng)?shù)厝嗽跇?shù)林里發(fā)現(xiàn)了一具尸體疲吸,經(jīng)...
    沈念sama閱讀 43,558評(píng)論 1 300
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 36,007評(píng)論 2 325
  • 正文 我和宋清朗相戀三年前鹅,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了磅氨。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點(diǎn)故事閱讀 38,117評(píng)論 1 334
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡嫡纠,死狀恐怖烦租,靈堂內(nèi)的尸體忽然破棺而出延赌,到底是詐尸還是另有隱情,我是刑警寧澤叉橱,帶...
    沈念sama閱讀 33,756評(píng)論 4 324
  • 正文 年R本政府宣布挫以,位于F島的核電站,受9級(jí)特大地震影響窃祝,放射性物質(zhì)發(fā)生泄漏掐松。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 39,324評(píng)論 3 307
  • 文/蒙蒙 一粪小、第九天 我趴在偏房一處隱蔽的房頂上張望大磺。 院中可真熱鬧,春花似錦探膊、人聲如沸杠愧。這莊子的主人今日做“春日...
    開(kāi)封第一講書(shū)人閱讀 30,315評(píng)論 0 19
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)流济。三九已至,卻和暖如春腌闯,著一層夾襖步出監(jiān)牢的瞬間绳瘟,已是汗流浹背。 一陣腳步聲響...
    開(kāi)封第一講書(shū)人閱讀 31,539評(píng)論 1 262
  • 我被黑心中介騙來(lái)泰國(guó)打工姿骏, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留糖声,地道東北人。 一個(gè)月前我還...
    沈念sama閱讀 45,578評(píng)論 2 355
  • 正文 我出身青樓分瘦,卻偏偏與公主長(zhǎng)得像蘸泻,于是被迫代替她去往敵國(guó)和親。 傳聞我的和親對(duì)象是個(gè)殘疾皇子擅腰,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 42,877評(píng)論 2 345

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