日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

推翻自己和过往,重学自定义View

發布時間:2023/12/9 编程问答 26 豆豆
生活随笔 收集整理的這篇文章主要介紹了 推翻自己和过往,重学自定义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的開發技術我們僅僅是掌握了常見的用法,但是沒有去深入學習過;許多問題一知半解,知其然而不知其所以然。比如:

  • 為什么父View影響到了子View的MeasureSpec的生成?
  • 為什么自定義一個View在布局時將其大小設為wrap_content但其實際卻是match_parent的效果?
  • 子View的specMode和specSize生成的依據是什么?
  • 為什么子View對于ACTION_DOWN返回false,系統就不會將ACTION_MOVE和ACTION_UP派發給該子View?
  • 為什么子view對于Touch事件處理返回true那么其上層的ViewGroup就無法處理Touch事件?
  • View的滑動沖突是怎么產生的,又該怎么處理?
  • 為什么有時requestDisallowInterceptTouchEvent()會失效?
  • 這七個葫蘆娃之前也一直困擾著我,我就去找資料看,從博客園到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的全部內容,希望文章能夠幫你解決所遇到的問題。

    如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。