title: Android學習路線總結丐黄,絕對干貨
tags: Android學習路線,Android學習資料,怎么學習android
一绊序、前言
不知不覺自己已經(jīng)做了幾年開發(fā)了纷宇,由記得剛出來工作的時候感覺自己能牛逼夸盟,現(xiàn)在回想起來感覺好無知。懂的越多的時候你才會發(fā)現(xiàn)懂的越少像捶。
如果你的知識是一個圓上陕,當你的圓越大時,圓外面的世界也就越大拓春。
最近看到很多Android新手問Android學習路線释簿,學習方法啊,如何入門啊硼莽,所以我從網(wǎng)上找了一些資料庶溶,然后以我的工作經(jīng)驗給大家總結一下,讓你們少走彎路,提取一些工作中經(jīng)常用到的技術偏螺。
二行疏、學習知識匯總
1、Java se基礎
1).Java基本數(shù)據(jù)類型與表達式砖茸,分支循環(huán)隘擎。
2).String和StringBuffer的使用、正則表達式凉夯。
3).面向?qū)ο蟮某橄蠡踉幔庋b,繼承劲够,多態(tài)震桶,類與對象,對象初始化和回收征绎;構造函數(shù)蹲姐、this關鍵字、方法和方法的參數(shù)傳遞過程人柿、static關鍵字柴墩、內(nèi)部類。
4).對象實例化過程凫岖、方法的覆蓋江咳、final關鍵字、抽象類哥放、接口歼指、繼承的優(yōu)點和缺點剖析;對象的多態(tài)性:子類和父類之間的轉(zhuǎn)換甥雕、抽象類和接口在多態(tài)中的應用踩身、多態(tài)帶來的好處。
5).Java異常處理,異常的機制原理。
6).常用的設計模式:Singleton纫普、Template、Strategy模式附鸽。
7).JavaAPI介紹:種基本數(shù)據(jù)類型包裝類,System和Runtime類孟害,Date和DateFomat類等拒炎。
8).Java集合介紹:Collection、Set挨务、List击你、ArrayList玉组、LinkedList、Hashset丁侄、Map惯雳、HashMap、Iterator等常用集合類API鸿摇。
9).JavaI/O輸入輸出流:File和FileRandomAccess類石景,字節(jié)流InputStream和OutputStream,字符流Reader和Writer拙吉,以及相應實現(xiàn)類潮孽,IO性能分析,字節(jié)和字符的轉(zhuǎn)化流筷黔,包裝流的概念往史,以及常用包裝類,計算機編碼佛舱。
10).Java高級特性:反射和泛型椎例。
11).多線程原理:如何在程序中創(chuàng)建多線程(Thread、Runnable)请祖,線程安全問題订歪,線程的同步,線程之間的通訊肆捕、死鎖刷晋。
2、android UI編程
1)福压、Android開發(fā)環(huán)境搭建:Android介紹掏秩,Android開發(fā)環(huán)境搭建或舞,第一個Android應用程序荆姆,Android應用程序目錄結構。
2)映凳、Android初級控件的使用:
TextView控件的使用
Button控件的使用方法
EditText控件的使用方法
ImageView的使用方法
RadioButton的使用方法
Checkbox的使用方法
Menu的使用方法
3)胆筒、Android高級控件的使用:
ListView的使用方法
GridView的使用方法
Adapter的使用方法
Spinner的使用方法
Gallary的使用方法
ScrollView的使用方法
RecyclerView
4、對話框與菜單的使用:
Dialog的基本概念
BlockquoteAlertDialog的使用方法
DatePickerDialog的使用方法
Menu的使用方法
自定義Menu的實現(xiàn)方法
5.控件的布局方法:
線性布局的使用方法
相對布局的使用方法
6.多Acitivity管理:
AndroidManifest.xml文件的作用
Intent的使用方法
使用Intent傳遞數(shù)據(jù)的方法
啟動Activity的方法
IntentFilter的使用方法
Activity Group的使用方法
7诈豌、自定義控件實現(xiàn)方法:
自定義ListView的實現(xiàn)方法
可折疊ListView的使用方法
自定義Adapter的實現(xiàn)方法
自定義View的實現(xiàn)方法
動態(tài)控件布局的上實現(xiàn)方法
上拉刷新下拉加載更多
3仆救、android網(wǎng)絡編程與數(shù)據(jù)存儲
1).基于Android平臺的HTTP通訊:
Http協(xié)議回顧
使用Get方法向服務器提交數(shù)據(jù)的方法
使用POST方法向服務器提交數(shù)據(jù)的實現(xiàn)方法
使用Http協(xié)議實現(xiàn)多線程下載
使用Http協(xié)議實現(xiàn)斷點續(xù)傳
2).Android數(shù)據(jù)存儲技術:
SQLite3數(shù)據(jù)庫簡介
SQL語句回顧
SQLite3編程接口介紹
SQLite3事務管理
SQLite3游標使用方法
SQLite3性能分析
訪問SDCard的方法
訪問SharedPreferences的方法
參考自:http://www.cnblogs.com/zhuawang/p/3672228.html
三、進階之路(初級->中級->高級)
1矫渔、初級工程師
小明之前完全沒接觸過Android開發(fā)彤蔽,是個應屆生,他的待遇是13k庙洼,然后小明以校招的身份進入了百度顿痪,然后小明需要怎么學習才能成為初級工程師呢镊辕?這個時候,小明對編程基礎蚁袭、數(shù)據(jù)結構、C語言都有一定基礎揩悄,Java語法什么的也都掌握的比較好卖哎,Android才有java語言,無奈的是小明并不會搞Android删性。
小明首先需要購買一本Android入門的書籍亏娜,為了更快地學習Android,小明業(yè)余時間也都用來一邊看書一邊照著書中的例子敲代碼蹬挺,結果2周時間小明就把這本書學了一遍照藻。看完這本書后汗侵,小明對Android的歷史幸缕、結構、代碼規(guī)范等都有了一個大概的了解晰韵,并且发乔,小明已經(jīng)可以寫出一些簡單的Activity了。這個時候在小明眼里雪猪,Android開發(fā)很簡單很好玩栏尚,通過在xml中擺放一些按鈕文本框什么的就可以做一些界面了。
小明開始跟著他的技術導師做需求只恨,一些簡單的小需求小明自然是不在話下了译仗。突然有一天來了一個需求,該需求要求小明在Activity中為一個button加一個動畫效果官觅,小明慌了:“完全沒接觸過纵菌,書上也沒有講,怎么辦呢休涤?”小明冷靜了下咱圆,打開了百度搜索,輸入“Android 動畫”功氨,打開前幾個鏈接序苏,小明恍然大悟,照著網(wǎng)上的例子把需求給實現(xiàn)了捷凄。后來導師告訴他:“學好Android忱详,官方文檔是必須看的,既全面又權威”跺涤。然后小明如獲至寶匈睁,花了一年時間把上面的guide和training都看了一遍管钳,并且他還動手抄了幾個小例子。
有一天软舌,小明又需要做一個動畫相關的需求才漆,這可難不倒小明,它熟練地打開了www.baidu.com佛点,輸入“Android 動畫”醇滥,突然他楞了一下:”總不能每次寫動畫都要百度一下吧!“超营,于是他在CSDN開了一個博客鸳玩,把動畫相關的知識點都寫上去,為的是后面再寫動畫相關的代碼就不用百度去搜了演闭,事實如何呢不跟?后面再寫動畫相關的代碼,小明的確不用再去百度搜了米碰,因為通過寫一篇動畫博客窝革,他把動畫相關的細節(jié)都已經(jīng)記住了,這樣他就可以不用再去參考任何文檔了吕座,后來小明還學會了把一些瑣碎的不方便放在博客上的東西寫到了印象筆記上面虐译,什么時候忘了10秒鐘以內(nèi)都可以快速找回來,而不是花10分鐘去再次搜索一遍吴趴。
這里總結一下漆诽,Android入門的時候,需要有一本入門書锣枝,好好學習書中的內(nèi)容厢拭,同時花一年時間把Android官方文檔中的training和guide看一遍,同時通過寫博客和記筆記的方式來做總結撇叁,建議讓自己的每篇博客都有價值些供鸠。通過一年時間的學習,相信每個人都可以達到中級工程師的水平税朴。
技術要求:
- 基本知識點
比如四大組件如何使用回季、如何創(chuàng)建Service家制、如何進行布局正林、簡單的自定義View、動畫等常見技術 - 書籍推薦
《第一行代碼 Android》颤殴、《瘋狂Android》
2觅廓、中級工程師
小明經(jīng)過一年的努力學習終于成為Android中級工程師了,月薪變成了17k涵但。到了中級工程師杈绸,已經(jīng)可以在公司里干很多體力活了帖蔓,但是一些很重要的任務小明還不能一個人承擔起來,這個時候小明需要學習的內(nèi)容就很多了瞳脓,如下所示:
- AIDL:熟悉AIDL塑娇,理解其工作原理,懂transact和onTransact的區(qū)別劫侧;
- Binder:從Java層大概理解Binder的工作原理埋酬,懂Parcel對象的使用;
- 多進程:熟練掌握多進程的運行機制烧栋,懂Messenger写妥、Socket等;
- 事件分發(fā):彈性滑動审姓、滑動沖突等珍特;
- 玩轉(zhuǎn)View:View的繪制原理、各種自定義View魔吐;
- 動畫系列:熟悉View動畫和屬性動畫的不同點扎筒,懂屬性動畫的工作原理;
- 懂性能優(yōu)化酬姆、熟悉mat等工具
- 懂點常見的設計模式
學習方法
閱讀進階書籍砸琅,閱讀Android源碼,閱讀官方文檔并嘗試自己寫相關的技術文章轴踱,需要有一定技術深度和自我思考症脂。在這個階段的學習過程中,有2個點是比較困擾大家的淫僻,一個是閱讀源碼诱篷,另一個是自定義View以及滑動沖突。
如何閱讀源碼呢雳灵?這是個頭疼的問題棕所,但是源碼必須要讀。閱讀源碼的時候不要深入代碼細節(jié)不可自拔悯辙,要關注代碼的流程并盡量挖掘出對應用層開發(fā)有用的結論琳省。另外仔細閱讀源碼中對一個類或者方法的注釋,在看不懂源碼時躲撰,源碼中的注釋可以幫你更好地了解源碼中的工作原理针贬,這個過程雖然艱苦,但是別無他法拢蛋。
如何玩轉(zhuǎn)自定義View呢桦他?我的建議是不要通過學習自定義view而學習自定義view。為什么這么說呢谆棱?因為自定義view的種類太多了快压,各式各樣的絢麗的自定義效果圆仔,如何學的玩呢!我們要透過現(xiàn)象看本質(zhì)蔫劣,更多地去關注自定義view所需的知識點坪郭,這里做如下總結:
- 搞懂view的滑動原理
- 搞懂如何實現(xiàn)彈性滑動
- 搞懂view的滑動沖突
- 搞懂view的measure、layout和draw
- 然后再學習幾個已有的自定義view的例子
- 最后就可以搞定自定義view了脉幢,所謂萬變不離其宗
大概再需要1-2年時間截粗,即可達到高級工程師的技術水平。我個人認為通過《Android開發(fā)藝術探索》和《Android群英傳》可以縮短這個過程為0.5-1年鸵隧。注意绸罗,達到高級工程師的技術水平不代表就可以立刻成為高級工程師(受機遇、是否跳槽的影響)豆瘫,但是技術達到了珊蟀,成為高級工程師只是很簡單的事。
技術要求:
- 稍微深入的知識點
AIDL外驱、Messenger育灸、Binder、多進程昵宇、動畫磅崭、滑動沖突、自定義View瓦哎、消息隊列等 - 書籍推薦
《Android開發(fā)藝術探索》砸喻、《Android群英傳》
3、高級工程師
小明成為了夢寐以求的高級工程師蒋譬,月薪達到了20k割岛,還拿到了一丟丟股票。這個時候小明的Android水平已經(jīng)不錯了犯助,但是小明的目標是資深工程師癣漆,小明聽說資深工程師月薪可以達到30k+。
為了成為Android資深工程師剂买,需要學習的東西就更多了惠爽,并且有些并不是那么具體了,如下所示:
- 繼續(xù)加深理解”稍微深入的知識點“中所定義的內(nèi)容
- 了解系統(tǒng)核心機制:
- 了解SystemServer的啟動過程
- 了解主線程的消息循環(huán)模型
- 了解AMS和PMS的工作原理
- 能夠回答問題”一個應用存在多少個Window瞬哼?“
- 了解四大組件的大概工作流程
- …
- 基本知識點的細節(jié)
- Activity的啟動模式以及異常情況下不同Activity的表現(xiàn)
- Service的onBind和onReBind的關聯(lián)
- onServiceDisconnected(ComponentName className)和binderDied()的區(qū)別
- AsyncTask在不同版本上的表現(xiàn)細節(jié)
- 線程池的細節(jié)和參數(shù)配置
- …
- 熟悉設計模式婚肆,有架構意識學習方法
這個時候已經(jīng)沒有太具體的學習方法了,無非就是看書倒槐、看源碼和做項目旬痹,平時多種總結,盡量將知識融會貫通從而形成一種體系化的感覺讨越。同時這個階段對架構是有一定要求的两残,架構是抽象的,但是設計模式是具體的把跨,所以一定要加強下設計模式的學習人弓。關于設計模式的學習,最近一本新書推薦給大家《Android 源碼設計模式解析與實戰(zhàn)》着逐,既可以學習設計模式崔赌,又可能體會到Android源碼中的設計思想,我最近也在閱讀此書耸别。
技術要求:
- 稍微深入的知識點
- 系統(tǒng)核心機制
- 基本知識點的細節(jié)
- 設計模式和架構
- 書籍推薦
《Android開發(fā)藝術探索》健芭、《Android 源碼設計模式解析與實戰(zhàn)》、《Android內(nèi)核剖析》
參考自:http://blog.csdn.net/singwhatiwanna/article/details/49560409
四秀姐、學習視頻跟書籍
當你有了學習線路慈迈,學習哪些內(nèi)容,也知道以后的路怎么走了省有,理論看多了總要實踐的痒留,我這里給你們整理了大概80G的學習視頻跟書籍,趕快點我點我點我蠢沿。伸头。。下載舷蟀。恤磷。
如果你想第一時間看我們的后期文章,掃碼關注公眾號野宜,每周不定期推送Android開發(fā)實戰(zhàn)教程文章M胍蟆!速缨!
Android開發(fā)666 - 安卓開發(fā)技術分享
掃描二維碼加關注