我的第一個(gè)Android程序

一.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,

image.png

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


image.png

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


image.png

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


image.png

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


image.png

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


image.png

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


image.png

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


image.png

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

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


image.png

最后確認(rèn)一遍模擬器的配置,點(diǎn)擊finish即可

7.體驗(yàn)?zāi)M器


image.png

image.png

這模擬器,還有有那么一點(diǎn)點(diǎn)高端的呢

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


IMG_20180126_211627.jpg

解決方法:重啟電腦,電腦還沒(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 ",我容易嗎


v2-94b046ff998812169f9dfd574fecafea_r.jpg

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安裝程序


Screenshot_2018-01-28-14-45-09-850_com.android.se.png

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


image.png

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


image.png

點(diǎn)擊就會(huì)讓你選擇運(yùn)行程序的設(shè)備,最上面時(shí)我本人的android 手機(jī),下面時(shí)我們剛剛創(chuàng)建的虛擬設(shè)備
Screenshot_2018-01-28-15-52-49-922_com.example.co.png
image.png

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


image.png
  1. .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代碼


image.png

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目錄下)


image.png

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

這里最重要的就是,一個(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)。

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書(shū)系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

  • Android 自定義View的各種姿勢(shì)1 Activity的顯示之ViewRootImpl詳解 Activity...
    passiontim閱讀 179,057評(píng)論 25 709
  • kubernetes借助系統(tǒng)的OOM KILL提升服務(wù)質(zhì)量,至于什么是OOM KILL可以去網(wǎng)上搜一下這里不再班門(mén)...
    YiQinGuo閱讀 4,083評(píng)論 0 1
  • 真的很希望你是這樣的人, 不喜不悲,與世無(wú)爭(zhēng), 明白什么是自己真正想要, 每天安靜的過(guò)著自己的生活, 不被得失羈絆...
    YNM解說(shuō)閱讀 280評(píng)論 0 2
  • 跟一個(gè)陌生人相識(shí)在周四,每天深刻有趣的聊天感覺(jué)對(duì)方就像是許久未見(jiàn)的老朋友,“我好像在哪兒見(jiàn)過(guò)你”,那種前世相逢的感...
    希湫明閱讀 1,637評(píng)論 0 2

友情鏈接更多精彩內(nèi)容