onTouch和onTouchEvent,ontouch

來源:互聯網
上載者:User

onTouch和onTouchEvent,ontouch

1.onTouch和onTouchEvent,都是在dispatchTouchEvent()中調用,onTouch優先於onTouchEvent執行。如果在onTouch方法中通過返回true將事件消費掉,onTouchEvent將不會再執行。另外需要注意的是,onTouch能夠得到執行需要兩個前提條件,第一mOnTouchListener的值不可為空,第二當前點擊的控制項必須是enable的。因此如果你有一個控制項是非enable的,那麼給它註冊onTouch事件將永遠得不到執行。對於這一類控制項,如果我們想要監聽它的touch事件,就必須通過在該控制項中重寫onTouchEvent方法來實現。

--------------------------

1.onTouch方法:
onTouch方法是View的 OnTouchListener借口中定義的方法。
當一個View綁定了OnTouchLister後,當有touch事件觸發時,就會調用onTouch方法。
(當把手放到View上後,onTouch方法被一遍一遍地被調用)

2.onTouchEvent方法:
onTouchEvent方法是override 的Activity的方法。
重新了Activity的onTouchEvent方法後,當螢幕有touch事件時,此方法就會別調用。
(當把手放到Activity上時,onTouchEvent方法就會一遍一遍地被調用)

3.touch事件的傳遞:
在一個Activity裡面放一個TextView的執行個體tv,並且這個tv的屬性設定為 fill_parent
在這種情況下,當手放到螢幕上的時候,首先會是tv響應touch事件,執行onTouch方法。

如果onTouch傳回值為true,
表示這個touch事件被onTouch方法處理完畢,不會把touch事件再傳遞給Activity,
也就是說onTouchEvent方法不會被調用。
(當把手放到螢幕上後,onTouch方法被一遍一遍地被調用)

如果onTouch的傳回值是false,
表示這個touch事件沒有被tv完全處理,onTouch返回以後,touch事件被傳遞給Activity,
onTouchEvent方法被調用。

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.