Android Ch02 forstudent.ppt [相容模式] -...

31
2章 建立Android應用 程式 本投影片參考陳會安先生投影片製作修改,僅供教學使用。 楊偉儒 Email: [email protected] 1 2章 建立Android應用程式 2‐1 Java語言、XML文件與Android 2‐2 建立第一個Android應用程式 2‐3 建立第二個Android應用程式 2‐4 Android Studio的使用介面 2‐5 Android Studio專案結構 2-1 Java語言、XML文件與Android 2‐1‐1 Java語言的基礎 2‐1‐2 AndroidJava語言 2‐1‐3 AndroidXML文件 2-1-1 Java語言的基礎 說明 Java」(爪哇)是一種類似C++語言的編譯式語言,不過 並不完全相同,因為它是結合編譯和直譯優點的程式語言 「平台」(Platform)是一種結合硬體和軟體的執行環境 Java程式是在平台上執行,屬於一種與硬體配備無關且 跨作業系統的程式語言,換句話說,Java平台是一種軟體 平台,它是由JVMJava API元件組成。

Transcript of Android Ch02 forstudent.ppt [相容模式] -...

  • 第2章建立Android應用程式

    本投影片參考陳會安先生投影片製作修改,僅供教學使用。

    楊偉儒

    Email: [email protected]

    1

    第2章建立Android應用程式

    2‐1 Java語言、XML文件與Android 2‐2 建立第一個Android應用程式 2‐3 建立第二個Android應用程式 2‐4 Android Studio的使用介面 2‐5 Android Studio專案結構

    2-1 Java語言、XML文件與Android

    2‐1‐1 Java語言的基礎 2‐1‐2 Android與Java語言 2‐1‐3 Android與XML文件

    2-1-1 Java語言的基礎 – 說明

    「Java」(爪哇)是一種類似C++語言的編譯式語言,不過並不完全相同,因為它是結合編譯和直譯優點的程式語言。

    「平台」(Platform)是一種結合硬體和軟體的執行環境,Java程式是在平台上執行,屬於一種與硬體配備無關且跨作業系統的程式語言,換句話說,Java平台是一種軟體平台,它是由JVM和Java API元件組成。

  • 2-1-1 Java語言的基礎 – JVM虛擬機器

    「JVM」(Java Virtual Machine)虛擬機器是一台軟體的虛擬電腦,Java原始程式碼使用Java編譯器(Java Compiler)編譯成JVM虛擬機器的機器語言,稱為「位元組碼」(Bytecode)。電腦作業系統需要安裝JVM,才可以使用Java直譯器(Java Interpreter)來直譯和執行位元組碼的程式,如下圖所示:

    2-1-1 Java語言的基礎 – Java API

    Java API(Java Application Programming Interface)是軟體元件集合的函數庫,提供集合物件、GUI元件、檔案處理、資料庫存取和網路等相關的類別和介面,稱為「套件」(Packages)。

    2-1-2 Android與Java語言 – 說明

    Android應用程式是一種使用Java語法建立的應用程式,建立Android應用程式就是使用物件導向觀念和語法,繼承和擴充Android框架的Java現成類別,不過,Android和Java應用程式的執行方式是完全不同。

    2-1-2 Android與Java語言 – 圖例

    Java程式碼在編譯成位元組碼後,就可以在JVM上執行,不過,Android稍有不同,需要多一道手續才能在DalvikVM或ART上執行,如右圖所示:

  • 2-1-2 Android與Java語言 – 圖例說明

    左邊是Java應用程式的編譯與執行過程;右邊是Android應用程式,其差異在於Java程式編譯成Java位元組碼後,還需要使用Dex編譯器編譯成Dalvik位元組碼,4.4版之前是在DalvikVM直譯器上執行;Android 5.x版是使用ART(Android Runtime)來執行。

    請注意!ART是使用「AOT」(Ahead‐of‐time)編譯方式,也就是在安裝Android應用程式時,就將Dalvik位元組碼編譯成ELF(Executable and Linkable Format)的原生機器語言,讓ART可以直接執行。舊版 DalvikVM 直譯器在每次執行Android 應用程式時,都需編譯後才能執行,ART只需在安裝時編譯一次,就可以執行原生機器語言的程式碼。

    2-1-2 Android與Java語言 – 圖例說明

    為什麼 Dex 編譯器不直接從 Java 程式編譯成 Dalvik 位元組碼,而多一道編譯手續?這是因為 Java 語言改版較頻繁,Java 位元組則幾乎沒有甚麼改變,所以 Java 位元組碼反而是比較好的選擇,如此 Android 就不需要頻繁的跟隨改版。

    10

    2-1-3 Android與XML文件

    Android是一套支援多國語系和不同螢幕尺寸行動裝置的作業系統,為了簡化和方便管理使用在不同語系和尺寸的資源,Android切割使用介面和程式邏輯控制,採用 XML文件來管理程式介面部分和相關的眾多資源,例如:圖示和背景圖形。

    XML是一種類似 HTML(Web網頁的原始碼)的標記語言,可以直接使用文字內容的標籤來定義 Android使用介面的位置、尺寸和外觀,如同佈置房間時,描述桌子放在哪裡、衣櫃在哪裡和床面向哪個方向等。

    Android Studio 在編譯時就可以將定義使用者介面的 XML 文件,轉換成 Java 程式碼,而不用開發者自行撰寫冗長的Java 程式。

    2-2 建立第一個Android應用程式 – 說明

    我們建立的第一個Android應用程式只是修改XML文件的內容來顯示「第一個Android應用程式」的一段文字內容,其主要目的是說明Android Studio專案結構、基本編輯介面和如何在Android模擬器測試執行Android應用程式。

    Android Studio整合開發環境是使用專案(Project)管理Android應用程式開發,基本上,專案是一個目錄結構,內含Java程式碼檔案、XML文件檔、圖示和圖形等資源檔案。

  • Create a New Project

    13

    Create a New Project

    14

    Create a New Project 應用程式名稱:就是 App 會在手機上顯示的名稱。雖然不

    同 App 可以取相同的名稱,但建議還是為 App 取個能表現特色的獨特名稱。

    公司網域(company domain):用來自動產生套件名稱,請輸入擁有的網域名稱,如果沒有,可自行命名。預設名稱是登入使用者.example.com Ex: wzyang.example.com

    15

    Create a New Project 套件名稱: 唯讀欄位。App 在 Android 世界中的身分證

    ,無論是在 Android 手機上,或是在 Google Play 市場中,都是依據套件名稱來辨識每一個 App。不同 App 套件名稱不可以重複! 名稱一般採用"顛倒順序的網域名稱.應用程式名稱"的命名方式

    。Ex: com.example.wzyang.myapplication

    Android Studio 名稱將套件名稱分為對內及對外兩種。

    Android Studio 名稱一般只用小寫,必須用句點分段,至少要有兩段,每段開頭必須是英文字母。

    如果套件名稱相同,就表示是同一應用程式,重複安裝會取代現有程式。

    16

  • Create a New Project

    17

    行動裝置須支援最低需求的AndroidSDK 版本

    Create a New Project

    18

    Android 各版本最新市占率 https://developer.android.com/about/dashboards/index.ht

    ml

    19

    Create a New Project

    20

  • Create a New Project

    21

    要等一段時間….

    Create a New Project 在 Android 的使用者介面設計世界中,大致上可區分成兩

    大區域,一為繼承 Actvitiy 類別之 Java 類別 ( Class ) 檔案、二為 Layout 之 XML 版面檔案。

    這種規劃一個掌管使用者介面的程式邏輯/流程控制,另一個掌管使用者介面的版面配置。

    一般而言,Layout 檔案名稱會以與其對應的 Activity 之Java 檔案名稱倒置命名。 比如 “ MainActivity “ 所對應的 Layout 之 XML 版面檔案名稱為

    “ activity_main “ 。 ”Title “ 欄位 ( 主畫面之標題 ) 係指主畫面的標題文字。

    22

    Create a New Project ”Menu Resource Name“ 欄位 ( 主畫面之選單檔案名稱 )

    係指配合主畫面的 Menu 之 XML 選單檔案名稱。 一般而言,其名稱會以 menu 單字開頭,後接 Activity 應用程式組

    件名稱中不含 “Activity”字眼的其餘單字 。比如 “ MainActivity “ 所對應的 Menu 之 XML 選單檔案名稱則多半為 “ menu_main “ 。

    23

    Create a New Project

    24

  • 預覽畫面出現奇怪現象

    如果預覽畫面出現奇怪現象,或是 Rendering Problems … 錯誤訊息

    25

    預覽畫面出現奇怪現象

    26

    預覽畫面出現奇怪現象

    27

    預覽畫面出現奇怪現象

    28

  • 預覽畫面出現奇怪現象

    29

    更換其他佈景試試看

    Create a New Project

    30

    Create a New Project

    31

    2-2 建立第一個Android應用程式 –步驟二:檢視與編輯Android應用程式檔案(Step1)

    Step 1:在「Project」視窗展開【app】下的【java】目錄,可以看到套件名稱,展開後按二下【MainActivity】開啟Java程式碼編輯器,如右圖所示:

  • 2-2 建立第一個Android應用程式 –步驟二:檢視與編輯Android應用程式檔案(Step1)

    setContentView(R.layout.activity_main): 顯示使用介面定義檔 activity_main.xml

    Android Studio 空白活動範本預設建立動作列選單 boolean onCreateOptionsMenu (Menu menu): Initialize the 

    contents of the Activity's standard options menu. This is only called once, the first time the options menu is displayed. The default implementation populates the menu with standard system menu items. 

    33

    2-2 建立第一個Android應用程式 –步驟二:檢視與編輯Android應用程式檔案(Step1)

    boolean onOptionsItemSelected (MenuItem item): This hook is called whenever an item in your options menu is selected. • The default implementation simply returns false to have the normal 

    processing happen (calling the item's Runnable or sending a message to its Handler as appropriate). You can use this method for any items for which you would like to do processing without those other facilities.

    34

    2-2 建立第一個Android應用程式 –步驟二:檢視與編輯Android應用程式檔案(Step4-5)

    Step 4 :專案預設開啟「app\res\layout」目錄下的【activity_main.xml】(按二下即可開啟),和以使用介面設計工具(Designer Tool)來開啟,因為已經開啟,請選上方【activity_main.xml】標籤切換至此檔案。

    Step 5:選下方【Text】標籤切換至XML標籤碼檢視,如下圖所示:

    2-2 建立第一個Android應用程式 –步驟二:檢視與編輯Android應用程式檔案(Step4-5)

    36

  • 2-2 建立第一個Android應用程式 –步驟二:檢視與編輯Android應用程式檔案(Step4-5)

    37

    Design Mode

    38

    BluePrint Mode

    39

    Design and BluePrint Mode

    40

  • 2-2 建立第一個Android應用程式 –步驟二:檢視與編輯Android應用程式檔案(Step6)

    Step 6:Enter Design mode, Select “Hello World! ” Textview

    2-2 建立第一個Android應用程式 –步驟二:檢視與編輯Android應用程式檔案(Step7)

    Run!!

    42

    2-2 建立第一個Android應用程式 –步驟二:檢視與編輯Android應用程式檔案(Step6)

    43

    寫死了!

    2-2 建立第一個Android應用程式 –步驟二:檢視與編輯Android應用程式檔案(Step6)

    44

  • 2-2 建立第一個Android應用程式 –步驟二:檢視與編輯Android應用程式檔案(Step6)

    45

    2-2 建立第一個Android應用程式 –步驟二:檢視與編輯Android應用程式檔案(Step6)

    46

    2-2 建立第一個Android應用程式 –步驟二:檢視與編輯Android應用程式檔案(Step6)

    47

    按兩下!

    2-2 建立第一個Android應用程式 –步驟二:檢視與編輯Android應用程式檔案(Step6)

    48

  • 2-2 建立第一個Android應用程式 –步驟二:檢視與編輯Android應用程式檔案(Step6)

    49

    2-2 建立第一個Android應用程式 –步驟二:檢視與編輯Android應用程式檔案(Step6)

    Run!

    50

    2-2 建立第一個Android應用程式 –步驟二:檢視與編輯Android應用程式檔案(Step6)

    直接在 java 程式內改

    51

    2-2 建立第一個Android應用程式 –步驟二:檢視與編輯Android應用程式檔案(Step6)

    52

  • 2-2 建立第一個Android應用程式 –步驟二:檢視與編輯Android應用程式檔案(Step6)

    53

    2-2 建立第一個Android應用程式 –步驟二:檢視與編輯Android應用程式檔案(Step9-10)

    Step 9:我們準備更改應用程式名稱和顯示字串,請更改【app_name】的標籤內容,從【Ch3_1】改成【Android範例一】。

    AndroidManifest.xml

    55

    把滑鼠游標移到上面

    AndroidManifest.xml

    56

    點下去!

  • AndroidManifest.xml

    57

    2-2 建立第一個Android應用程式 –步驟二:檢視與編輯Android應用程式檔案(Step11)

    Step 11:展開「app\res\menu」目錄,在【menu_main.xml】上執行【右】鍵快顯功能表的【Delete】指令刪除此檔,此檔案是動作列選單項目的定義檔(目前我們不會使用到,進一步說明請參閱第7章),如右圖所示:

    2-2 建立第一個Android應用程式 –步驟二:檢視與編輯Android應用程式檔案(Step12)

    Step 12:Android Studio預設會自動儲存內容變更,我們也可以執行「File/Save All」指令,儲存專案所有編輯過的內容變更。

    2-2 建立第一個Android應用程式 –步驟三:編譯與執行Android應用程式(Step1)

    Step 1:請執行「Run/Run ‘app’」指令或按Shift‐F10鍵。

  • 2-2 建立第一個Android應用程式 –步驟三:編譯與執行Android應用程式(Step1)

    Step 1:請執行「Run/Run 'app'」指令或按Shift‐F10鍵,稍等一下,可以看到「Choose Device」對話方塊。

    2-2 建立第一個Android應用程式 –步驟三:編譯與執行Android應用程式(Step2-3)

    Step 2:因為尚未啟動模擬器,請選下方【Launch emulator】,然後選擇建立的模擬器,以此例是【Nexus 5 API 21 x86】,按【OK】鈕啟動模擬器。

    Step 3:啟動模擬器需花費一些時間,等到完成啟動和安裝Android應用程式,在解鎖後,可以看到執行結果,如右圖所示:

    2-2 建立第一個Android應用程式 –步驟三:編譯與執行Android應用程式(Step1)

    63

    螢幕的密度 (Density) 密度是指單位長度中有多少像素,通常以 dpi (dot per

    inch,每英吋有多少像素) 表示。

    手機螢幕種類繁多,密度也不盡相同。同樣是 3.4 吋的螢幕,480x800 像素就比 240x432 像素的密度高。

    密度越高能顯示出越細緻的圖形或文字,相對的也必須準備越高的解析度的圖檔,才能充分顯示出同樣大小的圖形較細緻的效果。

    64

  • 螢幕的密度 (Density) Google 將螢幕密度分為六等級

    65

    密度等級 密度範圍

    ldpi (low dpi) ~ 120 dpimdpi(medium) ~ 160 dpihdpi(high) ~ 240 dpixhdpi(extra-high) ~ 320 dpixxhdpi(extra-extra-high) ~ 480 dpixxxhdpi(extra-extra-extra high) ~ 640 dpi

    2-2 建立第一個Android應用程式 –步驟三:編譯與執行Android應用程式(Step1)

    66

    2-2 建立第一個Android應用程式 –步驟三:編譯與執行Android應用程式(Step1)

    67

    2-2 建立第一個Android應用程式 –步驟三:編譯與執行Android應用程式(Step1)

    68

  • 2-2 建立第一個Android應用程式 –步驟三:編譯與執行Android應用程式(Step1)

    69

    2-2 建立第一個Android應用程式 –步驟三:編譯與執行Android應用程式(Step1)

    70

    Run

    71

    2-3 建立第二個Android應用程式 – 說明

    在本節的第二個範例,筆者準備說明如何建立「事件驅動程式設計」(Event‐driven Programming)的Android應用程式。

    事件驅動程式設計的執行流程需視使用者的操作而定,如同百貨公司開門後,需要等到客戶上門後,才有銷售流程的產生,所以,客戶上門就是觸發事件,應用程式依事件來執行適當的處理。

    例如:在Windows作業系統啟動【記事本】後,程式需要等到使用者執行功能表的「格式/字型」指令後,才會顯示「字型」對話方塊,等到按下【確定】鈕才完成字型的設定。

  • 2-3 建立第二個Android應用程式 – 範例

    在第二個Android應用程式範例筆者準備使用介面設計工具來建立使用介面,我們準備在螢幕刪除預設TextView元件後,新增1個TextView和2個Button元件,然後撰寫2個按鈕元件的事件處理方法(Methods,即其他語言的程序),當使用者按下第1個按鈕,可以顯示計數的增加,按第2個按鈕則是歸零。

    2-3 建立第二個Android應用程式 –步驟一:新增Android Studio專案(Step1-2)Step 1:請啟動Android Studio,可以開啟上一節Ch2_2專案,請執行「File/New Project」指令,可以看到「Create New Project」精靈畫面。

    Step 2:在各步驟的精靈畫面依序輸入專案資訊,如下表所示:

    專案欄位 欄位值

    Application name Ch2_3Company Domain hueyan.example.com

    Project location 「C:\Android\Ch02\Ch2_3」Minmnm SDK API 15: Android 4.03活動範本 Basic Activity

    Activity Name MainActivityLayout Name activity_main

    2-3 建立第二個Android應用程式 –步驟一:新增Android Studio專案(Step3-4)Step 3:按【Finish】鈕建立專案,可以在全新的主視窗建立專案,我們可以看到新建的專案目錄。

    Step 4:請參考第2‐2節步驟二刪除動作列選單的相關程式碼和檔案。

    2-3 建立第二個Android應用程式 –步驟二:在版面配置檔新增介面元件(Step1) Step 1:請展開【app\res\layout】,按二下【content_main.xml】開啟介面設計工具,可以在右上方「Component Tree」元件樹視窗看到預設RelativeLayout版面配置元件和之下的TextView元件(位在版面配置元件中),如下圖所示:

  • 2-3 建立第二個Android應用程式 –步驟二:在版面配置檔新增介面元件(Step2)Step 2:我們準備重頭開始建立,請選TextView元件,在其上執行【右】鍵快顯功能表的【Delete】指令刪除此元件。然後按右上方加號圖示放大螢幕顯示。

    2-3 建立第二個Android應用程式 –步驟二:在版面配置檔新增介面元件(Step3)Step 3:在「Palette」工具箱選【Large Text】即大字型TextView元件後,拖拉至螢幕上的插入位置,在上方會顯示編排資訊,alignParentLeft是靠父元件左邊;Top是靠上,距離上方間距margin是40dp。

    2-3 建立第二個Android應用程式 –步驟二:在版面配置檔新增介面元件(Step3) No Large Text widget in Android Studio 2.2

    79

    2-3 建立第二個Android應用程式 –步驟二:在版面配置檔新增介面元件(Step3)

    80

  • 2-3 建立第二個Android應用程式 –步驟二:在版面配置檔新增介面元件(Step3)

    81

    2-3 建立第二個Android應用程式 –步驟二:在版面配置檔新增介面元件(Step3)

    82

    2-3 建立第二個Android應用程式 –步驟二:在版面配置檔新增介面元件(Step4)Step 4:然後在【Widgets】區段,拖拉【Button】元件至

    TextView之下,即below;間距40dp。

    2-3 建立第二個Android應用程式 –步驟二:在版面配置檔新增介面元件(Step5)Step 5:新增第2個【Button】元件,toRightOf是位在第1個

    Button元件的右方;間距32dp,可以看到我們建立的使用介面。

  • 2-3 建立第二個Android應用程式 –步驟三:更改介面元件的屬性(Step1)Step 1:按二下TextView元件,可以看到浮動視窗顯示的2個

    常用屬性(我們一樣可以在「Properties」視窗編輯屬性),在【text】屬性輸入【0】;【id】屬性輸入【lblOutput】,如下圖所示:

    2-3 建立第二個Android應用程式 –步驟三:更改介面元件的屬性(Step2)Step 2:按二下Button元件,在【text】屬性輸入標題文字【增加計數】,如下圖所示:

    2-3 建立第二個Android應用程式 –步驟二:在版面配置檔新增介面元件(Step3)

    87

    Step 3:按二下第2個Button元件,在【text】屬性輸入標題文字【計數歸零】。

    2-3 建立第二個Android應用程式 –步驟三:更改介面元件的屬性(Step3-4) Step 4:選第1個【Button】元件,在右下方「Properties」

    視窗找到【onClick】屬性,輸入屬性值【button_Click】。

  • 2-3 建立第二個Android應用程式 –步驟三:更改介面元件的屬性(Step5)Step 5:選第2個【Button】元件,在「Properties」視窗找到

    【onClick】屬性,輸入屬性值【button2_Click】。

    2-3 建立第二個Android應用程式 –步驟四:在活動類別新增Button元件的事件處理方法(Step1)

    Step 1:請展開「java」資料夾,按二下【MainActivity.java】開啟Java類別程式碼編輯器,輸入事件處理方法的程式碼,如下圖所示:

    2-3 建立第二個Android應用程式 –步驟四:在活動類別新增Button元件的事件處理方法(Step2-3)

    Step 2:首先在MainActivity類別輸入事件處理的button_Click()和button2_Click()兩個方法,如下所示:public void button_Click(View view) {}public void button2_Click(View view) {}

    Step 3:在輸入方法參數View view時,可以看到View是紅色字,表示有錯誤,同時看到浮動視窗的說明,因為沒有匯入android.view.View類別,請按Alt‐Enter鍵,讓Android Studio自動匯入此類別。

    2-3 建立第二個Android應用程式 –步驟四:在活動類別新增Button元件的事件處理方法(Step4)

    Step 4:在程式碼編輯器輸入事件處理的程式碼,如下所示:01: public void button_Click(View view) {02:    int count;03:    TextView output = (TextView) findViewById(R.id.lblOutput);04:    count = Integer.parseInt(output.getText().toString());05:    count++;06:    output.setText(Integer.toString(count));07: }08:09: public void button2_Click(View view) {10:    TextView output = (TextView) findViewById(R.id.lblOutput);11:    output.setText("0");12 }

  • 2-3 建立第二個Android應用程式 –步驟四:在活動類別新增Button元件的事件處理方法(Step5)

    Step 5:Android Studio預設會自動儲存內容變更,我們也可以自行執行「File/Save All」指令,儲存專案所有編輯過的內容變更。

    2-3 建立第二個Android應用程式 –步驟五:編譯與執行Android應用程式(Step1)

    Step 1:請執行「Run/Run 'app'」指令或按Shift‐F10鍵,稍等一下,可以看到「Choose Device」對話方塊。

    2-3 建立第二個Android應用程式 –步驟五:編譯與執行Android應用程式(Step2-3)

    Step 2:因為上一節已經啟動模擬器,請選【Choose a running device】的【Nexus 5 API 21 x86】,按【OK】鈕選擇執行的模擬器。

    Step 3:等到完成Android應用程式安裝,就可以看到執行結果,如下圖所示:

    練習: 改成用事件處理方式執行

    Q:如何寫?兩者有何差別?

    96

  • 事件處理寫法

    在兩個按鈕的使用者元件屬性設定時,不用在 onClick 屬性上設定處理的函式。

    public class MainActivity extends AppCompatActivity {private TextView lblOutput;private Button button, button2;

    @Overrideprotected void onCreate(Bundle savedInstanceState) {

    super.onCreate(savedInstanceState);setContentView(R.layout.activity_main);……………….lblOutput = (TextView) findViewById(R.id.lblOutput);

    button= (Button) findViewById(R.id.button);button2=(Button) findViewById(R.id.button2);

    97

    事件處理寫法

    button.setOnClickListener(new View.OnClickListener(){

    @Overridepublic void onClick(View v) {

    int count=Integer.parseInt(lblOutput.getText().toString());count++;lblOutput.setText(Integer.toString(count));

    }});

    button2.setOnClickListener(new View.OnClickListener(){

    @Overridepublic void onClick(View v) {

    lblOutput.setText(Integer.toString(0));}

    });

    }}

    98

    2-4 Android Studio的使用介面

    2‐4‐1 Android Studio歡迎視窗 2‐4‐2 主視窗 2‐4‐3 程式碼編輯器 2‐4‐4 介面設計工具

    2-4-1 Android Studio歡迎視窗

    當啟動Android Studio,如果上一次啟動並沒有開啟專案,或已經關閉專案,就會看到「Android Studio」歡迎視窗。

  • 2-4-2 主視窗 - 主視窗的使用介面

    Android Studio的主視窗是對應專案,如果同時開啟多個專案,每一個專案都是一個獨立的主視窗,例如:Ch2_3專案,如下圖所示:

    2-4-2 主視窗 - 主視窗的專案管理

    在Android Studio主視窗提供相關指令來新增、開啟和關閉專案,我們可以執行「File/New Project」指令建立新專案(詳見第2‐3節)。在主視窗執行「File/Open」指令開啟存在專案,可以看到「Open File or Project」對話方塊。

    2-4-3 程式碼編輯器 – 說明

    程式碼編輯器(Code Editor)是一個標籤頁視窗,可以用來編輯文字模式的Java程式碼和XML文件的標籤碼,如下圖所示:

    2-4-3 程式碼編輯器 –顯示程式碼前的行列號

    在程式碼編輯器最前面的直行是用來顯示相關資訊和控制圖示,如果沒有看到行列號,請執行滑鼠【右】鍵快顯功能表的【Show Line Numbers】指令顯示行列號(只對目前的編輯的檔案有效),如下圖所示:

  • 2-4-3 程式碼編輯器 –自動程式碼完成

    Android Studio程式碼編輯器支援自動程式碼完成(Code Completion),只需輸入名稱後,再輸入「.」符號,就可以顯示相關類別、物件、方法和屬性清單。例如:輸入System,再輸入「.」,就會顯示建議清單,只需按二下,即可輸入所需的Java程式碼,如下圖所示:

    2-4-3 程式碼編輯器 –顯示程式碼錯誤和即時分析結果

    在程式碼編輯視窗輸入程式碼時,如果有錯誤,錯誤的程式碼或關鍵字下方會顯示紅色鋸齒線來表示有錯誤,同時在檔案和此檔案的目錄名稱下也都會顯示紅色鋸齒線,如下圖所示:

    2-4-4 介面設計工具 –Design設計模式 在Android Studio開啟activity_main.xml檔案,預設是使用

    Design設計模式來編輯使用介面,如果沒有,請點選左下角【Design】標籤,如下圖所示:

    2-4-4 介面設計工具 –Text文字模式 點選左下角【Text】標籤可以切換至文字模式,讓我們直

    接輸入XML標籤碼來編輯活動的版面配置,如下圖所示:

  • 2-5 Android Studio專案結構

    2‐5‐1 Android檢視 2‐5‐2 Project檢視 2‐5‐3 Packages檢視

    2-5 Android Studio 專案結構

    Android Studio專案預設擁有多個目錄、子目錄和檔案,因為Android Studio工具預設使用Gradle建構工具(Build Toolkit)。

    Gradle 是一套自動化建構工具,可以幫助我們建構和管理Android Studio 專案,定義如何建構 Android Studio 專案。

    檢視方式

    2-5 Android Studio 專案結構

    111

    2-5-1 Android 檢視 – 說明

    Android Studio工具預設Android檢視的專案結構,以Ch2_3專案為例,如右圖所示:

    應用程式專案結構是由一至多個模組所組成。app 根目錄就是模組。下方的 Gradle Scripts 目錄是建構工具所需的 Scripts 腳本檔,定義如何建構 app 模組。

  • 2-5-1 Android檢視 – app\manifests目錄

    位在此目錄下的AndroidManifest.xml檔案是十分重要的檔案,提供Android作業系統所有應用程式的基本資訊,一個功能清單。不同於Windows作業系統,Android作業系統需要透過 AndroidManifest.xml檔案先認識這個應用程式,才能知道如何執行此應用程式。其主要提供的資訊有:

    • 應用程式的完整名稱(包含Java套件名稱),一個唯一的識別名稱,可以讓Android作業系統和Google Play找到此應用程式。

    • 應用程式包含的活動、內容提供者、廣播接收器和服務元件。

    • 宣告應用程式執行時需要的權限,例如:存取網路和GPS等。

    • 應用程式的目標和最小需求的API層級。

    2-5-1 Android檢視 – app\manifests目錄

    114

    2-5-1 Android 檢視 – app\java目錄

    位在此目錄下是Java類別的原始程式碼檔案(.java),分別位在套件com.example.hueyan.ch2_3對應的路徑下,展開套件可以看到之下的Java檔案清單,以此例是MainActivity.java,即Android應用程式活動類別的Java程式碼檔。

    2-5-1 Android 檢視 – app\res目錄

    位在此目錄下是一些資源子目錄,內容是Android應用程式使用到的資源檔案,常用子目錄的說明,如下表所示:

    子目錄 內容說明

    anim 定義動畫效果的XML檔color 定義色彩清單的XML檔

    drawable 在目錄下是不同尺寸的JPEG或PNG格式圖檔案,ic_launcher.png是啟動圖示,hdpi是72x72點;mdpi是48x48點;xhdpi是96x96點;xxhdpi是144x144點,可以使用在高

    、中和低不同解析度的行動裝置螢幕

    layout 定義使用介面版面配置的XML檔,例如:activity_main.xmlmenu 顯示應用程式選單的XML檔raw 不需要壓縮的原始資料檔案,例如:視訊檔

    values 定義程式使用的陣列、字串、尺寸、色彩和樣式的常數值,例如:dimes.xml是尺寸、strings.xml是字串和styles.xml是樣

  • 2-5-2 Project 檢視 – 說明

    Project檢視的 Android Studio專案結構,以Ch2_3專案為例,如右圖所示:

    2-5-2 Project 檢視 – 主要目錄的說明

    \.idea目錄:在此目錄擁有多個子目錄,這些內容都是IntelliJ IDEA使用的內部資訊。The .idea directory contains a set of configuration files (.xml). Each file contains only a portion of configuration data pertaining to a certain functional area which is reflected in the name of a file, for example, compiler.xml, encodings.xml, modules.xml.• .idea is used for both project build configuration (dependencies 

    declaration) and project settings (inspections, etc.). \app\build目錄:在此目錄下是建構產生的檔案

    • 例如:「R.java」是 Android自動產生的資源檔,位在「\app\build\generated\source\r\debug\your packagename\project name\」目錄下的套件名稱下。

    R.java

    119

    R.java

    其中第1‐6行是系統自動生成的注釋,說明這是AAPT工具通過它找到的資源數據自動生成的文件,它不能被手動修改(因為你修改了也沒用,每次重新生成都會被覆蓋)。• AAPT也就是Android Asset Packaging Tool,即Android資源打包工具

    ,通常都是由IDE自動調用,我們不需要手動去使用。 以下就是AAPT自動生成的代碼了,該類的名字就是R,其

    下定義了一些常量。我們可以把R.java理解成資源字典,記錄著所有可使用資源的ID。通過這些ID,我們就可以很方便的在程式中使用這些資源了。• 在java 程式中使用: 這個很簡單,我們在前面的例子中已經使用過

    ,直接用 R.id.資源ID 就可以使用到(這裡演示的是標識符下的資源,如果是字符串資源,就是 R.string.資源ID,請自行理解)

    120

  • 2-5-2 Project 檢視 – 主要目錄的說明

    • 在XML文件中引用:在XML文件中引用,我們只需要要照著「@/」來訪問即可,比如 string資源下默認定義了一個 app_name的資源我們就可以這樣調用「@string/app_name」

    \app\src\main目錄:在此目錄的內容就是對應 Android檢視下的 java和 res目錄,比較特別的是 res目錄依不同解析度分成多個子目錄。

    121

    2-5-3 Packages 檢視 – 說明

    Packages檢視的Android Studio專案結構是以套件來分類顯示目錄結構和檔案,以Ch2_3專案為例,如右圖所示:

    2-5-3 Packages檢視 – 目錄說明

    android.support.v7.appcompat套件 Android支援函數庫(Android Support Library)套件,此套

    件的目的是讓舊版 Android 可以相容使用新版功能,在v7 appcompat函數庫新增支援動作列(Action Bar)和Material Design 使用介面實作。

    com.example.hueyan.ch2_3套件 專案的應用程式套件,展開可以看到MainActivity.java和

    R.java檔案,R.java是Android Studio自動依據專案資源建立的索引類別檔,使用者並不允許更改檔案內容。