自學Android開發?
本人對於開發手機軟體比較有興趣,目前在自學java,請問如果想搞android開發的話,java的學習要不要很深入?推薦一下書籍就更好了,謝謝大神!
看這個回答. 希望能幫助你 零基礎如何自學Android開發? - Gracker 的回答
可以看看我的回答:零基礎 Android 開發可能嗎? - 龐宋妍的回答
非常適合超初級的人,如果有興趣的話,還可以加入我們的技術學習小組舉一個我自己的例子。先上幾張圖,是我這學期剛剛做的一個課設,挺水的,裡面的內容也都是從愛壁紙上搞下來的。。不過練手而已~接觸安卓2個月的結果
望輕噴
之前一直在前端這個方向努力。直到這學期,課程設計是一個安卓項目。我之前並沒有接觸過安卓這個東西,只是會一些java的知識。這裡要吐槽一下。。6個人一組,只有我一個人在做。。。然後到現在2個月,項目完成的已經差不多了。界面和程序的性能等等都嘗試著弄了一遍。
自己動手做真的能學到很多東西,而且進步很快。
其實很簡單,題主如果想學習android的話,完全沒有必要去積攢很多知識儲備。如果你能看懂簡單的java程序,那麼你已經可以開始自己動手做一個安卓的應用了。
你需要入門的只有安卓的布局文件的格式。
不會就百度。英語過關的話不會就谷歌。轉載請註明出處:Android學習路線總結,絕對乾貨
一、前言
不知不覺自己已經做了幾年開發了,由記得剛出來工作的時候感覺自己能牛逼,現在回想起來感覺好無知。懂的越多的時候你才會發現懂的越少。
如果你的知識是一個圓,當你的圓越大時,圓外面的世界也就越大。
最近看到很多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. 了解四大組件的大概工作流程 6. …基本知識點的細節
- Activity的啟動模式以及異常情況下不同Activity的表現
- Service的onBind和onReBind的關聯
- onServiceDisconnected(ComponentName className)和binderDied()的區別
- AsyncTask在不同版本上的表現細節
- 線程池的細節和參數配置
- …
熟悉設計模式,有架構意識學習方法
這個時候已經沒有太具體的學習方法了,無非就是看書、看源碼和做項目,平時多種總結,盡量將知識融會貫通從而形成一種體系化的感覺。同時這個階段對架構是有一定要求的,架構是抽象的,但是設計模式是具體的,所以一定要加強下設計模式的學習。關於設計模式的學習,最近一本新書推薦給大家《Android 源碼設計模式解析與實戰》,既可以學習設計模式,又可能體會到Android源碼中的設計思想,我最近也在閱讀此書。
技術要求:
- 稍微深入的知識點 - 系統核心機制 - 基本知識點的細節 - 設計模式和架構 - 書籍推薦 《Android開發藝術探索》、《Android 源碼設計模式解析與實戰》、《Android內核剖析》參考自:Android學習路線指南
四、學習視頻跟書籍當你有了學習線路,學習哪些內容,也知道以後的路怎麼走了,理論看多了總要實踐的,我這裡給你們整理了大概80G的學習視頻跟書籍,趕快點我點我點我。。。下載。。
個人微信號:androidcoder666
謝邀!建議還是先學習一下java se的內容,不需要太精通,I/O、集合、還有面向對象要搞清楚最起碼。自學有可能會花的時間久一點,但還是建議自學,自己摸索。自學Android的過程中一定要多實踐,多看下技術博客,在這裡推薦郭霖的csdn博客還是不錯的。遇到問題多百度,百度沒有就谷歌,一定要培養自己解決問題的能力。
剛開始入門的話,java確實不需要了解太深,甚至連java的一些特性都不需要深入,知道就好。後面安卓寫多了,開源庫看多了,用多了,自然就會開始了解java的更多特性,到時候在學不遲,畢竟剛開始寫android你用不到這些特性。
java需要了解的程度大概是:基本語法,面向對象的編程思想及方法,常用的類。有C++基礎的話,一個下午之內就可以搞定。我當時是看的 java核心技術 入門的沒看完 就了解了以上內容。最重要的還是 面向對象的編程思想及方法 不過這本書基本沒有介紹這個。java的書我沒辦法推薦,我就看過上面那個。
搞定上面的後,就可以開始看android的書了,遺憾的是我是野路子開始的,隨便抄了本書看,然後跟著碼就開始了。推薦 第一行代碼 雖然我沒有看過,但是我所認識的大神推薦之,必然不差。android的知識點就比較多了。基本的四大組件,先搞定activity,因為這是最基本也是最容易搞定的一個組件之一,但也是最重要的。另一個我覺得是broadcastreceiver。接著是搞定service,這個很重要,不亞於activity,但是可以邊實戰邊練。搞定activity,至少需要了解生命周期,如何啟動,包括傳入與接收intent,了解activity里重寫的一些方法。同時,要搞定很多東西,基本控制項布局的使用(包括support包的一些常用控制項),組合控制項,自定義控制項,自定義view。同時把abstract interface implements extends override super this 這些java的東西搞清楚。注意,學的時候要邊碼代碼,第一實戰更有效果第二更有成就感,容易保持動力。上面那些搞定後其實就可以做很多簡單但不失實用的app了。可以選一些你看起來很簡單的功能嘗試實現。便簽啊,計算器啊,定時器啊,本地音樂播放器,鬧鐘等等等。你會發現,你需要學習 sqlite preference handler receiver thread service 文件讀寫 contentprovider(四大組件之一) 等等等。如果你想要更靈活的實現一些功能,可能就需要java的反射。動態代理,泛型。覺得代碼太繁雜?可能要去看看設計模式了。網路編程,可以直接上手開源庫okhttp或volley,但是建議先看看java,實現一些簡單的連接。與你一起戰鬥!
入門的話可以看看一個碼農自己錄製的視頻,一是完全免費,二是比較新。android入門視頻教程
今天逛知乎才發現我發表的這個問題差不多有整整一年了,這也意味著我自學Android也有一年了。竟然有這麼多好心人幫忙指點迷津,心中不免有些感動。
這一年踩了好多坑所以學到的東西更加刻骨銘心,參加了學校的服務外包比賽做了個Android的項目,也參加了省賽的互聯網+,收穫的不僅僅是獎項,更多的是在項目中所學到的知識。
這一年裡,我基本掌握了Android四大組件以及許多控制項的使用,比如說,原本一點都看不懂,雲里霧裡的listview、gridview適配器,現在完全可以自己實現一些簡單的自定義。項目中也引入了大量來自github的開源庫,比如用Gson解析Json數據,用Picasso載入圖片等等。同時,我也時刻保持危機感,經常上Google關注相關的趨勢走向,比如前段時間的Google IO大會。另外就是學會了許多新奇好玩又實用的技能,如git、markdown、vim等等之類的。最重要的事情我覺得就是碎片化時間的使用,因為這學期我學業上的課程安排是很滿的,很難湊出連續的時間來,這時候微信訂閱的技術類公眾號以及保存在Pocket上的網頁就能提供給我滿滿的乾貨啦,閑暇之餘,還會用為了裝逼才買的Kindle看一下&<&<明朝那些事&>&>,陶冶一下情操,這樣的生活其實也別有一番滋味不是么?
總結起來,就是先做好選擇,有了選擇以後,就可以為之不懈努力了,看吧,問出這個問題以後我就開始學了,到現在已經一年了,我相信我一定會堅持下去的,因為還有太多太多的東西等待著我去發現。用不知道在哪看的一句話做結尾吧,永遠也不要害怕比其他人起步晚,因為在技術這條路上,誰都看不到終點。加油吧,朋友們!不需要先把java搞得比較深了再去學android,時間性價比太低。建議java跟android一起學。什麼j2ee j2me j2se基本跟android沒關係,UI構建更是完全不一樣,時間有限的話就不要碰了,java能寫幾個命令行程序就可以直接上android了,語法數據結構跟android一起進步,沒問題。
關注我吧,同學
Android編程需要掌握以下技能
1、Java:Android編程是以Java語言為基礎的,沒有紮實的Java語言基礎,機械的抄別人代碼,是沒有任何意義的。Java部分要掌握的內容
a:Java基礎語法,
b:設計模式
2、Linux基礎:Android系統的基礎是Linux操作系統。在開發過程中經常用到Linux命令,一些Linux的基礎知識是必須的。
3、資料庫基礎知識:對資料庫的增刪改查操作。
4、網路協議:掌握HTTP協議和Socket協議。
5、Android的基礎知識:有了以上的鋪墊,再來學習Android會輕鬆很多。
有了一定的基礎後,看一些Android的書籍
《Android開發精要》、《Android應用性能優化》、《精彩絕倫的Android UI設計》、《Android的應用設計模式》。
個人覺得不需要太深入,相關Android開發書籍參考資料,也可以看看這些:1、《Android基礎教程》(你的第一本Android書)2、《Google Android SDK開發範例大全(第2版)》3、《 Google Android開發入門與實戰》4、當然還有一個《Android的官方文檔》等等。以及一個java入門視頻資料:java教程基礎300集
為什麼在eclipse下配置android開發平台老是在SDK manager這一步下載出故障,總是下一半就失敗了,求大神指教
一個5年前端,2年產品經理,半吊子架構師,創業者的我告訴你:
1. 別碰java2. 別碰微軟已經推出的編程語言3. google的東西可以考慮,但是別盲目跟風,尤其是安卓4. 蘋果比你想像的更像軟體公司,尤其是體現在swift上,oc就算了。5. js,python,c,swift,都是值得學的,別浪費在java上推薦閱讀:
※為什麼PC配置那麼好,跑安卓虛擬機還是卡,是技術原因,還是硬體原因?
?
※單片機、ARM、嵌入式開發、Android 底層開發有什麼關係?
※Android L 發布,新安卓系統在安全方面有哪些變化?
※如何看待 Google I/O 大會推出的Android Studio?單純開發 Android 方面能取代 Eclipse 嗎?
※Android程序員,最常用的20%技術有哪些?
TAG:Android開發 | Android | Android開發入門 | Java開發 | AndroidStudio |