如何學習 Android 應用開發?

本人小白一個,想請教一下學習安卓軟體開發除了Java之外還需要額外再學習一下其他的什麼技術?有什麼好的入門書籍可以推薦一下?或者是網站也可以,謝謝!


————2014-03-21-更新——————
先定義:此針對自學開發,0基礎的同學,包括還在培養興趣階段.

看見有人說,小白去看官方API,我覺得無異於對於一個想學數學的孩子,連1+1都不會的情況下,叫他去死記硬背乘法口訣表.

所以我認為,先從培養興趣開始,即學即玩,非目的導向才能更好的入門.

此次更新,主要是發現了更優質的東西.

大家可以再http://www.fenby.com(粉筆網)免費學習安卓入門.

學習課程步驟:
1. C基礎語言(0基礎入門,已學其他語言就不用學了)
2.Java基礎語言
3.Android實戰-魔法水晶球(初級)
Ps:本人非粉筆網利益相關人員,僅作為優質資源,做口碑,自己去感受吧!然後點贊(^_^)

附錄:
————2014-01-11-更新——————
我自己通過在網路上學習,Mars老師的和老羅(不是那個鎚子老羅)老師的視頻教程自學的,目前我找到最好的這兩個,小白零壓力自學視頻,超棒的!
可以在http://APKBUS.COM(視頻教程)或http://MARSCHEN.COM,或百度都可以找到。
如果覺得不錯的話,請點贊!

谷歌的安卓官方:Develop | Android Developers


之前回答過這種問題,我覺得上面高票的人說的都挺好,但是問題是可能你看不進去,對於我現在有一定的開發經驗依然沒有辦法坐下來什麼都不敢,光看API guides,所以建議你不要去看~~~~那怎麼學呢?把我之前的答案粘過來,希望對你有幫助。

-------------------------------分割線--------------------------------------

原地址:Android 和 iOS 開發的全過程以及相關的 Java 知識是怎樣的?

-------------------------------分割線--------------------------------------

首先如果你買一本安卓開發的書籍,上來先教你配環境,然後就是安卓四大組件,activity生命周期,service生命周期。這些東西在我第一項目上線的時候,我依然不是很清楚,只能有一些模糊的概念。所以以我的經驗來看(高手勿噴),上來看這些東西對與初學者有時候意義並不大,就和本科學了各種演算法的只是,當時完全雲里霧裡,只有工作時真的需要做排序了,才會去查閱,那時候才真正學會了。

所以如果你想學安卓開發的話,最好先有一個目標,我想做個什麼東西。什麼都可以,憑你自己的興趣,比如說做個計算器、簡訊軟體、撥號器之類的小東西。

我們就以簡訊為例,如果你想做一個簡訊軟體首先需要會什麼?

1. 當然是顯示簡訊了!那麼如何顯示東西呢?這就要用到activity了,網上找一個hello world的demo,照著寫,在屏幕上顯示你想顯示的文字總能弄出來了吧。

2. 然後研究一下布局,可以學到安卓的各種layout布局,想在任意位置放文字也可以搞定了吧。

3. 那麼接下來,怎麼讀簡訊,網上查「android讀取簡訊」這類的關鍵字,一定能找到結果吧。(自主學習能力很重要),然後你會發現簡訊放在系統的一個資料庫里。

4. 那好研究如何讀取資料庫內容,相應的你又可以查到到android如何連接資料庫的知識。

5. 查詢資料庫必然要用到sql語句,這也很容易查到。

6. 能夠讀取出手機里的簡訊了,先展示到你之前學會的activity裡面吧,這時候你發現你已經能夠展示簡訊了。可是當然還是有問題,如何一條一條展示呢?

7. 很容易想到用列表嘛,那麼就繼續學習android列表怎麼實現,很容易可以發現是listview,下載一個demo,學會listview,這時候你完全可以吧所有簡訊都顯示出來了。

8. 考慮日常簡訊軟體都是怎麼做的?以聯繫人分類,然後點擊進入是簡訊。那麼找出聯繫人,這期間又可以學習sql條件查找。把每個人最後一條簡訊,按時間順序排列好,在列表裡面展示。展示的時候還可以顯示聯繫人頭像號碼之類的,這樣又可以在網上查詢自定義listview怎麼實現。這下簡訊的第一界面就有點雛形了。

10. 接下來怎麼點擊看和該人的聊天記錄。網上查詢學習點擊事件。

11. 點擊響應了之後要跳轉界面,學習activity之間跳轉。

12. 跳轉到的界面就是與一個特定人的聊天信息內容,那麼這個人的信息就要傳遞到新的界面裡面,又可以學習到activity之間傳遞數據。

13. 新界面拿到聯繫人信息,就可以到資料庫裡面條件查詢,把該人的聊天記錄全部讀取出來,這裡包括接受和發送的,按照時間順序排列好,然後放到listview裡面。用前面學到的自定義listview把接受簡訊靠左,發送簡訊靠右,並添加氣泡邊框。這樣查看簡訊的功能基本上完成了。

14. 在查看簡訊界面下加上輸入框,網上查詢如何實現,又學習了editText相關內容。

15. 本地的都搞的差不多了,然後研究如何發簡訊,學習相關的api,這樣你就基本上可以發送簡訊了。

16. 發送簡訊之後需要在你的界面上吧剛才發送的顯示出來,這樣又可以學會如何動態更新listvew。

17. 然後再考慮接受簡訊。又可以學會簡訊的監聽,再通過剛學會的動態更新listview功能,又可以實現來簡訊的實時顯示。

18. 來簡訊的時候又需要考慮通知欄的顯示,網上查詢後又學習到notification的相關知識。如果想做的好看,還可以繼續深入學習自定義布局notification。

至此一個安卓收發簡訊的軟體基本上差不多了。其中我說的每個點對於新手來說可能都需要一兩天來完成,但是如果你有心學,兩個月絕對搞的定。完成了這個項目,相信你對安卓也有所了解了,重要的是學會了如何自主學習。下次想做個電話本、計算器、備忘錄、偷拍神器都按照這個流程來,當然都不是問題了(好像有什麼東西亂入了。。。)。這個時候你再去看安卓四大組件,activity的生命周期才看得懂,也才有意義能夠理解。

以上基本上就是我個人學安卓的經驗,現在做安卓三年多,當時畢業去公司,公司裡面都沒有做安卓的,就我自己邊工作邊學,至今連公司帶個人也在市場上發布了四五款產品了。所以這東西並不難,只要你有自主學習的能力。


首先來說下我的背景以及這大半年來我的自學情況吧:

1.本科通信工程,非計算機科班,大一學過C語言基礎,後來因為專業課程需要,學了一點彙編以及Matlab。這部分經歷我認為對於我後來的編程學習只有基礎語法理解方面的幫助。

2.去年11月中開始系統學習編程語言,由於想做Android開發,所以入門語言選擇了Java。

3.11月中到12月中,邊看傳智播客的一套視頻邊敲裡面的練習。

4.12月中到1月中,20天左右時間看了《編程之美》,並用Java實現書里百分之五十左右的演算法題,剩下的題由於難度太大 或者比較複雜,當時沒有深入研究下去。

5.1月中到2月中,選擇了網易公開課裡面的《斯坦福大學公開課—編程方法學》這套視頻,同樣是邊看視頻,邊完成裡面的Assignment。在這裡感謝帥帥同學@王帥 推薦這套視頻。裡面的Assignment題都是經典題目,對於初學者來說非常適合。

6.2月底開始學習Android語言,花了1個月左右的時間,照著《第一行代碼》裡面的例子,敲代碼進行實現。

--------------------------------------------

由於在學習編程之前就有兩個小產品的構思,所以也沒有想自己基礎是否打紮實了,先試著去實現,看看能不能做出個可用的產品來。截止到目前為止,兩個小產品都已經開發完畢了,其中一個「蘋果序列號查詢」已經在小米、豌豆莢、Google Play、魅族Flyme等應用市場上線並且有了一版更新(4月14日上線,到目前為止下載量已經超過1000),它是下面這個樣子的:

關於開發「蘋果序列號查詢」具體實現邏輯介紹,請移步(最近好像需要翻牆):JeffinBao - Android開發,讀書,見人,行事

另一個是我的個人簡歷應用,仿照地圖搜索的樣式做的,它是下面這個樣子的:

關於開發「JeffinBaoCV」這個個人簡歷應用的介紹,也請移步:JeffinBao - Android開發,讀書,見人,行事

-----------------------------------------

很多知友在其他答案中已經列了很多資料了,我自己也是通過他們介紹的資料的其中一部分來進行學習的,所以資料方面,就不多說了,想說兩點看似無關但我認為又比較重要的點:

1.有自己很強烈想要實現出來的想法

我在學習編程之前,上面兩個應用的初步構想就已經在我腦中了,所以這半年多特別是今年2月底開始學習Android以來,我都是按照怎麼去實現我腦中的想法去學習Android的。沒有對於想要實現的東西有著強烈的願望,我想我是很難堅持下來的。最終把自己的想法實現後,這種開心和一直進步的感覺,也是很鼓舞人心的。

2.「軟實力」的加強

Android應用呈現給用戶最多的是界面,所以界面是否美觀是用戶會不會選擇去用的一個重要因素。對於工程師來說,如何提高自己的審美,進而把自己對美的理解融入到應用當中是很重要的。這不是說工程師一定要具備專業設計師的能力,這不太現實。但是如何保持界面整潔,在字體、顏色、排版上如何規範與統一,都是工程師需要在平時去提高的。

---------------------------------------------

寫了這麼多,不知道有沒有幫助到題主,下面我也想安利下自己的應用以及在求職中的自己:

1.小米、豌豆莢、魅族Flyme、Google Play、鎚子應用商店上搜索「蘋果序列號查詢」,有任何問題,歡迎反饋給我丫。

2.第二個應用做的是個人簡歷—JeffinBaoCV,沒有上線,感興趣的朋友可以通過下面鏈接下載(由於身邊手機不多,可能在小屏幕低版本系統的手機上會有適配問題,如果有,也歡迎反饋給我丫,多謝):百度雲 請輸入提取密碼.(提取碼:9x6d)

3.下面是跟我有關一些主頁的鏈接:

個人主頁:JeffinBao - Android開發,讀書,見人,行事

主要用於寫技術文章和一些自己認為寫得比較好的文章,剛開始用jekyll引擎不久,所以內容比較少。

GitHub主頁:JeffinBao (Jeffin.Bao) · GitHub

主要用於託管自己的代碼,尋找一些好的開源項目來學習使用。

如果你對我感興趣,請私信我或者通過下面郵箱聯繫我吧,謝謝!

郵箱:bjf13609846991@gmail.com


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 (二維碼自動識別)


個人覺得,gitHub上有很多很炫很好用的控制項和模塊,這些對於你的app潤色很有幫助,遇到很棘手的問題時,stackover flow 上面的解答往往都非常到位,想要學習android基礎,那麼就去看官方文檔吧,那些上面21天速成,瘋狂筆記等等的書籍都不是很好。

系統學習安卓,還是最好在企業裡面跟項目比較好~遇到的問題越來越多,解決的問題越來越多,自己學到的就會越來越多。


真的要學的話,強烈推薦官方:Develop | Android Developers 把API Guides看完之後,再看Training。

我翻過一些android的書籍,說實在都不如官方來得好。官方文檔的內容講得相當嚴謹並且全面,不像有些書,話還沒說明白直接就給你看代碼了,這樣學起來肯定效率不高。同時我覺得官方挺好的地方就是,有很多擴展內容,能讓你只知其然並且知其所以然。

但是使用全英的教程作為入門,對於英語不好的朋友來說可能會相當苦逼。閱讀API Guides的時候左邊有導航,其實那些英文單詞,例如Activity、service等等,很多都是安卓的組件,對於這些新概念,因此我建議你可以先百度下那些組件是個什麼東西,對它先有個大概的認識,比如Activity你百度之後就知道它大概是個容器,還有生命周期等等,這個時候再返回去啃下整篇的官方Activity文檔。在讀的過程中,一定要做筆記,最好是開個博客,看完一段文字如果覺得有知識點就自己做個小小的總結寫在博客里。因為你總有需要回頭溫習知識的時候,等到溫習的時候再回去看這些英文文檔,效率會較低,如果已經做過中文筆記,很快就能領略到要點。

其實閱讀英文有一個很好的地方我最近才發現:因為是英文,所以你要理解的話必須一個單詞一個單詞的看,認真地理解。這樣的結果就是,看過的東西印象特別深刻。如果是中文的,可能會看得很快但是細節沒仔細學好。

閱讀完API Guides後,看Training就完全沒壓力了,Training更像是一種對之前所有知識的總結以及實踐。

其實總得要來說,我覺得是,用中文的資料進行大概的了解,然後學習還是要靠官方文檔。

以官方為主的原因是,現在又很多書用的是較老的API,以至於你在eclipse敲代碼的時候它會畫個橫線告訴你不建議再使用這個東西了。其實安卓真的還算年輕,很多東西都是在3.0之後才開始正式規範起來的。但是它發展又特別快,等到別人讀完官方內容再寫本書出來給你看,那本書可能又已經過時了。還有一點,是之前我同學去面試3G門戶二面時被問到的問題:「在使用適配器的時候,getView()該注意些什麼?」。因為之前對於適配器的學習都是在百度之中學習的,網上的教程只是很粗糙地實現了功能,因此我對於這個問題沒有答案。直到我看完官方的指南之後,我才發現原來這裡大有學問,涉及到線程、IO等問題,從這之後我就更加確信,官方文檔才是唯一標準。

最後提一下,你從百度搜到的一些實現某功能的代碼可能會有問題,因為這些代碼雖然功能是實現了,但是卻不夠規範。其實當你看完Training,很多功能的實現你都能自己寫出來了,或者從官方copy:)。

————————————分割線————————————

其實這裡我還漏一點實踐的事。我建議先看API Guides的同時可以自己一邊進行小功能的實現,但是先不要做APP,看完API
Guides再做一個完整的APP。我一開始也是只學了點毛皮然後就開始做APP的。其實做一個普通的APP不難,你要實現的內容大部分人都已經做過了,
因此很多什麼都不懂的新手遇到問題時,不是上官網查找相關API內容而是選擇直接百度複製代碼,這種做法在我現在看來十分的不妥,而且這樣子做出來的
APP不能說是自己做的,只能說是自己組成的。沒有理論基礎的實踐,學習效率很低。


我試過以下幾個教程:

1. 官方教程。

開始幾章還可以,但是後面有點沒頭緒。示範代碼考慮情況太多,過於複雜,不利於初學者掌握sdk。

2. Lynda

Building a Note-Taking APP for Android

還不錯,講得比較清楚,看完了。有點像官方教程note-taking app的視頻版。壞處是不全面,學完了還是很多東西不知道。

Android SDK Training

比上一個教程要全面,但是講的還是比較少,不夠深入。我順帶看了一下。

3. Coursera &<推薦&>

Programming Mobile Applications for Android Handheld Systems

這個是安卓開發系列的地一個課程,雖然和其他Coursera的老師比,這個老師講的不是特別好。但是示範代碼超級豐富,而且基本都講了一遍,代碼的複雜度也控制得比較好。還配有隨堂的練習題和編程作業。SDK常用的方面都涉及到了。這個是目前看到最好的課程了。

實戰項目

我把上面這個課程學了一編,把編程作業寫完了,然後把示範代碼中感覺需要的重新學習調試一遍。接下來開始藉助官方API文檔,Stackoverflow,以及一些技術博客的專門教程來開發項目鍛煉實戰技能。其間有很多不太清楚的地方,可以在這門課的示範代碼中找到解答。

另外,我推薦使用Android Studio,API兼容性的處理上會比Eclipse方便很多。開始用的Eclipse後來逐步轉到AS了。


要學習開發,最好不要光看教程。給自己定一個目標,要開發一個app(模仿某個小app也可以),然後開發過程中遇到問題就努力去學習去克服,所有知識才會串起來。等app完成了,自然就入門了。


GitHub - ZQiang94/Andriod-collect-blogs: 收集Android相關blog


有java 基礎 還是去看google上的文檔比較好,,書上講的都沒有上面的全。


學習Android最好的資料就是官方的API文檔。Android Developers

不要找借口說英文不好!英文不好想在IT行業混出個模樣很難。所以不好就好好寫!

然後Android入門後就做項目吧!

做一個音樂播放器,做一個新浪微博客戶端等等!以項目驅動的方式學習IT技術,自認為是一種比較好的方式。做項目的時候對自己要求高一些,你的收穫也會多一些!

祝好!


學習任何知識,都應該有一個從無到有,從少到多,從小到大的過程。我聽到一個朋友說過:做工程的人的學習方式都是自頂向下式的結構,也就是先去研究問題,遇到不明白的問題再去學習相關知識,這樣做進步很快,但是遇到真正的難題便束手無策了。而做科研的人崇尚的是自底向上的學習方式,這樣做的話使得基礎紮實能夠穩步前進,但是耗時較多。

雖然我比較崇尚輸出是最好的學習方式,但是每個人在最開始學習一門知識的最初階段,都需要學習最基本的知識,也就是要有常識。比如你得知道java的基本語法知識,java的面向對象的思想還有各種細而繁瑣的知識點。當理解了這些知識後,還並不能驕傲,還需要大量的練習來鞏固這些知識。然後Android學習安卓也是這個套路。

雖然我學習Android的時間並不是很長,但是我可以說下自己學習的過程。

最開始必然是java基礎,因為之前學過C、Python和C++,所以對編程語言和思想也並不陌生。學習java我看的是mars老師的視頻---java4android,已經不是一兩個人在說這個視頻好了,在我看到的一些人的回答中,基本上都推崇這部視頻,所以它必然是有它獨到之處的,想學java的人可以把這套視頻好好看個幾遍,並輔以練習。相信學完之後對基本知識也很熟悉了(雖然還不夠==)。

學完java基礎後,再去學習Android吧,我推薦的是郭霖大神的《第一行代碼》,這個我把全書都看完了,真心好,跟上面的java視頻一樣都很經典,我比較喜歡的是每一個知識點後的那些小故事,還記得每學完一個知識點,都挺期待下一個故事是什麼情節。對於Android基本知識,這本書介紹得還挺好,確實適合新手學習。現在有時間我還會翻翻這本書,雖然它對我的作用不像之前那麼明顯了,但是作為啟蒙書籍我還是挺感激它的!自此,自底向上的學習方式便進行得差不多了。

基本上學完以上的基礎後,可以獨立開發一些簡單的應用了,通過寫一些功能簡單的app來全面複習和鞏固自己之前的知識,我覺得輸出是最好的學習方式,通過開發軟體能很好地檢測自己的技能點升到多少級了。遇到問題要Google一下(而不是百度一下),此刻便進入到自頂而下的學習方式中了,以後的學習方式恐怕都會是這樣的了(當然如果重新學習新的知識就另說了)。

ps:之前看到有人說java的特點就是庫多庫多庫多,在後面的學習中肯定要多去github上找找一些開源項目,多向前輩們學習。


安卓開發學習書籍

書的話建議買 精通Android2 ,或者 Android2高級編程 這兩本書,講解的細緻,但是一定要結合sdk來看。國內的不要買。。。。(切身體會,千萬別買)看完之後就可以自己動手做做項目了。

對於java基礎,我現在的感覺是 如果要深入學習android平台,java基礎一定要好(裡邊包括各種java類庫的用法,本地代碼jni什麼的)。但如果平時隨便做做應用的話,會面向對象編程就完全可以了。

安卓開發學習學習網站

DevStore(DevStore_移動互聯網企業運營解決方案整合平台)

csdn中文IT社區

開源中國

論壇:

apkbus:Android開發論壇

eoe:Android開發_Android論壇

51CTO:51CTO技術論壇

安卓航班

自學的話平時就多看一些官方文檔,幫助文檔也是一個很好的參考資料,多看看,平時多敲代碼,多看住喲啊哈斯看規範,看完之後去敲代碼主要是在實踐過程中發現錯誤,多做項目自然多遇見問題,遇見問題解決問題,下次自然就知道怎麼解決,在實踐中發現真理。

當然可以的話有一個老師還是很好的,但是要記得要是的作用只是引導,師傅領進門修行在個人。


你百度下AndroidDevTools

登錄這個網站 就知道該怎麼做了

開發工具 學習指南什麼的都有


推薦你去安卓培訓班報名學習,培訓完畢,找一份安卓工作實操,練習不如實戰,在實際問題中學習,手頭常備一本李剛巜瘋狂安卓》,時間久了,就會了。當你面試下一家單位的時候,更多是問你項目實際經驗,而不是demo練習


瘋狂Android講義,這是我看的第一本Android的書,還看過一些什麼應用開發之類的,裡面小實例特別多的那種。最好可以邊做邊看,要真正動手去寫一些小demo才會有真正的提高。

其實生活中有很多的小需求,比如小手電筒或者小電池之類的小玩意,甚至可以寫寫自己喜歡的網站的客戶端,這些都可以自己嘗試實現看看,遇到了問題再google。


我只是來看看答案的....干過as3和C++,時間都很短,現在想轉安卓,還不知道是怎麼做的


本人一開始進入開發,做android開發,是直接參加學校的軟體開發比賽直接學的,那樣子壓迫你每種資料都需要去找。學的東西比較全面


android開始首先先會java開發和C的基礎,因為越深入越會學會往C方面走。前期可以根據一些案例,github csdn上的一些案例學習,不過最主要的還是官網,這是最全面的,所有介面文檔都比較全。


知其然,隨後知其所以然,不能像培訓機構那樣只教會你用,而不知道為什麼這樣用。首先要熟悉安卓的基本框架結構,四大組件,通信原理,消息機制。雖然網上開源控制項很多,也有快速開發框架,但是,事無巨細,還是要先從基礎學習,這樣才能建起高樓。


推薦閱讀:

為什麼知乎2.1.1在基於Android4.4.4的Flyme4.1系統下不支持透明狀態欄?
推薦下安卓平板的好應用?
安卓中的Binder架構是什麼?為什麼要提供Binder?Service與Binder又有怎樣的聯繫?
如何在android studio中查看當前使用的gradle版本和gradle插件版本?
安卓後台程序為什麼不能徹底關閉?

TAG:Android應用 | Android開發 | Android手機 | Android |