android開發藝術探索
1.View有兩個方法用來響應使用者的觸控事件,dispatchTouchEvent()和onTouchEvent().因為View本身就是一個觸控事件的最後響應Target,所以它沒有ViewGroup的onInterceptTouchEvent()方法。(順便提一下ViewGroup的onInterceptTouchEvent()方法,預設都是返回false,不攔截事件).
2.那麼,View中OnClickListener的onClick方法什麼時候被呼叫?我們先從View分發事件的dispatchTouchEvent方法看,
接著看22行到33行的一段邏輯,發現onTouchEvent()方法是在dispatchTouchEvent()方法中呼叫的,在第27行用到了OnTouchListener的onTouch()方法的返回值,而在第30行呼叫了onTouchEvent()方法,可以看出onTouch方法的返回值直接決定result的值,而result的值又決定了onTouchEvent方法是否會執行。從而得到結論:onTouch()必須方法返回true的時候,result才能為true,而在result為true的時候onTouchEvent方法是不會執行的,onTouch方法返回false的時候,result肯定是false,這個時候onTouchEvent方法才會執行。
2.然後再來看onTouchEvent()方法:
可以看到在在使用者將手指離開螢幕的時候,也就是ACTION_UP的邏輯當中進行了一系列判斷操作,最終呼叫了一個performClick()方法,看下這個方法程式碼:
看下注釋: Call the View's OnClickListener, if it is defined. 解釋的多好。明確的在裡面呼叫了OnClickListener的OnClick()方法。其實在自己程式碼中也可以直接呼叫這個方法來模擬一次View的點選事件。
至此,View的OnClickListener方法呼叫流程基本明確了,就是在OnTouchEvent方法中的ACTION_UP中,呼叫了OnClick方法,需要注意的是:如果View設定了OnTouchListener並且在onTouch方法返回true,那麼onTouchEvent方法不會執行,onClick方法也不會被呼叫。
問:那麼還有別的地方會呼叫onClickListener的onClick()方法嗎?
答:有!
全域性搜尋一下,還有一個callOnclick方法也呼叫了onClick()方法,但是這個方法並沒有在事件的分發過程中被呼叫,不作考慮。
相關文章
- Android開發藝術探索 第7章 動畫深入分析Android動畫
- 書海拾貝|開發藝術探索之 android 的訊息機制Android
- Android 開發藝術探索筆記之一 -- Android 的生命週期和啟動模式Android筆記模式
- 探索 Android TDD 開發方法Android
- 探索 Android BDD 開發方法Android
- NFT生態藝術開發丨NFT數藏藝術丨NFT生態藝術系統開發技術
- 非梵藝術NFT數藏開發/系統技術開發/非梵藝術NFT模式模式
- NFT非梵藝術/數藏系統開發/非梵藝術技術開發NFT詳情
- TGDC | 探索人臉藝術背後的技術
- Android-毛筆的探索與開發Android
- NFT生態藝術開發詳情丨數藏藝術系統開發丨Solidity語言技術Solid
- 開發的藝術,化繁為簡
- 用藝術的眼光探索資料之美
- Kotlin藝術探索之引數和異常Kotlin
- 要點提煉|開發藝術之IPC
- 前端開發中的程式碼藝術(精要)前端
- Kotlin藝術探索之流程控制和運算子Kotlin
- 廢土藝術風格丨主題UI探索UI
- android 開發之 APT 技術AndroidAPT
- 愛奇藝 Android PLT hook 技術分享AndroidHook
- openseaNFT藝術品交易平臺如何開發搭建
- Android開發技術面總結Android
- Spring開發:動態代理的藝術與實踐Spring
- 唯一藝術NFT系統定製開發模式模式
- 愛奇藝RND框架技術探索——架構與實現框架架構
- Android開發進階——自定義View的使用及其原理探索AndroidView
- OPPO Android開發技術面總結Android
- NFT數藏元宇宙藝術品交易系統開發技術解析元宇宙
- IntelliJ IDEA 2023:打造高效開發的藝術 mac/win版IntelliJIdeaMac
- 如何開發自己的NFT數字收藏藝術平臺
- PUBG Mobile主題UI設計:廢土藝術風格探索UI
- 筆記 深入探索Android熱修復技術原理筆記Android
- Android 開發技術週報 Issue#288Android
- Android 開發技術週報 Issue#279Android
- Android 開發技術週報 Issue#269Android
- Android開發工程師(雲技術方向)--急聘Android工程師
- Java併發程式設計藝術Java程式設計
- 金鳳數藝NFT數藏系統技術開發示例
- TAURO平行宇宙NFT探索系統技術開發詳情