一個老鳥發的公司內部整理的 Android 學習路線圖 2017年09月12日 17:13:27 閱讀數:20449 一個老鳥發的公司內部整理的 Android 學習路線圖 2017年09月12日 17:13:27 閱讀數:20449 一個老鳥發的公司內部整理的 Android 學習路線圖 一個老鳥 ...
一個老鳥發的公司內部整理的 Android 學習路線圖
2017年09月12日 17:13:27 閱讀數:20449jixiaohua發了一篇一個老鳥也發了一份他給公司內部小伙伴整理的路線圖
。另一份 Android 開發學習路線圖。可惜不是MarkDown格式的,所以jixiaohua直接上傳的截圖,在jixiaohua的呼籲下,我花了些時間,把這篇大牛的推薦清單編輯成了Markdown格式,方便大家瀏覽,學習。
有一些鏈接可能還不是特別準確,因為我只能根據圖片上的書或者資源的名字去Google可能的書籍,所以鏈接上有什麼不對的,歡迎大家評論指出,我會及時更正。請參考原文:另一份 Android 開發學習路線圖 幫助修改。謝謝。
- 基礎工具部分: 中文手冊,我猜測是Maven中文手冊,可是我並沒有找到這樣的資源,歡迎知道的朋友告訴我;
- Android部分有 『第三方庫集合』,我沒能找到資源地址;
- 書籍我大多是給的豆瓣鏈接,如果覺得不合適可以替換一下;
程式設計
一、java
(a)基本語法(如繼承、異常、引用、泛型等)
- Java核心技術 捲I(適合入門)
- 進階
- Effective Java中文版(如何寫好的Java代碼)
- Java解惑 (介紹爛Java代碼是什麼樣的)
(b)多線程、併發
- Java併發編程實戰 (系統全面的介紹了Java的併發,如何設計支持併發的數據結構)
(c)Java 7
- Java程式員修煉之道 (詳細的介紹Java 7 的新特性)
(d)Java 8
(e)Java虛擬機
- 深入理解Java虛擬機 (並不是那麼難,Java程式員都該看看)
(f)性能優化
- Java性能優化權威指南 (後面的章節好像用處不大,前面有些部分還是值得看)
二、演算法與數據結構
- 演算法時間複雜度、空間複雜度的基本認知
- 熟悉常用數據結構:鏈表、隊列、散列表、樹等;
- 遞歸、分支等基本思想;
- 常用演算法應用:排序、查找、比較等
- 數據結構與演算法分析 (涵蓋面比較全、示例是Java語言)
- 演算法設計與分析基礎 (實用主義的典型、偏演算法設計)
- 編程珠璣 (實踐型演算法數據)
三、操作系統
- 對Linux/OS的基本認知
- Linux的常用命令
- 鳥哥的Linux私房菜
- Linux內核設計與實現(原書第3版) (很精煉的語言描述清楚了內核演算法)
四、網路
- Http/Https
- TCP/IP
五、Android
- 四大組件(服務、廣播、ContentProvider、頁面容器)
- 基礎UI組件(ListView、ViewPager)
- 非同步任務機制(AsyncTask、Handler、線程池)
- 佈局優化(層級、繪製、碎片化處理)
- 圖片載入(Bitmap、緩衝區)
- UniversalMusicePlayer (通過學習一個音樂播放器的代碼能很快瞭解四大組件)
- Android Training官方課程
- Android一些重要知識點解析整理
- Android UI/UX庫(各類常用組件及擴展組件的集合)
- Picasso 、 Glide (兩個圖片載入庫)
- The Google I/O 2015 Android App (Google大會官方的App,適合學習各類實現)
- Android開發技術前線 (定期翻譯、發佈國內外Android優質的技術、開源庫、軟體架構設計、測試等文章)
- 進階
- 第三方庫集合 (列舉了常見的各方向第三方庫)
軟體工程
一、基礎工具
IDE、Git、Maven
二、軟體質量
- 代碼整潔
- 碼質量
- 碼重構
- 編寫可讀代碼的藝術 (來自Google工程師,專註於代碼可讀性)
- 代碼整潔之道(使用面向對象+敏捷開發原則編寫清晰可維護的代碼)
- 重構-改善既有代碼的設計 (學習改善已有代碼)
- 重構手冊 (改善代碼的實際操作)
三、設計模式
23種常見設計模式
- 大話設計模式
- Head First設計模式(兩本入門級的設計模式書籍)
- 進階
- 設計模式-可復用面向對象軟體的基礎(設計模式在實際中的應用)
四、敏捷開發
五、專業開發
- 序員職業素養
- 更高效、更實效
六、思考人生
- 黑客與畫家 (矽谷創業之父Paul Craham 的文集,主要介紹黑客及優秀程式員的愛好和動機)
==============================================================================================================================================================
Android學習路線總結,絕對乾貨
title: Android學習路線總結,絕對乾貨
tags: Android學習路線,Android學習資料,怎麼學習android
grammar_cjkRuby: true
---
一、前言
不知不覺自己已經做了幾年開發了,由記得剛出來工作的時候感覺自己能牛逼,現在回想起來感覺好無知。懂的越多的時候你才會發現懂的越少。
如果你的知識是一個圓,當你的圓越大時,圓外面的世界也就越大。
最近看到很多Android新手問Android學習路線,學習方法啊,如何入門啊,所以我從網上找了一些資料,然後以我的工作經驗給大家總結一下,讓你們少走彎路,提取一些工作中經常用到的技術。
二、學習知識彙總
1、Java se基礎
1).Java基本數據類型與表達式,分支迴圈。
2).String和StringBuffer的使用、正則表達式。
3).面向對象的抽象,封裝,繼承,多態,類與對象,對象初始化和回收;構造函數、this關鍵字、方法和方法的參數傳遞過程、static關鍵字、內部類。
4).對象實例化過程、方法的覆蓋、final關鍵字、抽象類、介面、繼承的優點和缺點剖析;對象的多態性:子類和父類之間的轉換、抽象類和介面在多態中的應用、多態帶來的好處。
5).Java異常處理,異常的機制原理。
6).常用的設計模式:Singleton、Template、Strategy模式。
7).JavaAPI介紹:種基本數據類型包裝類,System和Runtime類,Date和DateFomat類等。
8).Java集合介紹:Collection、Set、List、ArrayList、LinkedList、Hashset、Map、HashMap、Iterator等常用集合類API。
9).JavaI/O輸入輸出流:File和FileRandomAccess類,位元組流InputStream和OutputStream,字元流Reader和Writer,以及相應實現類,IO性能分析,位元組和字元的轉化流,包裝流的概念,以及常用包裝類,電腦編碼。
10).Java高級特性:反射和泛型。
11).多線程原理:如何在程式中創建多線程(Thread、Runnable),線程安全問題,線程的同步,線程之間的通訊、死鎖。
2、android UI編程
1)、Android開發環境搭建:Android介紹,Android開發環境搭建,第一個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的實現方法
5.控制項的佈局方法:
線性佈局的使用方法
相對佈局的使用方法
6.多Acitivity管理:
AndroidManifest.xml文件的作用
Intent的使用方法
使用Intent傳遞數據的方法
啟動Activity的方法
IntentFilter的使用方法
Activity Group的使用方法
7、自定義控制項實現方法:
自定義ListView的實現方法
可摺疊ListView的使用方法
自定義Adapter的實現方法
自定義View的實現方法
動態控制項佈局的上實現方法
上拉刷新下拉載入更多
3、android網路編程與數據存儲
1).基於Android平臺的HTTP通訊:
Http協議回顧
使用Get方法向伺服器提交數據的方法
使用POST方法向伺服器提交數據的實現方法
使用Http協議實現多線程下載
使用Http協議實現斷點續傳
2).Android數據存儲技術:
SQLite3資料庫簡介
SQL語句回顧
SQLite3編程介面介紹
SQLite3事務管理
SQLite3游標使用方法
SQLite3性能分析
訪問SDCard的方法
訪問SharedPreferences的方法
參考自:http://www.cnblogs.com/zhuawang/p/3672228.html
三、進階之路(初級->中級->高級)
1、初級工程師
小明之前完全沒接觸過Android開發,是個應屆生,他的待遇是13k,然後小明以校招的身份進入了百度,然後小明需要怎麼學習才能成為初級工程師呢?這個時候,小明對編程基礎、數據結構、C語言都有一定基礎,Java語法什麼的也都掌握的比較好,Android才有java語言,無奈的是小明並不會搞Android。
小明首先需要購買一本Android入門的書籍,為了更快地學習Android,小明業餘時間也都用來一邊看書一邊照著書中的例子敲代碼,結果2周時間小明就把這本書學了一遍。看完這本書後,小明對Android的歷史、結構、代碼規範等都有了一個大概的瞭解,並且,小明已經可以寫出一些簡單的Activity了。這個時候在小明眼裡,Android開發很簡單很好玩,通過在xml中擺放一些按鈕文本框什麼的就可以做一些界面了。
小明開始跟著他的技術導師做需求,一些簡單的小需求小明自然是不在話下了。突然有一天來了一個需求,該需求要求小明在Activity中為一個button加一個動畫效果,小明慌了:“完全沒接觸過,書上也沒有講,怎麼辦呢?”小明冷靜了下,打開了百度搜索,輸入“Android 動畫”,打開前幾個鏈接,小明恍然大悟,照著網上的例子把需求給實現了。後來導師告訴他:“學好Android,官方文檔是必須看的,既全面又權威”。然後小明如獲至寶,花了一年時間把上面的guide和training都看了一遍,並且他還動手抄了幾個小例子。
有一天,小明又需要做一個動畫相關的需求,這可難不倒小明,它熟練地打開了www.baidu.com,輸入“Android 動畫”,突然他楞了一下:”總不能每次寫動畫都要百度一下吧!“,於是他在CSDN開了一個博客,把動畫相關的知識點都寫上去,為的是後面再寫動畫相關的代碼就不用百度去搜了,事實如何呢?後面再寫動畫相關的代碼,小明的確不用再去百度搜了,因為通過寫一篇動畫博客,他把動畫相關的細節都已經記住了,這樣他就可以不用再去參考任何文檔了,後來小明還學會了把一些瑣碎的不方便放在博客上的東西寫到了印象筆記上面,什麼時候忘了10秒鐘以內都可以快速找回來,而不是花10分鐘去再次搜索一遍。
這裡總結一下,Android入門的時候,需要有一本入門書,好好學習書中的內容,同時花一年時間把Android官方文檔中的training和guide看一遍,同時通過寫博客和記筆記的方式來做總結,建議讓自己的每篇博客都有價值些。通過一年時間的學習,相信每個人都可以達到中級工程師的水平。
技術要求:
- 基本知識點
比如四大組件如何使用、如何創建Service、如何進行佈局、簡單的自定義View、動畫等常見技術 - 書籍推薦
《第一行代碼 Android》、《瘋狂Android》
2、中級工程師
小明經過一年的努力學習終於成為Android中級工程師了,月薪變成了17k。到了中級工程師,已經可以在公司里乾很多體力活了,但是一些很重要的任務小明還不能一個人承擔起來,這個時候小明需要學習的內容就很多了,如下所示:
- AIDL:熟悉AIDL,理解其工作原理,懂transact和onTransact的區別;
- Binder:從Java層大概理解Binder的工作原理,懂Parcel對象的使用;
- 多進程:熟練掌握多進程的運行機制,懂Messenger、Socket等;
- 事件分發:彈性滑動、滑動衝突等;
- 玩轉View:View的繪製原理、各種自定義View;
- 動畫系列:熟悉View動畫和屬性動畫的不同點,懂屬性動畫的工作原理;
- 懂性能優化、熟悉mat等工具
- 懂點常見的設計模式
學習方法
閱讀進階書籍,閱讀Android源碼,閱讀官方文檔並嘗試自己寫相關的技術文章,需要有一定技術深度和自我思考。在這個階段的學習過程中,有2個點是比較困擾大家的,一個是閱讀源碼,另一個是自定義View以及滑動衝突。
如何閱讀源碼呢?這是個頭疼的問題,但是源碼必須要讀。閱讀源碼的時候不要深入代碼細節不可自拔,要關註代碼的流程並儘量挖掘出對應用層開發有用的結論。另外仔細閱讀源碼中對一個類或者方法的註釋,在看不懂源碼時,源碼中的註釋可以幫你更好地瞭解源碼中的工作原理,這個過程雖然艱苦,但是別無他法。
如何玩轉自定義View呢?我的建議是不要通過學習自定義view而學習自定義view。為什麼這麼說呢?因為自定義view的種類太多了,各式各樣的絢麗的自定義效果,如何學的玩呢!我們要透過現象看本質,更多地去關註自定義view所需的知識點,這裡做如下總結:
- 搞懂view的滑動原理
- 搞懂如何實現彈性滑動
- 搞懂view的滑動衝突
- 搞懂view的measure、layout和draw
- 然後再學習幾個已有的自定義view的例子
- 最後就可以搞定自定義view了,所謂萬變不離其宗
大概再需要1-2年時間,即可達到高級工程師的技術水平。我個人認為通過《Android開發藝術探索》和《Android群英傳》可以縮短這個過程為0.5-1年。註意,達到高級工程師的技術水平不代表就可以立刻成為高級工程師(受機遇、是否跳槽的影響),但是技術達到了,成為高級工程師只是很簡單的事。
技術要求:
- 稍微深入的知識點
AIDL、Messenger、Binder、多進程、動畫、滑動衝突、自定義View、消息隊列等 - 書籍推薦
《Android開發藝術探索》、《Android群英傳》
3、高級工程師
小明成為了夢寐以求的高級工程師,月薪達到了20k,還拿到了一丟丟股票。這個時候小明的Android水平已經不錯了,但是小明的目標是資深工程師,小明聽說資深工程師月薪可以達到30k+。
為了成為Android資深工程師,需要學習的東西就更多了,並且有些並不是那麼具體了,如下所示:
- 繼續加深理解”稍微深入的知識點“中所定義的內容
- 瞭解系統核心機制:
- 瞭解SystemServer的啟動過程
- 瞭解主線程的消息迴圈模型
- 瞭解AMS和PMS的工作原理
- 能夠回答問題”一個應用存在多少個Window?“
- 瞭解四大組件的大概工作流程
- …
- 基本知識點的細節
- Activity的啟動模式以及異常情況下不同Activity的表現
- Service的onBind和onReBind的關聯
- onServiceDisconnected(ComponentName className)和binderDied()的區別
- AsyncTask在不同版本上的表現細節
- 線程池的細節和參數配置
- …
- 熟悉設計模式,有架構意識學習方法
這個時候已經沒有太具體的學習方法了,無非就是看書、看源碼和做項目,平時多種總結,儘量將知識融會貫通從而形成一種體系化的感覺。同時這個階段對架構是有一定要求的,架構是抽象的,但是設計模式是具體的,所以一定要加強下設計模式的學習。關於設計模式的學習,最近一本新書推薦給大家《Android 源碼設計模式解析與實戰》,既可以學習設計模式,又可能體會到Android源碼中的設計思想,我最近也在閱讀此書。
技術要求:
- 稍微深入的知識點
- 系統核心機制
- 基本知識點的細節
- 設計模式和架構
- 書籍推薦
《Android開發藝術探索》、《Android 源碼設計模式解析與實戰》、《Android內核剖析》
參考自:http://blog.csdn.net/singwhatiwanna/article/details/49560409
四、學習視頻跟書籍
當你有了學習線路,學習哪些內容,也知道以後的路怎麼走了,理論看多了總要實踐的,我這裡給你們整理了大概80G的學習視頻跟書籍,趕快點我點我點我。。。下載。。