這篇文章給大家分享的是有關(guān)Android如何學(xué)習(xí)的內(nèi)容。小編覺(jué)得挺實(shí)用的,因此分享給大家做個(gè)參考,一起跟隨小編過(guò)來(lái)看看吧。
十多年的海珠網(wǎng)站建設(shè)經(jīng)驗(yàn),針對(duì)設(shè)計(jì)、前端、開(kāi)發(fā)、售后、文案、推廣等六對(duì)一服務(wù),響應(yīng)快,48小時(shí)及時(shí)工作處理。成都營(yíng)銷(xiāo)網(wǎng)站建設(shè)的優(yōu)勢(shì)是能夠根據(jù)用戶(hù)設(shè)備顯示端的尺寸不同,自動(dòng)調(diào)整海珠建站的顯示方式,使網(wǎng)站能夠適用不同顯示終端,在瀏覽器中調(diào)整網(wǎng)站的寬度,無(wú)論在任何一種瀏覽器上瀏覽網(wǎng)站,都能展現(xiàn)優(yōu)雅布局與設(shè)計(jì),從而大程度地提升瀏覽體驗(yàn)。成都創(chuàng)新互聯(lián)從事“海珠網(wǎng)站設(shè)計(jì)”,“海珠網(wǎng)站推廣”以來(lái),每個(gè)客戶(hù)項(xiàng)目都認(rèn)真落實(shí)執(zhí)行。
先上一張android開(kāi)發(fā)知識(shí)點(diǎn)學(xué)習(xí)路線圖思維導(dǎo)圖
Android學(xué)習(xí)路線從4個(gè)階段來(lái)對(duì)Android的學(xué)習(xí)過(guò)程做一個(gè)全面的分析:Android初級(jí)、中級(jí)、高級(jí)以及資深工程師。
只針對(duì)Android應(yīng)用開(kāi)發(fā),不針對(duì)Rom開(kāi)發(fā)和逆向工程等。方便起見(jiàn)虛擬“小D”為成長(zhǎng)人物進(jìn)行描述。
初級(jí)工程師
小D之前完全沒(méi)接觸過(guò)Android開(kāi)發(fā),對(duì)編程基礎(chǔ)、數(shù)據(jù)結(jié)構(gòu)、C語(yǔ)言都有一定基礎(chǔ),Java語(yǔ)法什么的也都掌握的比較好,并不會(huì)搞Android。
首先需要購(gòu)買(mǎi)一本Android入門(mén)的書(shū)籍(現(xiàn)在更推薦直接看視頻教程結(jié)合網(wǎng)上教程動(dòng)手練習(xí)),為了更快地學(xué)習(xí)Android,小D業(yè)余時(shí)間也都用來(lái)一邊看書(shū)一邊照著書(shū)中的例子敲代碼,結(jié)果2周時(shí)間小D就把這本書(shū)學(xué)了一遍??赐赀@本書(shū)后對(duì)Android的歷史、結(jié)構(gòu)、代碼規(guī)范等都有了一個(gè)大概的了解,可以寫(xiě)出一些簡(jiǎn)單的Activity。這個(gè)時(shí)候在小D眼里,Android開(kāi)發(fā)很簡(jiǎn)單很好玩,通過(guò)在xml中擺放一些按鈕文本框什么的就可以做一些界面了。
小D開(kāi)始跟著他的技術(shù)導(dǎo)師做需求,一些簡(jiǎn)單的小需求不在話下了。突然有一天來(lái)了一個(gè)需求,該需求要求在Activity中為一個(gè)button加一個(gè)動(dòng)畫(huà)效果,小D慌了:“完全沒(méi)接觸過(guò),書(shū)上也沒(méi)有講,怎么辦呢?”小D冷靜了下,搜索“Android 動(dòng)畫(huà)”,打開(kāi)前幾個(gè)鏈接,恍然大悟,照著網(wǎng)上的例子把需求給實(shí)現(xiàn)了。
后來(lái)導(dǎo)師告訴他:“學(xué)好Android,官方文檔是必須看的,既全面又權(quán)威”。然后小D如獲至寶,花了一年時(shí)間把上面的guide和training都看了一遍,并且他還動(dòng)手抄了幾個(gè)小例子。
有一天,小D又需要做一個(gè)動(dòng)畫(huà)相關(guān)的需求,又搜索“Android 動(dòng)畫(huà)”,突然他楞了一下:”總不能每次寫(xiě)動(dòng)畫(huà)都要搜索吧!“,于是他在CSDN開(kāi)了一個(gè)博客,把動(dòng)畫(huà)相關(guān)的知識(shí)點(diǎn)都寫(xiě)上去,為的是后面再寫(xiě)動(dòng)畫(huà)相關(guān)的代碼就不用去搜了,事實(shí)如何呢?后面再寫(xiě)動(dòng)畫(huà)相關(guān)的代碼,的確不用再去搜了,因?yàn)橥ㄟ^(guò)寫(xiě)一篇?jiǎng)赢?huà)博客,他把動(dòng)畫(huà)相關(guān)的細(xì)節(jié)都已經(jīng)記住了,這樣他就可以不用再去參考任何文檔了,后來(lái)小D還學(xué)會(huì)了把一些瑣碎的不方便放在博客上的東西寫(xiě)到了筆記上面,什么時(shí)候忘了10秒鐘以?xún)?nèi)都可以快速找回來(lái),而不是花10分鐘去再次搜索一遍。
總結(jié):Android入門(mén)的時(shí)候,需要有一本入門(mén)書(shū)(或者視頻教程),好好學(xué)習(xí)書(shū)中的內(nèi)容,同時(shí)花一年時(shí)間把Android官方文檔中的training和guide看一遍,同時(shí)通過(guò)寫(xiě)博客和記筆記的方式來(lái)做總結(jié),建議讓自己的每篇博客都有價(jià)值些。通過(guò)一年時(shí)間的學(xué)習(xí),相信每個(gè)人都可以達(dá)到中級(jí)工程師的水平。
技術(shù)要求:
- 基本知識(shí)點(diǎn)
比如四大組件如何使用、如何創(chuàng)建Service、如何進(jìn)行布局、簡(jiǎn)單的自定義View、動(dòng)畫(huà)等常見(jiàn)技術(shù)
- 書(shū)籍推薦
《第一行代碼 Android》、《瘋狂Android》
中級(jí)工程師
小D經(jīng)過(guò)一年的努力學(xué)習(xí)終于成為Android中級(jí)工程師了。到了中級(jí)工程師,已經(jīng)可以在公司里干很多體力活了,但是一些很重要的任務(wù)小D還不能一個(gè)人承擔(dān)起來(lái),這個(gè)時(shí)候小D需要學(xué)習(xí)的內(nèi)容就很多了,如下所示:
- AIDL:熟悉AIDL,理解其工作原理,懂transact和onTransact的區(qū)別;
- Binder:從Java層大概理解Binder的工作原理,懂Parcel對(duì)象的使用;
- 多進(jìn)程:熟練掌握多進(jìn)程的運(yùn)行機(jī)制,懂Messenger、Socket等;
- 事件分發(fā):彈性滑動(dòng)、滑動(dòng)沖突等;
- 玩轉(zhuǎn)View:View的繪制原理、各種自定義View;
- 動(dòng)畫(huà)系列:熟悉View動(dòng)畫(huà)和屬性動(dòng)畫(huà)的不同點(diǎn),懂屬性動(dòng)畫(huà)的工作原理;
- 懂性能優(yōu)化、熟悉mat等工具
- 懂點(diǎn)常見(jiàn)的設(shè)計(jì)模式
學(xué)習(xí)方法
閱讀進(jìn)階書(shū)籍,閱讀Android源碼,閱讀官方文檔并嘗試自己寫(xiě)相關(guān)的技術(shù)文章,需要有一定技術(shù)深度和自我思考。在這個(gè)階段的學(xué)習(xí)過(guò)程中,有2個(gè)點(diǎn)是比較困擾大家的,一個(gè)是閱讀源碼,另一個(gè)是自定義View以及滑動(dòng)沖突。
如何閱讀源碼呢?這是個(gè)頭疼的問(wèn)題,但是源碼必須要讀。閱讀源碼的時(shí)候不要深入代碼細(xì)節(jié)不可自拔,要關(guān)注代碼的流程并盡量挖掘出對(duì)應(yīng)用層開(kāi)發(fā)有用的結(jié)論。另外仔細(xì)閱讀源碼中對(duì)一個(gè)類(lèi)或者方法的注釋?zhuān)诳床欢创a時(shí),源碼中的注釋可以幫你更好地了解源碼中的工作原理,這個(gè)過(guò)程雖然艱苦,但是別無(wú)他法。
如何玩轉(zhuǎn)自定義View呢?我們要透過(guò)現(xiàn)象看本質(zhì),更多地去關(guān)注自定義view所需的知識(shí)點(diǎn):
- 搞懂view的滑動(dòng)原理
- 搞懂如何實(shí)現(xiàn)彈性滑動(dòng)
- 搞懂view的滑動(dòng)沖突
- 搞懂view的measure、layout和draw
- 然后再學(xué)習(xí)幾個(gè)已有的自定義view的例子
- 最后就可以搞定自定義view了,所謂萬(wàn)變不離其宗
大概再需要1-2年時(shí)間,即可達(dá)到高級(jí)工程師的技術(shù)水平。我個(gè)人認(rèn)為通過(guò)《Android開(kāi)發(fā)藝術(shù)探索》和《Android群英傳》可以縮短這個(gè)過(guò)程為0.5-1年。注意,達(dá)到高級(jí)工程師的技術(shù)水平不代表就可以立刻成為高級(jí)工程師(受機(jī)遇、是否跳槽的影響),但是技術(shù)達(dá)到了,成為高級(jí)工程師只是很簡(jiǎn)單的事。
技術(shù)要求:
- 稍微深入的知識(shí)點(diǎn)
AIDL、Messenger、Binder、多進(jìn)程、動(dòng)畫(huà)、滑動(dòng)沖突、自定義View、消息隊(duì)列等
- 書(shū)籍推薦
《Android開(kāi)發(fā)藝術(shù)探索》、《Android群英傳》
高級(jí)工程師
小D成為了夢(mèng)寐以求的高級(jí)工程師。這個(gè)時(shí)候小D的Android水平已經(jīng)不錯(cuò)了,但是小D的目標(biāo)是資深工程師,小D聽(tīng)說(shuō)資深工程師月薪可以達(dá)到30k+。
為了成為Android資深工程師,需要學(xué)習(xí)的東西就更多了,并且有些并不是那么具體了,如下所示:
- 繼續(xù)加深理解”稍微深入的知識(shí)點(diǎn)“中所定義的內(nèi)容
- 了解系統(tǒng)核心機(jī)制:
1. 了解SystemServer的啟動(dòng)過(guò)程
2. 了解主線程的消息循環(huán)模型
3. 了解AMS和PMS的工作原理
4. 能夠回答問(wèn)題”一個(gè)應(yīng)用存在多少個(gè)Window?“
5. 了解四大組件的大概工作流程
6. …
- 基本知識(shí)點(diǎn)的細(xì)節(jié)
1. Activity的啟動(dòng)模式以及異常情況下不同Activity的表現(xiàn)
2. Service的onBind和onReBind的關(guān)聯(lián)
3. onServiceDisconnected(ComponentName className)和binderDied()的區(qū)別
4. AsyncTask在不同版本上的表現(xiàn)細(xì)節(jié)
5. 線程池的細(xì)節(jié)和參數(shù)配置
6. …
- 熟悉設(shè)計(jì)模式,有架構(gòu)意識(shí)
學(xué)習(xí)方法
這個(gè)時(shí)候已經(jīng)沒(méi)有太具體的學(xué)習(xí)方法了,無(wú)非就是看書(shū)、看源碼和做項(xiàng)目,平時(shí)多種總結(jié),盡量將知識(shí)融會(huì)貫通從而形成一種體系化的感覺(jué)。
同時(shí)這個(gè)階段對(duì)架構(gòu)是有一定要求的,架構(gòu)是抽象的,但是設(shè)計(jì)模式是具體的,所以一定要加強(qiáng)下設(shè)計(jì)模式的學(xué)習(xí)。關(guān)于設(shè)計(jì)模式的學(xué)習(xí),推薦《Android 源碼設(shè)計(jì)模式解析與實(shí)戰(zhàn)》,既可以學(xué)習(xí)設(shè)計(jì)模式,又可能體會(huì)到Android源碼中的設(shè)計(jì)思想。
感謝各位的閱讀!關(guān)于“Android如何學(xué)習(xí)”這篇文章就分享到這里了,希望以上內(nèi)容可以對(duì)大家有一定的幫助,讓大家可以學(xué)到更多知識(shí),如果覺(jué)得文章不錯(cuò),可以把它分享出去讓更多的人看到吧!