標籤:

怎樣從零開始學習安卓軟體開發?


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的方法

參考自:Android學習路線

三、進階之路(初級-&>中級-&>高級)1、初級工程師

小明之前完全沒接觸過Android開發,是個應屆生,他的待遇是13k,然後小明以校招的身份進入了百度,然後小明需要怎麼學習才能成為初級工程師呢?這個時候,小明對編程基礎、數據結構、C語言都有一定基礎,Java語法什麼的也都掌握的比較好,Android才有java語言,無奈的是小明並不會搞Android。

小明首先需要購買一本Android入門的書籍,為了更快地學習Android,小明業餘時間也都用來一邊看書一邊照著書中的例子敲代碼,結果2周時間小明就把這本書學了一遍。看完這本書後,小明對Android的歷史、結構、代碼規範等都有了一個大概的了解,並且,小明已經可以寫出一些簡單的Activity了。這個時候在小明眼裡,Android開發很簡單很好玩,通過在xml中擺放一些按鈕文本框什麼的就可以做一些界面了。

小明開始跟著他的技術導師做需求,一些簡單的小需求小明自然是不在話下了。突然有一天來了一個需求,該需求要求小明在Activity中為一個button加一個動畫效果,小明慌了:「完全沒接觸過,書上也沒有講,怎麼辦呢?」小明冷靜了下,打開了百度搜索,輸入「Android 動畫」,打開前幾個鏈接,小明恍然大悟,照著網上的例子把需求給實現了。後來導師告訴他:「學好Android,官方文檔是必須看的,既全面又權威」。然後小明如獲至寶,花了一年時間把上面的guide和training都看了一遍,並且他還動手抄了幾個小例子。

有一天,小明又需要做一個動畫相關的需求,這可難不倒小明,它熟練地打開了百度一下,你就知道,輸入「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資深工程師,需要學習的東西就更多了,並且有些並不是那麼具體了,如下所示:

  • 繼續加深理解」稍微深入的知識點「中所定義的內容
  • 了解系統核心機制:
  1. 了解SystemServer的啟動過程
  2. 了解主線程的消息循環模型
  3. 了解AMS和PMS的工作原理
  4. 能夠回答問題」一個應用存在多少個Window?「
  5. 了解四大組件的大概工作流程
  • 基本知識點的細節
  1. Activity的啟動模式以及異常情況下不同Activity的表現
  2. Service的onBind和onReBind的關聯
  3. onServiceDisconnected(ComponentName className)和binderDied()的區別
  4. AsyncTask在不同版本上的表現細節
  5. 線程池的細節和參數配置
  • 熟悉設計模式,有架構意識學習方法

這個時候已經沒有太具體的學習方法了,無非就是看書、看源碼和做項目,平時多種總結,盡量將知識融會貫通從而形成一種體系化的感覺。同時這個階段對架構是有一定要求的,架構是抽象的,但是設計模式是具體的,所以一定要加強下設計模式的學習。關於設計模式的學習,最近一本新書推薦給大家《Android 源碼設計模式解析與實戰》,既可以學習設計模式,又可能體會到Android源碼中的設計思想,我最近也在閱讀此書。

技術要求:

  • 稍微深入的知識點
  • 系統核心機制
  • 基本知識點的細節
  • 設計模式和架構
  • 書籍推薦

    《Android開發藝術探索》、《Android 源碼設計模式解析與實戰》、《Android內核剖析》

參考自:Android學習路線指南

四、學習視頻跟書籍

當你有了學習線路,學習哪些內容,也知道以後的路怎麼走了,理論看多了總要實踐的,我這裡給你們整理了大概80G的學習視頻跟書籍,趕快點我點我點我。。。下載。。

如果你想第一時間看我們的後期文章,掃碼關注公眾號,每周不定期推送Android開發實戰教程文章,你還等什麼,趕快關注吧,學好技術,出任ceo,贏取白富美。。。。

Android開發666 - 安卓開發技術分享
掃描二維碼加關注

http://weixin.qq.com/r/t0T37wnESlQ1rU2M9xGl (二維碼自動識別)


第一、程序相關

如果想成為android應用開發者,最基本的是需要懂得用Java語言和XML知識。掌握了這兩種語言後再裝個Eclipse和Android SDK, 就可以做開發了。當然,還得學Android特有的API的用法。Java和XML只是編程基礎。

第二、用戶體驗

好的應用都會有好的用戶體驗,所以在進行app開發之前我們就要要拿出方案,想想用戶在什麼情況下使用我的應用,用戶的使用態度是什麼,其中應用中哪些是核心功能,哪些是輔助功能,哪些是邊緣功能,最佳操作路徑怎麼建立,如何將功能分布到頁面上,同時我的應用界面應該是什麼風格和樣式,最終要畫出來UI方案。

第三、產品設計

確定好了UI方案,那麼我的app應用的市場定位、核心價值、產品功能、競爭分析、商業模式和營銷推廣。其中為用戶解決什麼樣的問題(核心價值),怎麼解決(產品功能),有沒有替代方案(競爭分析),為APP開發者帶來什麼好處(商業模式),怎麼讓用戶接觸並安裝使用這款我的APP(營銷推廣)這些問題都需要考慮到。

第四、不懂技術也能開發

如果上面三點你都不能夠做到,那麼你也不用灰心,現在已經有了應用之星免費的移動應用開發平台,關鍵是你不懂技術也能在這個平台開發。

希望我的回答能幫助到你。


(非高人)

第一步:把環境搭建起來

第二步:學一門語言(推薦第一個)

  • 通過 SDK 使用 Java 作為開發語言

  • 通過 NDK 使用 C/C++ 作為開發語言

  • 使用谷歌推出的適合初學者編程使用的 Simple 語言

  • 通過 SL4A 來使用其他各種腳本語言進行編程(如:Python、php等)

  • 通過 MonoDroid 使用 C# 語言

  • JavaScript,ajax,HTML5,jquery、sencha、dojo、mobl、PhoneGap 等都已經支持Android開發

第三步:實戰

  • 書籍 http://www.zhihu.com/question/19579609
  • 網站 http://www.zhihu.com/question/19611325

……


長時間的宅 宅到家裡熟悉 三層 構架 學習UI 框架 需要源碼或者新手求帶路 可以找我 老司機免費帶新人。

喜結交朋友。堅持堅持再堅持 努力努力再努力 你可以的。百度來的教程亂七八糟的就別浪費時間

了吧。畢竟天下沒有免費的午餐。

如果你有創業意向 可以找我。做出來的產品 核心價值 定位 功能 。都依附於解決社會問題的喲!


我覺得如果有開發經驗的話,完全可以通過自學掌握一些必要的安卓開發技術,但是,自學也僅僅是入門而已,真正的提高技術還是要靠實戰,可以找一家要求不是很高的公司慢慢的練習實戰技能,一步步的提高自己的實際開發經驗。但是,如果是零基礎的話,最好不要自學,因為很多基礎性的東西沒有專人指導很難理解的,一旦基礎掌握不好,就很難深入的學習了,所以零基礎的人最好還是選擇參加培訓,但是,現在的培訓機構非常多,每家機構都宣稱自己是最好的,那到底哪家是最好的呢?那就要靠自己好好的認真的考察一下了,千萬不要被別人 忽悠了,像我一樣,被達內忽悠的掉到坑裡差點淹死。所以,不建議選擇達內。


  如何學習安卓軟體開發,已經成為很多安卓自學者的問題。市場需求大,但是真正能夠達到一定技術水平還不多。安卓自學時間長,進度慢,一個難的技術點需要花費幾個小時的時間!安卓軟體開發,參加一些專業的培訓還是很有必要的。受傳統教育弊端影響,就算是計算機畢業生學習的專業知識不能跟社會完全接軌,因此適當的培訓可以使同學們快速進軍職場。

  有很多培訓機構是來者不拒,不管你是什麼專業,不管你是什麼學歷,只要你有興趣想學,他們就使盡各種手段忽悠你報班,目的則為的是擴充生源,獲得更多的收入。而實際上,有不少參加完安卓培訓的同學們事後發現自己並不適合學習安卓,因此花了錢,而並沒有選擇對的人生,豈不耽誤了自己。所以,不要輕信某些培訓機構的忽悠,首先要考慮一下自己是否適合幹這一行,一定要做深遠的打算。每個機構都試聽一下,跟學員講師做個交流,學習環境很重要,是堅持學下來的關鍵。

這裡有個很不錯的論壇。上面新手很多,挺適合剛學習安卓的人的。而且上面的大神也會定期分享乾貨給大家。互動社區http://bbs.hudongwx.com

http://weixin.qq.com/r/QUQmPnzEvCHDrThd9xFT (二維碼自動識別)

也可以掃描二維碼加入這個公眾號。定期安卓福利分享


需要堅持


Android開發學習方法:

階段1:找一套完整的教程資料(codingke上的那套視頻教程挺不錯的)系統的學習和了解Android開發,構造一個堅實的基礎。

階段2:對Android開發有了一定的掌握後,讀一些書籍作為對自己掌握技能的補充和提高(Android開發完全講義》等)。

階段3:看一些大牛們總結性、專業性的博客文章,看別人對編程獨到和見解和個人編程風格,取眾家之所長為己用。

學習資料:

《Android基礎教程》

由淺入深,循序漸進地討論Android開發。

《Android應用開發揭秘》

基礎部分充實豐富,高級部分深入飽含實例,從本質上提高開發者對Android的理解和編程水平。

《Android/Ophone完全講義》

書中內容理論性和實戰性兼備,在Android開發的實戰方面很有代表性。

《Android系統原理及開發要點詳解》

以知識性內容為綱,重點關注開發的要點,以清晰的思路介紹了整個Android的系統原理和開發方法。

《Google
Android SDK開發範例大全》

以範例集的方式來講述android的知識點,詳細介紹了開發android的人機交互界面、android常用的開發控制項、使用android手機收發簡訊等通信服務、開發android手機的自動服務功能和娛樂多媒體功能。


要堅持,先看安卓基礎教學視頻,再研究源碼,多看多謝

這裡推薦一個,有比較好的教學視頻和源碼或demo的網址

http://blog.sina.com.cn/u/5595511186


推薦閱讀:

如何防止 Android App 被反編譯後介面泄露?
Smartisan OS 全局禁止第三方桌面小工具(Widgets),會為其帶來哪些好的和壞的影響?
有什麼apk分析工具?
activity的startActivity和context的startActivity有什麼不同嗎?
如何評價 Google 的新設計風格 Quantum Paper?

TAG:Android開發 |