Download presentation
Presentation is loading. Please wait.
2
Android ADT + Android SDK Eclipse Eclipse 編輯器 JAVA JAVA 開發工具
3
套件 JAVA 開發工具包 (Java Development Kit, JDK) http://www.oracle.com/technetwor k/java/javase/downloads/index.htm l Eclipse 整合開發環境 (Integrated Development Environment, IDE) http://www.eclipse.org/downloads/ Eclipse 專用之 Android 開發工具外掛 (ADT Plugin for Eclipse ) https://dl- ssl.google.com/android/eclipse/ Android 軟體開發工具包 (Software Development Kit, SDK) http://developer.android.com/sdk/i ndex.html
4
Android 模擬器 (AVD) Android 軟體開發工具包 ( SDK) Eclipse 專用之 Android 開發工具外掛 (ADT) Eclipse 整合開發環境 (IDE) JAVA 開發工具包 (JDK)
5
Eclipse 是一個開發平台,要在 Eclipse 中撰寫任 何一種程式語言,必須依靠外掛套件。 Eclipse 利用 Android 開發工具外掛 (ADT Plugin for Eclipse ) 將 Android SDK 整合至 Eclipse 整合 環境中。
8
Application name :此指的是 Android 手機應用程 式的標題名稱,當手機用戶執行 Android 手機應用 程式時,它會顯示在畫面的最上方。當手機用戶 關閉 Android 手機應用程式後,它會顯示在該 Android 手機應用程式桌面圖示的下方。 Project name : Project name 指的是專案的名稱。 這個名稱同時也會成為該專案的檔案資料夾名稱。 在此要注意的是,請您務必以英文命名,名稱中 不要有空格或其它符號,但可以包括英文大小寫。 比如 ”HelloMyAndroid” 。 Package name :此指的是 Android 手機應用程式 的套件名稱。如果您先前有過 Java 應用程式開發 的經驗,對此應該不陌生。 Java 為了讓應用程式 之間彼此不衝突,因此,設置了套件名稱的機制。 每一個 Java 應用程式都需要取一個獨特且唯一的 套件名稱,以方便識別與呼叫取用。 Android 手機應用程式在此的命名規則與其它 Java 應用程式的 Package name 一致。亦即您只能使用 小寫英文字母命名,並且至少要以兩個英文單字 組成,每個英文單字之間以. 做為間隔。這個以 專業術語來說,就是該名稱要為域名格式 (domain-style) 。
16
每一個 Android 手機應用程式專案的最上層目錄 基本上包括了 src 、 gen 、 Android API 、 assets 與 res 五個子目錄,以及 AndroidManinfest.xml 、 default.properties 兩個檔案
17
專案名稱 src 存放所有 java 程式原 始碼 gen 存放所有自動產生的 檔案,最重要為 R.java Android 版本 列出 Android SDK 可 用類別 assets 存放不產生索引的外 部資源 resdrawable 存放圖片、圖示檔案 資源 layout 存放介面設定的 xml 檔 values 存放參數設定的 xml 檔
18
src 目錄是存放著您所撰寫的所有 Java 原始程式 碼檔案。當然也包括了動作程序 (Activity) 的 Java 原始程式碼檔案 ( 如下圖紅框處所示 ) 。
19
gen 目錄裡頭則存放著一些由 Android 開發工具 (ADT) 所自動產生的檔案。包括先前已說過的 R.java 等檔案 ( 如下圖紅框處所示 ) 。
20
R.java 檔案主要是負責 res 目錄下的資源檔案索引工 作。 每當開發者在 res 目錄增加一個資源檔案時,在 R.java 檔案當中就會相對地自動配置一個索引代號 給它,以便開發者得以在應用程式當中做呼叫的動 作。 R.java 中自動產生的 「 R 」 類別就像是個字典一 樣,包含了使用者介面、圖像、字串等各式的資源 與相應的編號 (id) 。 Android 應用程式中很多時候 會需要透過 R 類別調用資源。 編譯時編譯器也會 查看這個資源列表,沒有使用到的資源就不會編譯 進去,為手機應用程式節省不必要佔用的空間。
21
更進一步地說, R.java 檔案裡頭含有名稱為 R 的 Java 類別 (Class) ,因此,您可以在程式碼當中 運用這個類別所定義的相關資源進行開發工作。 這些相關資源包括了字串變數 (String) 、畫面配 置 (layout) 、圖片檔案 (drawable) 等 … 。 在此要特別注意的是,由於 R.java 檔案只能由 Android 開發工具 (ADT) 自動變更,請您切記不 要去自行變動該程式碼。
22
Android API 目錄裡頭的所有類別是源自 Android SDK 檔案資料夾當中的 android.jar 檔案。 當您在建立新的 Android 手機應用程式專案時, 會設定 Build Target 的 Android API 版本,此動作 便是直接對應至 Android API 中。
23
在 Android 手機應用程式專案中有兩個目錄,是 提供給開發者存放資源檔案之用 ( 如圖片檔、音 樂檔或者影片檔等 …) 。一是 assets 目錄、二為 res 目錄。相對於 res 目錄來說, Android 開發工 具 (ADT) 並不會為 assets 目錄裡頭的檔案在 R.java 當中產生一個索引代號,而是開發者必 須在程式碼當中指定 Assets 目錄的檔案路徑與 檔案名稱。 必須直接使用完整的路徑及檔案名稱。
24
相對於 assets 目錄來說, Android 開發工具 (ADT) 會為 res 目錄裡頭的檔案在 R.java 當中產 生一個索引代號,開發者可以直接透過 R 類別 來使用裡頭的檔案。 另外, res 目錄初始不是空的,它會存放 Android 開發工具 (ADT) 自動產生的圖示檔案 (icon files) 、畫面配置 XML 檔案 (layout XML files) 以及字串變數 XML 檔案 (String XML File) 。 也能直接通過 Java 來建立使用者介面,不過 透過 XML 描述檔來建立使用者介面相對更簡單, 架構也更清晰,以後維護時更容易釐清問題。
25
特別是圖示檔案的部份, Android 開發工具 (ADT) 還會自動產生高、中、低解析度 (dpi) 的 圖示,以供不同的手機環境使用。 將繪好的 mdpi 圖形,丟進 drawable - mdpi , 如果程式發現現在使用的手機,是 ldpi 或 hdpi 時,系統會自動去換算放大或縮小,也不會讓 原本設計給 mdpi 的圖片尺寸,在 hdpi 或 ldpi 中 跑版。 res 檔案資料夾裡頭的畫面配置 XML 檔案 res 檔案資料夾裡頭的字串變數 XML 檔案
26
AndroidManifest.xml 是 Android 手機應用程式 專案裡頭必備的檔案之一。 該檔案主要記載了應用程式專案的套件名稱 (Package name) 、專案版本代號、專案的應用 程式組件資料 ( 含 Activities 、 Services 、 Broadcast receivers 以及 content providers) 、 應用程式權限資料以及其它與應用程式相關的 屬性資料。
27
你可以在此指定你的應用程式會使用到的服務 ( 諸如電話功能、網路功能、 GPS 功能等 ) 。 上述這些資料都是 Android 手機應用程式專案之 中最重要的基本資訊。 因此, AndroidManifest.xml 雖然不是主要程式 碼,但每一個 Android 手機應用程式專案都不能 沒有它。
28
default.properties 是 Andorid 開發工具 (ADT) 自 動產生的檔案,它和 R.java 檔案一樣都不允許 開發者自行變更。 此檔案主要是記載著 Android 手機應用程式專案 所使用的 Android API 版本。
29
Android 系統將資源分為索引資源 (res) 與非索引 資源 (assets) 。 對於較常用的資源就對其建立一個索引值,索 引值是一個整數。 如此在要使用該資源時,只要取用對應的資源 索引即可。 資源索引不但在取用的語法上較為方便,也可 節省記憶體。 因為重複使用資源時,在記憶體只有儲存一份, 也可提升效率。
30
在 xml 檔案中取用的語法為: @ 類別名稱 / 欄位名稱 如在 檔中要使用 檔圖 片資源,語法為: @drawable/ic_launcher 在 java 檔案中取用的語法為: R. 類別名稱. 欄位名稱 如在 檔中要使用 檔 圖片資源,語法為: R.drawable.ic_launcher
32
View 類別簡介 此為所有視覺化控制項的基礎類別,主要是提供控制 項繪製和事件處理的方法。建立用戶介面所使用的控 制項都繼承自 View ,如 TextView 、 Button 、 CheckBox 等。 關於 View 及其子類別的相關屬性,既可設定於版面配 置 XML 檔中,也能以成員方法在程式碼中動態設定。 View 類別常用的屬性及其對應方法如表所示。
33
View 類別簡介
34
ViewGroup 類別簡介 ViewGroup 的子控制項既能是普通的 View ,也可以是 ViewGroup 。 Android 的一些進階控制項,例如 Galley 、 GridView 等都繼承自 ViewGroup 。 與 Java SE 不同, Android 並沒有設計版面配置管理器, 而是為每種不同的版面配置提供一個 ViewGroup 的子 類別,常用的版面配置及其類別結構如圖所示。
35
Android 的 UI 界面都是由 View 和 ViewGroup 及其派 生類組合而成的。 其中, View 是所有 UI 組件的基類,而 ViewGroup 是 容納這些組件的容器,其本身也是從 View 派生出來 的。 很多基本的控件 Widget 如: ImageView , TextView 等都是直接從 view 派生下來
36
LinearLayout 類別簡介 線性版面配置是最簡單的版面配置之一,它提供控制 項水平或垂直排列的模型;同時,使用此版面配置時 還能透過控制項的 weight 參數掌握各個控制項在容器 中的相對大小。既可在版面配置檔 (XML) 設定 LinearLayout 版面配置的屬性,也可透過成員方法達成。 下表列出 LinearLayout 常用的屬性及對應的設定方法。
37
LinearLayout 類別簡介 線性版面配置是以 gravity 屬性設定控制項的對齊方式, gravity 可取的值及說明如下表所示。 範例 線性版面配置案例 操作步驟請見課本 P.3-4~P.3-7
38
TableLayout 類別簡介 TableLayout 類別以行、列形式管理控制項,每列為一 個 TableRow 物件,或者是 View 物件;當為 View 物件時, 將可跨越該列的所有行。 TableRow 可以添加子控制項, 每新增一個子控制項為一行 TableLayout 版面配置並不會為每一列、每一行或每個 單格繪製邊框,每一列擁有 0 或多個單格,每個單格為 一個 View 物件。 TableLayout 允許空的單格,而單格也 能像 HTML 中那樣跨越多行。
39
TableLayout 類別簡介 在表格版面配置中,一行的寬度由該行中最寬的單格 決定,而表格的寬度則是由父容器指定。 TableLayout 可以為行設定三種屬性: Shrinkable ,如果一行被標示為 Shrinkable ,代表寬度可進 行收縮,以使表格能夠適應父容器的大小 Stretchable ,如果一行被標示為 Stretchable ,表示寬度可 進行拉伸,以使填滿表格的空間 Collapsed ,如果一行被標示為 Collapsed ,則該行將被隱藏
40
TableLayout 類別簡介 TableLayout 繼承 LinearLayout 類別,除了擁有父類別 的屬性和方法之外, TableLayout 類別還包含表格版 面配置特有的屬性和方法,如下表所示。
41
RelativeLayout 類別簡介 相對版面配置中,子控制項的位置是相對於兄弟控制 項或父容器而決定的。其於效能考慮,設計相對版面 配置時要按照控制項之間的依賴關係排列,例如 View A 的位置是相對於 View B 來決定,則需要保證版面配置 檔中 View B 排在 View A 的前面。 相對版面配置用到的屬性很多,首先來看只為 true 或 false 的屬性值,如下表所示。
42
RelativeLayout 類別簡介 屬性值為其他控制項 id 的屬性,如下表所示。
43
RelativeLayout 類別簡介 屬性值以像素為單位的屬性及說明,如下表所示
44
FrameLayout 類別簡介 FrameLayout 框架版面配置在螢幕開闢出一塊區域, 並可添加多個子控制項,但是所有的子控制項都對齊 到螢幕的左上角。框架版面配置的大小由尺寸最大的 那個子控制項來決定,如果都一樣大,同一時刻只能 看到最上面的子控制項。 FrameLayout 繼承 ViewGroup 類別,除了擁有父類別 的屬性和方法, FrameLayout 還包含自己特有的屬性 和方法,如下表所示。
45
FrameLayout 類別簡介 FrameLayout 繼承 ViewGroup 類別,除了擁有父類別 的屬性和方法, FrameLayout 還包含自己特有的屬性 和方法,如下表所示。
46
AbsoluteLayout 類別簡介 所謂絕對版面配置,是指螢幕中所有控制項的擺放由 開發人員透過控制項的座標來指定,控制項容器不再 負責管理子控制項的位置。由於子控制項的位置和版 面配置都藉由座標來設定,因此 AbsoluteLayout 類別 並沒有提供特有的屬性和方法
Similar presentations