JAVA 學到什麼水平就可以轉戰 Android 了?


先簡單的分兩種情況:
一、有編程基礎,或者科班出身的,直接上吧強烈推薦郭霖老師的《第一行代碼-Android》
二、沒編程基礎的,先入門java,如果天天都有比較多的空閑時間的話,這個入門時間要在2周完成,如果沒有的話,1個月內完成吧,不要讓拖延耽擱你的激情
如果你準備好了進軍Android:
不管你什麼時候開始學習Android,請使用Android Studio,首現改主題,然後去網上搜一下常用的20個快捷鍵截圖放在電腦桌面上
如果是色彩盲,請自行收藏這個網站:Material Design Color Palette Generator
所有書上的UI部分掃一遍就行了,我相信現在還沒有書按material design標準講解。
從一開始起就嚴格按照material design寫,Material Design我想你一開始學習的時候身邊是沒設計師的吧,但是按照標準,你不需要設計師:)
不要自定義一堆padding margin,但你需要邊框,邊距的時候,請看看?android:attr/裡面有木有你需求的(由於android studio強大的補全功能,你一般只需打幾個關鍵詞就有提示了),比如你需要給一個ImageButton加點擊效果,不要傻不拉幾的去寫一個selector了,你只需要輸入 item select這些關鍵詞,自動補全就會給你提示了。
不要定義一大堆亂七八糟的字體大小了,materail design上的幾種基本字體大小可以滿足你!
再也不要使用ListView了,改成RecycleView吧
再也不要尋找第三方下拉刷新控制項了,SwipeRefreshLayout肯定符合你的要求(不信你看,知乎Android客戶端都是用的這個(●ˇ?ˇ●))。
再也不要使用第三方側滑欄了,DrawerLayout能滿足你!
再也不要使用ViewPagerTabStripe這一類的第三方Tab控制項了,請使用TabLayout!
再也不用找圓形頭像控制項,圓角控制項了,其他的Univeral Image Loader /Picasso也不用看了,直接上Fresco | Fresco 中文說明吧,它都有!不如用省下的時間看看Fresco的源碼。
少去國內論壇瞎晃,然後各種求指點,安心寫兩個月,你會發現自己水平比他們都強,有問題請去stackOverflow搜索國內博文除了幾個大牛的都少看,都是假的!都是騙人的!很多寫著是原創,但是博文內容他們自己都沒試驗過,鄙視這些不負責任的!
少聽一些人說的有問題要寫博客記下來!把這個時間省下,學一下UML圖怎麼畫,給自己的工程加一些規範的注釋吧!你的這些規範的源碼和規範的注釋就是你以後的資料庫和經驗庫!
請學會使用Git,自己一個人也要用,我們先不說那些團隊合作什麼的高大上的,就說你這一版代碼修殘了,要從原來的重新修改,怎麼辦?用Git,回滾版本!就說你突然一天電腦出問題了,或者你范二了,沒備份就重裝系統了,想哭怎麼辦?用Git,再也不用擔心代碼突然丟啦!
---------------------------------2015/8/13-------------------------------------------------------
評論裡面有些同學有疑問關於如何學習material design控制項,我的建議是去GitHub搜,有很多同行給的例子,比如chenyangcun/MaterialDesignExample · GitHub
這些栗子足夠入門。
-------------------------------------------------------------------------------------------------------
---------------------------------2015/8/8----------------------------------------------------------
有朋友說要是動真格的話,需要NDK以及JVM等的知識,首現NDK並不是神秘的東西,你跟著官方的步驟走一遍就知道什麼回事了,無非就是一些代碼格式以及原生/JAVA內存交互,進階一點的有原生/JAVA線程交互,線程交互確實有點蛋疼,但平常避免用就好了,再說對於初學者來說關心NDK幹嘛,據鄙人以前的經歷,只在音視頻通信和一個嵌入式信號處理(離線)的兩個項目中用過,嵌入式信號處理是JAVA-&>NDK-&>.SO-&>MATLAB這樣調用的我原來MATLAB的代碼,其他的大多就用在遊戲上了吧,一般的互聯網公司會有人給你公司的SO包的。
至於JVM,該掌握的那部分,相信我,你會掌握的,不該你掌握的,有那些專門研究JVM的人來做,不如省省心有空看看計算機系統,編譯原理。
一句話,平常多寫多練,這是最基本的程序員的素質,盡量擠時間,讀理論基礎書籍,JVM不是未來30年唯一的虛擬機,JAVA也不一定再風靡未來30年工業界,其他的系統和語言也會雨後春筍冒出來,但你理論紮實會讓你很快理解學會一個語言或者框架,你平常寫的多會讓你很快熟練的將新學的東西應用到實際中。
初學者,一句話,多練。
------------------------------------------------------------------------------------------------------------
說說我的情況吧,第一個學過的語言是C,然後C學的很爛的情況下繼續學習了C++,為什麼沒有先把C學好再學C++呢,因為課程設計==,我有自知之明,所以在上C++的前一個寒假就先開始看了,然後先看了一本《易學c++》,雖然那本書在現在淺顯至極,但當時還是感覺有點略難,我通過這本書熟練地掌握了std::iostream!==然後基本的對象模型有了一點概念,我比較好高騖遠,於是就在此時想直接通過最後一個大作業——命令行下的RPG遊戲 徹底掌握C++這門最難的語言!對,你沒聽錯,我當時想的就是這個大作業要是搞懂了,C++還不是被我各種SM,但很不幸,雖然我一行行的把這個大作業的源碼比著答案敲了一遍,但還是不懂,於是就在網上找了一個據說是清華的java課件開始學習,你還別說,除了當時感覺java裡面把function叫做method(方法)感覺怪怪的以外,真的在不到3天的時間完全弄懂了對象的概念以及對象的繼承,然後差不多就開學了==(當年不懂事,整個寒假就看了這10多天的書),所以java大法好。
好,這是我人生入坑的開始,我說的寒假就是2014年寒假!,在接下來的學校的C++課程中我當然如魚得水,然後一發不可收拾,很快我就自己把那本98清華版的《visual c++程序設計》弄爛了,確實那本書的只是我掌握的滾瓜爛熟,然後我就深入了解MFC,什麼用GDI實現AlphaBlend,MFC的設計思想,MFC中資料庫的使用什麼的,然而現在回首看來這些並沒有什麼卵用。然後我就天天晚上回到宿舍打開電腦寫代碼,但顯然我很快從社區(知乎==)上得知MFC很爛,大家都說微軟大法好!於是入了C#的坑,然後發現生活好美好===天天真是喜歡C#的不得了,不過有一天我成了軟黑,winform繪圖閃成狗,loadlibrary看著好蛋疼,以及用user32.dll時,蛋疼的語法,蛋疼的函數名字,API參數,然後我得知,原來罪魁禍首不是c#,是winAPI就長這樣!
然後就在知乎大聲地教唆下,入了Qt教,入門是看的一個外國人錄得視頻,英文無字幕,但是他的聲音好好聽,於是就學了Qt,第一次發現各種Layout的自適應布局,通過掌握QGraphicsView熟悉了MVC模型,後來還用QGraphicsView到了真實的項目,發現===好多坑==,坐標系統是坑,事件系統是坑,總之,欲仙欲死,不過說實話,我至今還是認為Qt的設計挺好的,QML想學,但流產了,原因大概是沒時間吧。
然後解除了另外兩端慘絕人寰的事情,第一個是第一次做音視頻的實時網路傳輸的時候,資料很少,一開始甚至連Ffmpeg都不知道,後來知道了,就入了Ffmpeg的坑,好多莫名奇妙的錯誤,都需要右鍵去看源碼,然後音視頻的編解碼以及Rtp/Rtsp協議弄的差不多,demo也出來的時候,為了廣域網,又要入P2P Nat穿透的坑,但是很遺憾,沒有完全成功。
還有一些其他亂七八槽的事情回來補==今天先說重點。
在今年4月份左右,我第一次下定決心要搞定Android,而且我真的做到了!雖然以前斷斷續續看過android,但都沒屁用,這次是真的白天看書,晚上寫代碼。郭霖老師的《第一行代碼——android》只看了5章,但在這五章的學習過程中,我真的入了Android的門了,然後那本書我再也沒有打開過,當然,Android只會畫界面是遠遠不夠的,現在的support.design.widget組件集讓Android界面開發變得很輕鬆了,重要的是和伺服器的交互,以及嵌入式本地數字信號處理,一不小心寫了這麼多,第一次發現自己打字這麼快,哈哈~


來歪個樓。看到上面有不少人推薦《第一行代碼》這本書的。
首先申明,沒有看過那本書,但是之前看過郭霖的博客。
他的博客確實比大多數人寫得更用心,有一些實用的東西,可能初學者覺得很炫,但是只是看看就可以,裡面的一些思維並不值得借鑒。如果寫代碼時這麼做,代碼review時肯定要被老員工噴死。
比如這個Android下拉刷新完全解析,教你如何一分鐘實現下拉刷新功能
除了裡面的一些小問題和效果差強人意之外,有一個最大的問題就是沒有做好封裝。這就不是技術的問題,而是思維的問題了。
這時你再對比一下github上一些star和fork都很多的project,就會很明顯地感覺到其中的差距。
與其去學那些花哨的東西,不如靜下心來自己寫個緩存框架,認真看些Android源碼。ImageLoader再好,也不可能永遠都滿足你的要求。如果緩存框架和網路交互框架寫好了,基本上60%的工作都完成了,剩下30%是自定義View,剩下那10%就是很多博客中經常樂此不疲去寫的,然而並沒什麼卵用。
再說了,有Android Developers和StackOverflow這兩個好東西,哪裡還需要什麼其他多餘的書。說句不客氣的話,99%的國內博客和書籍都是其中的片面甚至是蹩腳的翻譯,比原汁原味的東西差得不是一星半點。
更何況做Demo的水平和實際的項目之間,還差著無數個Debug的過程。


個人認為

1.Java相關知識:

面向對象的概念

理解引用

繼承/多態

介面/內部類/匿名內部類/回調(鉤子)/觀察者模式

異常(聲明/捕獲)

I/O:類結構/裝飾者模式

容器:List/Map/…

多線程:同步/線程池/…

其中主要學會io和內部類即可,然後就可以去學習安卓的內容了。

2.Android的相關內容主要掌握

常用布局/控制項的使用/ListView/…

dialog/PopupWindow/Option Menu/Context Menu

fragment

Activity(UIViewController)/broadcastreceiver/service/..

Activity和Service/activity和fragment

intent的各種屬性/顯式意圖/隱式意圖

網路通信http:http協議/httpclient/volley/.../json/xml解析

耗時任務:Thread/asynctask/handler

動畫:Tween Animation(iOS核心動畫:假象)/DrawableAnimation/Property Animation(3.0,UIView)

各種資源文件:字元串/數組/圖片/.../style/attr/selector

以上是我認為做安卓的最基礎的知識。有了這些知識便可以做出一款完整的app。
3.會使用一些開源項目。github上面有一個安卓開源項目匯總Trinea/android-open-project · GitHub
4.做一兩個項目

關於學習方法:
1.剛開始的時候,可以看視頻,這樣學起來快一些,剛開始我認為看書是沒有用的,通過看視頻快速掌握基本東西,可以達到事半功倍的效果。主要參考mars和老羅的視頻。
2.這時已經會基本的開發了,接下來可以做一個項目用到平時學習的小的知識點。同樣也可以跟著視頻學習,網上有一些培訓公司的視頻,跟著寫一個項目就明白軟體開發的基本流程了。記住:一定要動手敲代碼!
3.這個時候你會發現,做開發基本就是代碼拼湊,拿一些現成的開源框架或者以前寫過的代碼複製粘貼,就是api的調用,已經很容易寫一些東西了。就需要從入門階段進行進階了,可以將重心放在框架層的源碼上面,研究安卓的源代碼也是學習安卓的好方式。研究各種manager,Binder,時間分發,view繪製等等,可以做一些自定義的控制項,研究開源框架,比如volley等。
4.務實基礎,可能在前面的階段java基礎知識還不是很紮實,比如啟動一個activity用到xxx.class寫代碼的時候只是照貓畫虎,現在完全可以回頭研究到底是什麼東西,看java虛擬機等等,3和4也是同步的。
最最重要的就是基礎知識,最近在看操作系統,演算法這些,非科班出身的一定要重視基礎知識。這樣才能在這條路上走的更遠,更好!
上面說的過程就是我學安卓和踏入it圈子兩年以來的經歷。最上面列舉的java和android的基礎知識是有一次和學弟學妹分享做的ppt裡面的,希望能幫助到別人。


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,贏取白富美。。。。

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

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


只有有編程基礎,《第一行代碼》和《Android 編程權威指南》就可以來學了。
按照這個教程,來學就OK。
寫給Android 初學者的入門教程


Anytime


java什麼水平都可以轉android


看了問題之後,第一反應是:為什麼要學了Java到一定程度再去轉戰Android?
如果原本Java基礎不是很深或者沒有太多相關經驗,那就直接為了做Android而去學Java好了。

我一直覺得單純學一個計算機語言是很無聊也很難堅持下來的,因為講語言的書老是弄一些讓人毫無成就感的無聊作業作為練習。Java更是如此,由於應用面比較廣,可能你看的書還在教你怎麼寫Servlet之類的東西呢。雖然那些東西也挺有用的,但是你是想做Android,絕對是想看到自己寫出來的哪怕是簡陋的畫面在手機上動起來,而不是一堆代碼在伺服器端默默地工作。
既然你想做Android,那就直接去看做Android的材料,試著努力做一個簡單的APP出來,在此期間搞懂Java和Android的各種知識過程中遇到Java不懂的,再回去查Java的基礎知識會比較有動力,也比較有成就感。

無法帶來成就感的學習,往往很難堅持下來。

== 回應部分評論的分割線 ==
評論中有很多人提出了非常中肯的意見,說Java基礎知識很重要,如果不學好基礎知識,要麼變成市場上那些垃圾開發人員,要麼自己會走很多彎路。
對於這樣的意見,我4096%的同意!基礎知識不學好,越往後走越難,最後就會進入一個瓶頸,只能做最簡單層面的東西,稍微涉及一點高級功能和原理的地方,要麼是通過大量毫無根據的嘗試偶然碰運氣解決,要麼是根本無法解決。碰運氣解決的,解決方案通常也都是低效、質量不穩定的。
我之所以在這裡還是說要從實用APP入手,只是說如果一點都不結合實踐,單純學習Java語言的理論,會很難讓自己保持入門的動力。說實話,先實踐入手的學習方法,其實不如從基礎入手,把知識學紮實了再學習APP實踐效率高。就像 @佚名者 說的,會走很多彎路。但是,重要的是這樣雖然花的時間稍長,作為學習者卻更容易堅持下來。
這就好像程序的進度條,一個程序,在進行某個無法並行進行的循環處理時,單線程不給任何反饋其實效率最高,做成多線程,同步顯示進度條一定比沒有進度條的程序執行效率低,因為一方面要進程間同步,一方面還要做UI處理。然而,作為用戶,絕對是有進度條的讓人感覺不那麼難以忍受。所以,雖然從實踐入手稍微效率低些,但更容易進行下去。
我也在上面對原有答案的部分內容加了粗體。在結合實踐的學習過程中,千萬不能囫圇吞棗,照著教程把程序複製過來跑起來就蹦蹦跳跳地去找小夥伴炫耀了。一定要注意學懂背後的原理,不然真的是浪費自己的青春。

最後,記得以前參加一個培訓,說不同的人會習慣不同的學習方式。有的人就是喜歡從實踐入手,然後慢慢掌握理論知識,還有的人就是願意啃理論知識,然後理論學全了才去實踐。兩種沒有好壞之分,只是天生更適合某一種方式(弗洛伊德說:或者跟童年經歷有關)。
我現在回答的這種,剛巧比較適合前一種人。如果你是後一種人,請認真學習Java理論知識,學到什麼程度的話,至少要把基本的面向對象概念,包括內嵌類、匿名類等稍微另類些的東西掌握,然後listener的機制,當然,作為Java的基礎中的基礎的引用、垃圾回收什麼的就更得爛熟於胸了,其它例如並行、java.util裡面的常用內容也是必須的……然後,去看看Android開發,覺得入門有難度,回去繼續學,覺得還好,就進Android的門玩玩。

其實,還有個折中的辦法。
先把Java基礎知識相關的書快速瀏覽一遍。目的不是為了學會學懂,而是知道Java基礎知識都包含了什麼東西,相當於在腦子裡存一份Java基礎知識的目錄,詳細內容不明。然後去學Android入門,當你遇到講的知識里自己不懂,剛巧在Java基礎知識目錄里存在時,就回去把那條目錄對應的內容學懂。


了解基礎就行了,找一本java入門的書看看,照著上面代碼走一遍


實名反對bird-HU

這個答案的編輯時間是2016年5月12日
此時ADT已經棄用(就是eclipse)
此時Android Studio 已經到了2.0(雖然版本號還是1.4.xxxxxxx)
更何況這和題主問題還沒什麼關係。
人家用記事本寫Java不行嗎?用NetBeans不行嗎?用Notepad++不行嗎?用……不行嗎……和eclipse有什麼關係?

真正的應該是這麼說:要學會使用ADT創建安卓工程(注,雖然人家是Eclipse插件,但是人家整個整合的確叫ADT的)再學會使用Android Studio如果你真的要轉安卓。

什麼叫GUI已遺棄?
Java的GUI已遺棄——MC表示不服,MC啟動器表示不服,awt表示不服,swing表示不服。還有很多java寫出來故意包裝得不需要安裝jre的應用表示不服。
Android的GUI已遺棄——啥?Android的GUI不是xml?

600多個G的視頻很厲害?還要關注公眾號才有?

我這種2T快滿的怎麼算?

備用網盤快滿了怎麼算?
而且全部都是電!子!書!
有些還是我親!手!寫!的!
你那種轉黑馬的百度一搜一大堆還怎麼說?好吧回答一下題主問題:Java學到什麼水平可以轉安卓?
個人認為,可以忽略的是Java的常用包,常用類。雖然安卓可以用上但是這東西還真的靠背的,真正開發(而不是面試)直接查就好了還背什麼,用多了自然記得還背什麼(壞笑)。
如果真正的說的話,Java只需要學了基本的東西比如對象或者方法,還有繼承,抽象,好像基本就沒了,可以直接學習Android。(雖然現在還不能開發簡單的Android程序)(注,其實還需要線程的知識,不過簡單Android不需要線程嘛2333)
如果想要做到開發Android程序……稍微看一下別人一些簡單的程序源代碼(比如人家的demo像是展示Button監聽,ListView操作)就會明白怎麼綁定,怎麼監聽,怎麼操作這些。
當然你可以直接看書看視頻不走這路……只是我走這路覺得很快而已……而且我學Android還早過學Java,然後我就靠踩各種坑來提升(ノ=Д=)ノ┻━┻


什麼水平都可以,最重要的是 Keep Learning。


這是個很模糊的問題,理解Android SDK的編程框架,不會JAVA都可以,如果你想能夠動手寫一個APP或者插件,還是需要有一定的語言基礎,JAVA中的設計模式,多線程編程,網路編程,和後台的各種接入等等,APP開發作為軟體開發,也是需要很多方面的技術才能實現的,如果將來要專註Android客戶端開發,可以多看看Google的官方文檔,深入理解SDK的內部,客戶端開發相對來說對演算法要求較低,並不需要handle大的並發這些問題,新手入手Android還是很快的。


沒這麼複雜,只要將J2se基礎學紮實就夠,學安卓會變得輕鬆許多。 J2se基礎紮實才是最重要的,J2se基礎紮實才是最重要的,J2se基礎紮實才是最重要的。重要的話說三遍。只要你J2se基礎紮實,無論是學Android還是J2ee都會變得好上手。都不會再有很多代碼看著迷迷糊糊的感覺。
至於主要要學哪些內容,基本就是:數據類型、數組、流程式控制制語句(if、switch、for、while這些東西)、java面向對象的知識(封裝、多態、繼承,面向對象思想很重要,但其實你寫多了代碼,思想就來了)、java常用的類、集合、io流、線程、異常、部分網路編程知識可以選擇性學習,因為寫安卓你肯定會遇到,遲早要學。
最後補充一點,代碼寫少了,說什麼都是放屁。所以呢?想要提升就給自己定日程,每天至少有效率的寫兩個小時代碼。


去年學過JAVA一個月,今年兩個星期不到看完第一行代碼這本書,代碼都敲了,根據自己的想法改進,然後就暑假出來實習做安卓開發了,目前獨立做完一個項目,跟團隊合作完成一個項目,下個星期都上線。。。遇到不懂的在去看基礎


java入門非常容易,所以導致現在安卓的開發者爛大街?(並沒有抵毀的意思,我本人也在寫安卓)
個人感覺一個熟練的安卓開發者,最好有類似C語言這樣更底層的語言基礎,以及對於各種數據結構和演算法的靈活運用的能力。
1. java的基本語法:變數、各種語句的寫法,類的繼承,類和介面的用法,內存管理。
2.設計模式:比如Activity的單例模式,各種View的適配器,以及程序整體如MVC的架構設計。
3.安卓特色:線程、廣播等非同步操作的通訊和回調、sqlite使用和調試,各種布局。
太多懶得打了,學會用第三方庫,可以節省很多時間。。以及,如果對於unix和安卓底層有了解就更好了。
然而身邊有些開發者是連起碼的要求都做不到的,比如layout拖控制項、隨便命名還不縮進、copy一大段代碼也不封裝。。。

總言之,語言只是個載體而已,就像我們和美國人說話要用英語一樣,單詞和語法大家都會,說出來的內容如何就看自身閱歷和修養了。


會開車到什麼境界了就可以做計程車司機了?


java學個基礎,thinking in java看完就可以了。

如果想要做個app玩玩,要知道app入口Activity,各個Activity之間的消息傳遞,service,各種view,事件監聽處理。

語法什麼的不是很重要,關鍵是android中定義的各種規則。


每次看到這種新手問題我就知道下面肯定有不少廣告.
稍微有點編程基礎什麼時候都可以轉android.隨便看看&<第一行代碼&>,&或者李剛的那本瘋狂,這三本中的一本看看,背點東西,諸如四大組件啦,各種生命周期啦,照著書把demo做了,然後就可以找實習去了,肯定能找到.


因為有多年PHP開發經驗,因為又是計算機專業,大一系統學了C和C++,所以我從開始學Java到上手Android初步開發大概用了2個月。Java部分我重點看了面向對象部分,線程部分,異常處理等譚浩強版C++里沒有過的概念那部分。然後開始學Android,看的是《第一行代碼》這本書,到開發出第一個APP,前後用時兩個月。以下是APP大概的效果:


稍微了解一下JAVA就可以學習安卓了吧,反正我是這麼乾的。學校JAVA根本也沒講什麼,就是點數據類型,繼承,介面,等玩意。大部分都不講,慕客網上的安卓講的就很好了,不用知道很多JAVA知識。


推薦閱讀:

如何自學 Android 編程?
Facebook Home 發布後下載量慘淡,同時獲得大量差評,有哪些原因?
你用過 Android 平台上體驗最好的音樂應用是什麼?
Roboto 是一款什麼字體?
為什麼很多手機有3G RAM這麼虐心的配置?

TAG:Android 開發 | Java | Android |