一前言
時光如梭,熬了無數的夜,也未感覺時間變慢。學習的過程中感覺有很大進步,突破了瓶頸。現在看來也僅僅是上了一個小臺階,亦或是一場錯覺。當然也存在從入門到放棄的敗筆,學過忘記的敗筆。後知後覺並不可怕,可怕的是不知不覺。
二回顧
2.1失敗的播放器
2018年是缺少學習計劃的一年,所有的學習計劃全部是臨時起意。年初對視訊播放做了研究,基於ijkplay開源庫仿照qq瀏覽器UI做了一個視訊播放器的封裝實現。仿照程度還算是可以。適配工作沒有做。現在看來,這個計劃並未讓我從中獲取內心真實渴望的知識,從效率上來講,花費一個月休息時間,學了一些不知道什麼時候就會忘記的API,時間算是浪費掉。這個專案對我有幫助也就是鞏固類的設計,封裝和解耦。
2.2算是入門的kotlin語言
之後又受大環境的影響,入門了kotlin語言。為了更好的入門,更深刻的記住kotlin的特性,找到了別人的開源介面和UI,使用kotlin語言寫了一個開源專案,同時看了《Kotlin Action》這本書。記錄了十篇筆記文章。 進步點有:1優化了mvp寫法,2.UI進行了基類抽取。3.熟悉大量kotlin語法糖的用法。
2.3android的自定義控制元件
自定義控制元件學習過程中感覺是突破,現在看來也僅僅是一個入門。關於自定義控制元件筆者已經從入門到放棄二次了。現在看來前兩次的放棄並不是因為難,而是不得其法門。
以自定義屬性動畫為基礎:
(屬性動畫原理:在一定時間間隔內,通過不斷對值進行改變,並不斷將該值賦給物件的屬性,不斷的呼叫onDrow重新繪製檢視,從而實現該物件在該屬性上的動畫效果。)
以分析原始碼測量控制元件流程為突破口:
(DecorView物件呼叫View#measure 引數為自己生成的MeasureSpec------>在View#measure中又呼叫了onMeasure(widthMeasureSpec, heightMeasureSpec)
方法------>不同的子類重寫了不同的onMeasure邏輯,但是最基本的都幹了兩件事:1,父容器的MeasureSpec+自己的LayoutParams(使用者寫的佈局寬高)轉換成自己的MeasureSpec,然後遞迴呼叫View的measure方法,2設定自己的真實大小)
以自定義的View的左上角為座標原點,安排內部元素的位置和大小,以及整體的大小。
以hencoder為API文件 :API文件不需要記,浪費腦細胞。用的時候檢視一下就行。
按照自定義步驟:確定view大小---->在onMeasure中告訴父佈局--->onSizeChanged方法中去矯正可以繪製的寬高---->以View左上角為原點算出內部元素的座標繪製一個靜態的效果----->新增屬性動畫實現動態繪製。
2.4學會已經忘記的Databinding和Dagger2
從目前我的知識儲備來看Databinging完全是仿照前端vue框架的思路在android生拉硬套出來一個資料驅動UI框架,犧牲佈局檔案的獨立性去擬補資料驅動UI,這樣增加了耦合性,有點得不償失,但是很多人都說mvvm比較好用,於是就入門了Databinding庫。
Dagger2是一個依賴注入框架,把被依賴的物件的建立全部放到一個地方,讓程式碼好維護。學習成本有點高,學會了也就那麼回事,對於他的學習目的完全是防止別人寫的專案使用了Dagger2,導致看不懂尷尬才入手。
2.5解開的心結自動重新整理token無感請求
為什麼說他是一個心結,因為一次面試被問到這個問題,一直沒有解決方案,直到找到解決方案:retryWhen+onErrorResumeNext實現動態無感重新整理token。一個非常精緻的需求實現。
2.6從入門到放棄的RxCamera
相機庫沒有封裝出來,rx技術倒是有所精進。年初以放棄多媒體開發開始,年尾以放棄多媒體開發結束。
2.7入門了uni-app
年底最後的4個月沒有更文,並不是因為懶惰了,公司安排使用uni-app去寫一個微信小程式。稀裡糊塗的寫完了,但是僅僅是一個入門水準,但是卻給我2019年增加了一個安排,系統學習一下前端語言。
三總結
既然是總結,就要說點感悟:通過kotlin語言和js語言的學習,對比java語言,得出一個感覺,語言思想都是互通的,所以再之後的學習中,儘量不要記哪些無聊的API,API只是手段,打紮實基礎語法。之後就是多學思想(大量看別人的或者系統的原始碼,體會程式碼的思路,轉化為自己的思路),多去了解最新技術,每一種新技術就意味著一種新思想。
四2019計劃
1.全面系統的學一下前端基礎和前端比較火的框架。
2.閱讀《圖解http》一書。
3.小程式系統學習。
4.android入手jetpack和多看一些android的開源專案。
5.入門一下後臺。