推翻自己和过往,重学自定义View
http://blog.csdn.net/lfdfhl/article/details/51671038
?
深入探討Android異步精髓Handler
站在源碼的肩膀上全解Scroller工作機制
Android多分辨率適配框架(1)— 核心基礎?
Android多分辨率適配框架(2)— 原理剖析?
Android多分辨率適配框架(3)— 使用指南
自定義View系列教程00–推翻自己和過往,重學自定義View?
自定義View系列教程01–常用工具介紹?
自定義View系列教程02–onMeasure源碼詳盡分析?
自定義View系列教程03–onLayout源碼詳盡分析?
自定義View系列教程04–Draw源碼分析及其實踐?
自定義View系列教程05–示例分析?
自定義View系列教程06–詳解View的Touch事件處理?
自定義View系列教程07–詳解ViewGroup分發Touch事件?
自定義View系列教程08–滑動沖突的產生及其處理
PS:如果覺得這個系列的每篇文章太長,那就直接看視頻吧
你和我可能相似的感受
路上的司機都知道自定義View有三個重要的步驟:measure,layout,draw。?
關于這三個玩意,我們聽得太多太多了,平常工作也基本上是這么按部就班的。?
可是有一天,我們或許會發現許多關于自定義View的開發技術我們僅僅是掌握了常見的用法,但是沒有去深入學習過;許多問題一知半解,知其然而不知其所以然。比如:
這七個葫蘆娃之前也一直困擾著我,我就去找資料看,從博客園到CSDN,從stackoverflow到EOE論壇,從百草園到三味書屋,搜了一大筐,沮喪的發現這些文章大同小異:只舉個簡單的例子,很少研究為什么;人云亦云,文章里的內容根本沒有去驗證和深究就發出來了;或者避重就輕展示簡單的Demo直接把難點給繞過去了;文章零零散散不成體系……每次看完這些文章覺得還是暈頭轉向,稀里糊涂,原本就不多的學習動力和勇氣也消失殆盡了。這可能就是《自定義View——從入門到放棄》的劇本吧:我們欲求不滿,欲罷不能——想搞懂卻又覺得難,想放棄又覺得舍不得。看了那么多文章依舊不能解答原來的疑惑;就像聽過了許多大道理依舊不過好這一生。?
每當這個時候我都在想:要是有一個介紹自定義View的系列教程該有多好呀!要是有一個圖能把繁雜的源碼流程梳理得清清楚楚的那該有多好呀!?
可是,在反復的搜索之后我的愿望依舊落空了,沒有人給我準備好我需要的東西。當我想安慰自己再等等的時候,我猛地想起風韻猶存的郭大嬸說的那句話:每當你在感嘆,如果有這樣一個東西就好了的時候,請注意,其實這是你的機會。?
是啊,你怎么總是在期待別人把東西洗得干干凈凈,擺得整整齊齊地放在你面前呢?!??
對啊,自己動手實現這個期待難道不是一個最好的學習過程么?!?
嗯哼,想到這里我決定了要自己梳理自定義View,而且要把它們弄成一個系列的。
自定義View系列教程
既然要重新學習自定義View,那就不能再走老路了。所以,這次我都是從源碼開始的,從源碼里尋找那些解開困惑的良方。在看完源碼之后,我怕腦子笨過幾天又忘記了,于是我又著手畫流程圖。印象最深的是畫ViewGroup的dispatchTouchEvent()流程圖,端午節在家畫了一天。我以前特別討厭畫流程圖,覺得花拳繡腿沒有實際的用處。通過這些段時間,我才認識到自己的無知!其實,畫流程圖是對代碼的理解和邏輯的分析是非常有幫助的!只要你能畫出對應的流程圖來,那么說明你是正真的理解了!畫完流程圖之后,我就開心地睡覺了,一覺起來發現有的東西又變得模糊了,反而是夢里的美女清晰得很,連脖子后面有顆痣都還記得!無恥啊,無恥!好吧,我只好使出我的殺手锏了———寫博客!每次學習完對應的內容,我就寫一篇博客記錄下來,而且在記錄的過程中再次梳理知識點,同時進行詳細得令人發指的記錄,比如在源碼分析的時候哪幾行是干嘛的都一一作了筆記。
最后形成了一個系列的文章:
自定義View系列教程01–常用工具介紹?
自定義View系列教程02–onMeasure源碼詳盡分析?
自定義View系列教程03–onLayout源碼詳盡分析?
自定義View系列教程04–Draw源碼分析及其實踐?
自定義View系列教程05–示例分析?
自定義View系列教程06–詳解View的Touch事件處理?
自定義View系列教程07–詳解ViewGroup分發Touch事件?
自定義View系列教程08–滑動沖突的產生及其處理
前后一共花了一個半月的時間,戰線稍微拉得有點長了。沒辦法,基本每天都要加班,有時候連周末都難于幸免。學習的時候只有安排在晚上回家之后了。這個過程有一點點痛苦,還好,還好,堅持過來了。
多謝你們
小伙伴?
博客是發到CSDN上的,由于每篇文章都很長,所以我有點擔心沒有人看。后來發現我的顧慮有點多余了,不但有人看還有的人看得很仔細并且指出了文章中的筆誤,非常感謝
郭大嬸?
有幾次看源碼看得我有些郁悶,情緒也不好;我就硬著頭皮繼續看結果更悲劇了,犯了低級的錯誤。好在郭大嬸出手相救,把我從懸崖邊拉了回來。這也給我一個教訓:不要死鉆牛角尖難以自拔,狀態不好的時候就換個思路,或者出去走走,或者聽歌舒緩一下情緒,或者打開E盤學習一下中日文化交流
Stay?
開車多年的老司機了,我有次在看源碼拐彎的時候卡住了。多謝他幫我拖車,拖完之后還給我講Retrofit。
不打雞血,不喝雞湯;不念過往,不畏將來。
期望有一天不用寫代碼也吃得起饅頭。
或許我是一個存在主義者。
PS:如果覺得這個系列的每篇文章太長,那就直接看視頻吧
總結
以上是生活随笔為你收集整理的推翻自己和过往,重学自定义View的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: C语言函数
- 下一篇: 如何进入交换机配置命令窗口