重慶分公司,新征程啟航
為企業(yè)提供網(wǎng)站建設(shè)、域名注冊(cè)、服務(wù)器等服務(wù)
為企業(yè)提供網(wǎng)站建設(shè)、域名注冊(cè)、服務(wù)器等服務(wù)
onTouch與onTouchEvent的區(qū)別有哪些?很多新手對(duì)此不是很清楚,為了幫助大家解決這個(gè)難題,下面小編將為大家詳細(xì)講解,有這方面需求的人可以來學(xué)習(xí)下,希望你能有所收獲。
1.onTouch和onTouchEvent,都是在dispatchTouchEvent()中調(diào)用,onTouch優(yōu)先于onTouchEvent執(zhí)行。如果在onTouch方法中通過返回true將事件消費(fèi)掉,onTouchEvent將不會(huì)再執(zhí)行。另外需要注意的是,onTouch能夠得到執(zhí)行需要兩個(gè)前提條件,第一mOnTouchListener的值不能為空,第二當(dāng)前點(diǎn)擊的控件必須是enable的。因此如果你有一個(gè)控件是非enable的,那么給它注冊(cè)onTouch事件將永遠(yuǎn)得不到執(zhí)行。對(duì)于這一類控件,如果我們想要監(jiān)聽它的touch事件,就必須通過在該控件中重寫onTouchEvent方法來實(shí)現(xiàn)。
1、onTouch方法:
onTouch方法是View的 OnTouchListener借口中定義的方法。
當(dāng)一個(gè)View綁定了OnTouchLister后,當(dāng)有touch事件觸發(fā)時(shí),就會(huì)調(diào)用onTouch方法。
(當(dāng)把手放到View上后,onTouch方法被一遍一遍地被調(diào)用)
2、onTouchEvent方法:
onTouchEvent方法是override 的Activity的方法。
重新了Activity的onTouchEvent方法后,當(dāng)屏幕有touch事件時(shí),此方法就會(huì)別調(diào)用。
(當(dāng)把手放到Activity上時(shí),onTouchEvent方法就會(huì)一遍一遍地被調(diào)用)
3、touch事件的傳遞:
在一個(gè)Activity里面放一個(gè)TextView的實(shí)例tv,并且這個(gè)tv的屬性設(shè)定為 fill_parent
在這種情況下,當(dāng)手放到屏幕上的時(shí)候,首先會(huì)是tv響應(yīng)touch事件,執(zhí)行onTouch方法。
如果onTouch返回值為true,
表示這個(gè)touch事件被onTouch方法處理完畢,不會(huì)把touch事件再傳遞給Activity,
也就是說onTouchEvent方法不會(huì)被調(diào)用。
(當(dāng)把手放到屏幕上后,onTouch方法被一遍一遍地被調(diào)用)
如果onTouch的返回值是false,
表示這個(gè)touch事件沒有被tv完全處理,onTouch返回以后,touch事件被傳遞給Activity,
onTouchEvent方法被調(diào)用。
看完上述內(nèi)容是否對(duì)您有幫助呢?如果還想對(duì)相關(guān)知識(shí)有進(jìn)一步的了解或閱讀更多相關(guān)文章,請(qǐng)關(guān)注創(chuàng)新互聯(lián)行業(yè)資訊頻道,感謝您對(duì)創(chuàng)新互聯(lián)的支持。