一.java都沒(méi)咋學(xué)好你有什么勇氣學(xué)習(xí)Andriod開(kāi)發(fā)?
到目前為止(2018/1/28)我大概只算是java入門(mén)吧,畢竟我只是再慕課網(wǎng)上看完了3季的java入門(mén)課程,再實(shí)驗(yàn)樓學(xué)習(xí)了一下,大概敲了1000多行代碼吧,好在之前學(xué)過(guò)C#,也用C#開(kāi)發(fā)過(guò)幾個(gè)像樣的網(wǎng)站(好像關(guān)系不大,畢竟我只是用C#來(lái)訪問(wèn)數(shù)據(jù)庫(kù)),總之就是自學(xué)過(guò)幾天java se。這么急忙的上手Android的開(kāi)發(fā),是因?yàn)榧倨诶飼r(shí)間比較多,就想自己瞎折騰一下;還有就是想借學(xué)習(xí)Android實(shí)戰(zhàn)一下自己所學(xué)的java知識(shí),小學(xué)生都學(xué)習(xí)python了,弄的我壓力一直好大。幾天學(xué)習(xí)下來(lái),感覺(jué)問(wèn)題不大,其實(shí)只是Android 入門(mén)的話,大概java也只需要入門(mén)吧。
二.Android開(kāi)發(fā)環(huán)境的搭建
逛了一下知乎,發(fā)現(xiàn) Android studio 比eclipse好一些,畢竟Android studio是google開(kāi)發(fā)的專門(mén)用于Android 開(kāi)發(fā)的工具,比較有名的android入門(mén)書(shū)籍《第一行代碼》第二版也是用的Android studio,我用下來(lái)感覺(jué)是這玩意兒太智能了,代碼自動(dòng)補(bǔ)全功能相當(dāng)強(qiáng)大,和pycharm差不多吧,比visual studio好用。
1:準(zhǔn)備工作
--JDK:這個(gè)應(yīng)該不用準(zhǔn)備吧,畢竟你的電腦上肯定已經(jīng)有了,沒(méi)有的話只能說(shuō)明java都沒(méi)學(xué)。
--Android SDK :Android開(kāi)發(fā)工具包,在開(kāi)發(fā)java程序時(shí)需要引入該工具包,來(lái)使用Android相應(yīng)的API,也可之前不下在,安裝Android studio時(shí),軟件會(huì)提醒我們一并安裝
--Android studio : google被墻,不過(guò)好在有中文社區(qū)http://www.android-studio.org/
下載速度還行,3.0版681M,點(diǎn)擊這個(gè)安裝文件,傻瓜式操作大多步驟都是默認(rèn)然后next就行了,會(huì)幫我們安裝Android studio 和Android sdk
2:走過(guò)的坑
2-1.安裝結(jié)束,剛要?jiǎng)?chuàng)建project時(shí),彈出unable to access android sdk add-on list
不能成功將android sdk 添加到列表(大概好像是這樣翻譯的吧),總之就是android sdk 沒(méi)有安裝成功,走了點(diǎn)彎路,我找到了android skd 的安裝路徑,有個(gè)sdk manage.exe 的可執(zhí)行文件,我們執(zhí)行一下這個(gè)文件,至于上面的AVD manage.exe是安卓虛擬設(shè)備,既然是安卓開(kāi)發(fā),那肯定需要它了,當(dāng)我們也可以用真機(jī)來(lái)跑測(cè)試,回到sdk.mamage,

三.創(chuàng)建項(xiàng)目
1.填寫(xiě)應(yīng)用名稱,公司域名

2.這里的minimum sdk是可兼容的最低版本,我選擇API 15 也就是android 4.0版,這應(yīng)該可以兼容目前為止 所有的Android 手機(jī)了吧,畢竟Android 都出到8.0版了,
其他選項(xiàng)是電視,穿戴設(shè)備,汽車應(yīng)用的軟件開(kāi)發(fā)

3.接下來(lái)就是創(chuàng)建活動(dòng)了,這里我們選擇Empty Activity來(lái)創(chuàng)建一個(gè)活動(dòng)

4.填寫(xiě)活動(dòng)名,和布局名,點(diǎn)擊fish

5.項(xiàng)目就創(chuàng)建好了

6.創(chuàng)建Android 模擬器

點(diǎn)擊最左邊的按鈕

選擇合適的虛擬設(shè)備

選擇版本,這里我選擇adnroid7.0,其他版本,如果顯示null 點(diǎn)擊downlo下載即可

最后確認(rèn)一遍模擬器的配置,點(diǎn)擊finish即可
7.體驗(yàn)?zāi)M器


這模擬器,還有有那么一點(diǎn)點(diǎn)高端的呢
這里有兩個(gè)問(wèn)題:
7-1.最后finish那,是灰色即創(chuàng)建不了模擬器,這里大概原因是電腦中的某個(gè)東東不允許你創(chuàng)建模擬器!

解決方法:重啟電腦,電腦還沒(méi)開(kāi)機(jī)之前按F2 進(jìn)入BIOS界面 進(jìn)入Configration,將lnterl Vitual Technology [Disable] 改為Enabled, 這時(shí)打開(kāi)Android studio,就可以創(chuàng)建虛擬機(jī)了,同時(shí)我還想說(shuō)一句,我只是想看到,編程界的經(jīng)典語(yǔ)句"Hello World ",我容易嗎

7-2.啟動(dòng)了模擬器,電腦會(huì)有些卡頓,在敲代碼時(shí),智能提示可能不會(huì)出來(lái),就連回車都有延遲,我的解決方式是每次運(yùn)行完程序都關(guān)閉模擬器,于是每次運(yùn)行程序都要重啟模擬器,大概需要2分鐘左右才能運(yùn)行一遍程序,體驗(yàn)極差;還有就是一些功能只能運(yùn)行在真機(jī)上面,例如手機(jī)到運(yùn)用手機(jī)的多媒體,調(diào)用手機(jī)攝像頭等,這時(shí)只能用真機(jī)。方法很簡(jiǎn)單,電腦上安裝360手機(jī)助手即可,因?yàn)槊看芜\(yùn)行都要將程序安裝到手機(jī)上,所以手機(jī)設(shè)置時(shí)要允許通過(guò)USB安裝程序

8.運(yùn)行程序
what? 一行代碼都沒(méi)寫(xiě)就運(yùn)行程序,還有這種操作,先別急,我們先運(yùn)行一下看看。

看到菜單欄有這么一個(gè)東西,左邊的小錘是編譯程序,中間貌似可以同過(guò)下拉列表框選擇東西,沒(méi)錯(cuò),它就是選擇你想要運(yùn)行的程序,最右邊運(yùn)行程序

點(diǎn)擊就會(huì)讓你選擇運(yùn)行程序的設(shè)備,最上面時(shí)我本人的android 手機(jī),下面時(shí)我們剛剛創(chuàng)建的虛擬設(shè)備


四.分析我的第一個(gè)android 程序
我們把項(xiàng)目結(jié)構(gòu)從android模式,切換到project模式,可以看到如下的結(jié)構(gòu)

-
.gradle和.idle
android studio 自動(dòng)生成我一些文件,無(wú)需關(guān)心
2.app
項(xiàng)目代碼和資源幾乎都放在這個(gè)目錄下
image.png
2-1.bulid:目錄里主要包含編譯時(shí)自動(dòng)生成的一些文件;
2-2.lib:如果項(xiàng)目中用到第三方的jar包,就需要把這些jar包,放在lib目錄下,這個(gè)目錄下的jar包會(huì)自動(dòng)的添加進(jìn)構(gòu)建路徑里去
2-3.android test :編寫(xiě)android test測(cè)試用例的,用于進(jìn)行一些自動(dòng)化測(cè)試
2-4.java:編寫(xiě)java程序
2-5.res:放置項(xiàng)目中用到的所有圖片,字符串,布局資源,其中圖片放在drawable目錄下,布局放在layout目錄下,字符串放在values目錄下
2-6.AndroidManifest.xml
整個(gè)項(xiàng)目的配置文件,項(xiàng)目中用到的所有組件都需要在這個(gè)文件下注冊(cè),此外還可以為應(yīng)用程序添加權(quán)限聲明
2-7.test: 再該文件下編寫(xiě)unit test測(cè)試用例
2-8.proguard-rules.pro:指定代碼的混淆規(guī)則,防止代碼被別人破解
其他的目錄大多無(wú)需關(guān)心。
五.代碼分析。
1.java代碼

MainActivity繼承于AppCompatActivity,可以將Activity在各個(gè)版本系統(tǒng)新的功能和特性向下兼容,onCreate 方法的最后一行 調(diào)用了setContentView()方法為當(dāng)前的活動(dòng)引入了一個(gè)名為activity_main的布局,setcontent()方法,我們傳進(jìn)去的參數(shù)一般是一個(gè)布局文件的id,項(xiàng)目中的如何資源都會(huì)在R文件中生成一個(gè)唯一的id,因此我們用R.layot.布局文件名,接下來(lái)就來(lái)看看布局文件;
2.布局文件(layout目錄下)

左邊是它的代碼,我們可以在最后一行看到 hello world 的字樣,同時(shí)我們?cè)谟疫叺脑O(shè)計(jì)視圖下也看到了,hello world的內(nèi)容。我們之前說(shuō)過(guò)組件都需要在AndroidMianifest.xml中注冊(cè)的,那我們?cè)賮?lái)看看這個(gè)文件吧
3.在AndroidMianfest中注冊(cè)

這里最重要的就是,一個(gè)應(yīng)用程序會(huì)有很多個(gè)活動(dòng),當(dāng)程序啟動(dòng)的時(shí)候,我們需要指定首先啟動(dòng)哪一個(gè)活動(dòng),這時(shí)就用到了<intent-filter></intent-filter>,inttent-filter 中的兩行代碼很關(guān)鍵,<actoin android:name="android.intent.action.MAIN"> ,<category android:name = "android.intent.category.LUANCHER">,表示MainActivity是這個(gè)活動(dòng)的主活動(dòng)。當(dāng)點(diǎn)擊這個(gè)App時(shí)首先啟動(dòng)的就是這個(gè)主活動(dòng)。
