Android 教 學 2012/3/27 Presented by : Wun-ling E-mail: wunling@iir.csie.ncku.edu.tw Advisor: Dr. Chiang
大 綱 Android 介 紹 Android 環 境 設 定 應 用 程 式 架 構 Manifest 定 義 檔 資 源 檔 設 計 UI 元 件 設 計 硬 體 元 件 Sample 2012/3/27 2
What is Android? Android is Android was developed by a small startup company that was purchased by Mobile operating system Linux-derived platform Open source Based on JAVA It provided A lot of APIs Application framework 3
Android 發 展 史 (2003~) 2012/3/27 4
Google play is an online software store developed by Google for Android devices "Market" is preinstalled on most Android devices and allows users to browse and download apps published by third-party developers Users can also search for and read detailed information about apps from the Google play website: https://play.google.com/store 5
Some Interesting Applications on the Market Draw something 6
Some Interesting Applications on the Market LINE 2012/3/27 7
Some Interesting Applications on the Market Where s My Water? 2012/3/27 8
Some Interesting Applications on the Market Angry Birds 9
Some Interesting Applications on the Market Talking Tom 10
Some Interesting Applications on the Market Bouncy Mouse 2012/3/27 11
Some Interesting Applications on the Market O~Sport Bowling Song 12
Android 架 構
工 具 安 裝 我 們 需 要 安 裝 一 些 Android 開 發 環 境 所 需 的 程 式 工 具, 這 些 工 具 都 是 可 以 免 費 上 網 取 得 的 : JDK 5 或 JDK 6 Eclipse IDE, 一 個 多 用 途 的 開 發 工 具 平 台 ADT, 基 於 Eclipse 的 Android 開 發 工 具 擴 充 套 件 (Android Development Tools plugin) Android SDK,Android 程 式 開 發 套 件, 包 含 Android 手 機 模 擬 器 (Emulator)
Android 環 境 設 定
步 驟 1. JAVA: JDK http://www.oracle.com/technetwork/java/javase/downloads/index.html Java 環 境 設 定 -JRE JDK 環 境 變 數 設 定 2. Eclipse IDE: Eclipse IDE for Java Developers or Eclipse IDE for Java EE Developers http://www.eclipse.org/downloads/ 3. Android Development Tools plugin (ADT) 4. Android SDK: Android SDK Android Developers 5. Emulator setting 16
ADT 安 裝 ADT (Android Development Tooling) 進 入 Eclipse 中, 點 選 help>>>install new software
ADT Eclipse Help Install New Software 18
ADT 19
ADT 選 I accept >> finish
SDK 安 裝 什 麼 是 SDK SDK 是 Software Development Toolkit 的 簡 寫 當 我 們 用 某 種 電 腦 語 言 開 發 一 個 應 用 程 式 時, 除 了 我 們 會 用 到 那 個 語 言 所 提 供 的 API 之 外, 還 會 用 到 像 是 撰 寫 編 譯 執 行 除 錯 等 工 具, 而 這 些 東 西 全 部 合 起 來 就 叫 作 SDK
Android SDK http://developer.android.com/sdk/index.html 22
SDK 安 裝 選 window >> preferences
SDK 安 裝 左 邊 點 選 android >> 右 邊 browse 找 到 sdk 的 資 料 夾
SDK 安 裝 ( 續 )--- 補 充 說 明 如 果 未 來 遇 到 需 要 升 級 sdk 的 情 況, 可 以 參 考 這 個 補 充 說 明 選 window >> android SDK and AVD Manager
SDK 安 裝 ( 續 )--- 補 充 說 明 選 available packages 然 後 按 地 球 的 圖 案, 就 會 刷 新 目 前 可 下 載 的 檔 案, 勾 選 想 下 載 的 檔 案 然 後 再 按 install selected 就 會 自 行 裝 到 sdk 資 料 夾
設 定 模 擬 器 Windows >> android SDK and AVD Manager
設 定 模 擬 器 ( 續 ) 左 邊 選 virtual devices >> new
設 定 模 擬 器 ( 續 ) Name 輸 入 自 己 想 取 的 名 字 Target 選 擇 想 要 建 立 的 android 版 本 Create avd 即 可 建 立 好 模 擬 器
Emulator setting 30
Emulator setting 31
Emulator setting 32
Android 應 用 程 式 架 構
Android 應 用 程 式 架 構 接 下 來 的 部 份 會 先 簡 介 Android 的 應 用 程 式 元 件, 接 著 依 序 介 紹 各 應 用 程 式 元 件 的 生 命 週 期 何 謂 生 命 週 期? 應 用 程 式 元 件 都 具 有 生 命 週 期 從 Android 產 生 回 應 一 個 Intent 物 件 開 始, 到 實 際 被 釋 放 為 止 一 般 情 況 Android 應 用 程 式 是 由 以 下 四 種 元 件 所 組 成 的 : 活 動 (Activity) 服 務 (Service) 廣 播 接 收 器 (Broadcast Receiver) 內 容 提 供 器 (Content Provider)
Android 應 用 程 式 架 構 活 動 (Activity) 一 般 所 指 的 活 動 是 使 用 者 介 面 一 支 應 用 程 式 可 能 有 一 個 或 以 上 的 活 動 存 在, 每 個 活 動 也 都 會 有 自 己 的 View 所 有 的 活 動 在 系 統 裡 由 活 動 堆 疊 所 管 理, 當 一 個 新 的 活 動 被 執 行 後, 它 將 會 被 放 置 到 堆 疊 的 最 頂 端, 並 且 變 成 "running activity", 而 先 前 的 活 動 原 則 上 還 是 會 存 在 於 堆 疊 中, 但 它 此 時 不 會 是 在 前 景 的 情 況, 除 非 新 加 入 的 活 動 離 開
Intent Activity Activity communication Intent Give me money! Activity1 No~~ Result Activity2 36
Android 應 用 程 式 架 構 Activity s life cycle Active( 執 行 狀 態 ) Paused( 暫 停 ) Stopped( 停 止 ) 37
Android 應 用 程 式 架 構 程 式 的 生 命 週 期 (Life Cycle) 活 動 一 個 Activity 基 本 上 有 三 個 生 命 狀 態 : active 或 running Paused Stop 當 一 個 Activity 處 於 Pause 或 Stop 的 狀 態 時, 系 統 可 以 要 求 Activity 結 束 或 移 除 它, 當 它 再 度 呈 現 在 使 用 者 面 前 時, 要 能 完 整 的 重 新 啟 動 及 回 復 先 前 的 狀 態 應 用 程 式 存 在 與 否 並 非 由 應 用 程 式 所 自 行 決 定, 而 是 由 Android 系 統 透 過 運 行 機 制 決 定
Android 應 用 程 式 架 構 服 務 (Service) 服 務 是 在 背 景 長 時 間 運 行 的 應 用 元 件, 不 和 使 用 者 直 接 進 行 互 動 在 Android 應 用 程 式 裡, 有 一 種 沒 有 UI 的 類 別 (android.app.service), 稱 之 為 Service 簡 單 來 說,Service 是 一 個 Background process( 背 景 程 序 ), 透 過 背 景 程 序, 我 們 可 以 實 作 一 些 不 需 要 UI 的 功 能 例 如 : 某 服 務 可 能 在 後 台 播 放 音 樂, 而 用 於 在 執 行 其 他 的 操 作, 或 者 它 透 過 網 絡 抓 取 資 料 或 者 執 行 某 些 計 算, 將 結 果 提 供 給 活 動
Service 當 要 關 閉 Sevice 時, 可 以 再 抓 取 Service 資 訊 後 將 其 停 止 或 是 做 其 他 動 作 此 範 例 當 使 用 者 再 一 次 按 下 按 鈕 代 表 計 時 停 止, 此 時 會 stopservice 並 使 用 ondestroy, 在 此 Method 中 會 送 一 個 Message 訊 息 告 知 現 在 要 停 止 Timer, 此 時 會 設 定 TimerThread 中 的 stop 標 籤 讓 Timer 結 束 掉
Android 應 用 程 式 架 構 廣 播 接 收 器 (Broadcast Receiver) 廣 播 接 收 器 負 責 接 受 和 回 應 通 知, 很 多 通 知 源 自 於 系 統 所 發 送 的, 例 如 : 發 送 時 區 變 換 的 通 知, 電 池 電 量 不 足, 或 使 用 者 改 變 語 言 設 置 應 用 程 式 也 可 以 發 出 廣 播 通 知, 舉 例 來 說, 通 知 其 它 應 用 程 式, 資 料 已 下 載 完 畢, 可 供 使 用 應 用 程 式 可 以 擁 有 任 意 數 量 的 廣 播 接 收 器 來 接 收 任 何 的 通 知 另 外 也 可 以 啟 動 活 動 去 回 應 接 收 到 的 通 知, 或 利 用 通 知 管 理 器 (NotificationManager) 來 通 知 使 用 者
Android 應 用 程 式 架 構 內 容 管 理 器 (Content Provider) 內 容 管 理 器 將 應 用 程 式 資 料 組 合 成 特 定 的 集 合 供 其 它 應 用 程 式 使 用 資 料 可 以 是 儲 存 在 檔 SQLite 資 料 庫, 或 是 其 它 任 何 使 用 者 可 以 存 取 資 料 的 地 方 內 容 管 理 器 繼 承 於 內 容 管 理 器 基 礎 類 別, 並 實 作 一 組 標 準 的 方 法, 使 應 用 程 式 可 以 檢 索 和 儲 存 它 控 制 的 資 料 應 用 程 式 不 是 直 接 呼 叫 這 些 實 作 方 法 而 是 透 過 內 容 解 析 器 (ContentResolver) 對 象 呼 叫 方 法 內 容 解 析 器 能 夠 通 知 任 何 的 內 容 管 理 器, 並 可 以 參 與 這 些 內 容 管 理 器 行 程 間 的 管 理
Android Manifest 定 義 檔
Android Manifest 定 義 檔 Android Manifest 定 義 檔 是 一 個 用 來 描 述 應 用 程 式 整 體 資 訊 的 設 定 檔 每 個 應 用 程 式 都 需 要 AndroidManifest.xml, 它 提 供 了 應 用 程 式 必 要 資 訊 給 Android 系 統 使 用
Android Manifest 定 義 檔 在 圖 中 的 Android Manifest 設 定 畫 面 中, 顯 示 了 許 多 資 訊, 在 Links 的 選 項 也 有 Applications Permissions Instrumentation XML source Documentation 等 選 項, 點 選 XML Source 即 可 直 接 修 改 原 始 碼
Android Manifest 定 義 檔 此 定 義 檔 的 重 點 就 是 其 中 的 目 標 過 濾 器 (Intent Filters), 這 些 過 濾 器 描 述 了 什 麼 時 間 及 情 況 下 讓 Activity 啟 動 除 了 描 述 應 用 程 式 的 活 動 內 容 管 理 器 服 務 和 Intent 接 收 器, 也 可 以 在 AndroidManifest.xml 檔 中 指 定 權 限 和 安 全 控 制 測 試
Android Manifest 定 義 檔 需 要 注 意 的 一 些 通 用 事 項 : - 幾 乎 所 有 的 AndroidManifest.xml 檔 都 會 在 第 一 個 元 素 中 包 含 一 個 命 名 空 間 xmlns:android="http://schemas.android.com/apk/res/android" 該 定 義 使 得 標 準 Android 屬 性 可 在 該 檔 中 可 使 用, 這 些 屬 性 提 供 了 檔 中 的 xml 元 素 大 部 分 資 料 - 大 多 數 的 manifests 包 含 一 個 <application> 元 素, 該 元 素 定 義 了 這 個 程 式 內 所 有 應 用 層 面 上 可 用 的 元 件 和 屬 性 - 所 有 需 要 可 以 從 應 用 程 式 啟 動 器 (Program Launcher) 中 呈 現 給 使 用 者 的 高 層 應 用 都 至 少 要 包 括 一 個 活 動 (Activity) 元 件, 它 用 來 支 援 MAIN action 和 顯 示 在 LAUNCHER 目 錄 中
Android Manifest 定 義 檔 <manifest> 為 文 件 根 節 點, 描 述 了 程 式 的 所 有 內 容, 在 其 節 點 下 面 內 可 放 置 各 種 標 籤 : <uses-permission> <permission> <instrumentation> <application>
Debug Tool: Logcat Windows Show View 49
Android XML XML 50
An Example of XML 51
Android 資 源 檔 設 計
Android 資 源 檔 設 計 多 國 語 系 文 字 資 源 檔 - strings.xml 顏 色 設 定 資 源 檔 - colors.xml 尺 寸 定 義 資 源 檔 - dimens.xml 樣 式 資 源 檔 - styles.xml 視 窗 佈 局 資 源 檔 - layout\main.xml 動 畫 資 源 檔 - anim.xml 圖 檔 資 源 目 錄 - drawable
多 國 語 系 文 字 資 源 檔 多 國 語 系 文 字 資 源 檔 ( strings.xml) 一 開 始 從 最 常 使 用 的 文 字 資 源 檔 strings.xml 學 習 - 所 有 的 XML 文 件 開 頭 都 是 <?xml>, 裡 面 可 以 定 義 xml 版 本 及 編 碼 接 著 宣 告 <resources> 標 籤, 就 可 在 裡 面 使 用 <string> 標 籤 定 義 文 字 字 串 - <string> 標 籤 裡 面 則 使 用 name 屬 性 定 義 字 串 變 數 名 稱, 在 標 籤 之 間 可 加 上 自 串 內 容 - 另 外 <string> 標 籤 之 間 也 可 加 上 <b> <i> <u>, 為 文 字 加 上 粗 體 斜 體 底 線 的 效 果
Android 資 源 檔 設 計 可 以 在 JAVA 原 始 檔 中 使 用 這 些 變 數 : 用 法 :R.string. 字 串 名 稱 範 例 :CharSequence hello = getstring(r.string.hello);
Android 資 源 檔 設 計 可 以 讓 XML 資 源 文 件 使 用 字 串 資 源 : 用 法 :@string/ 字 串 名 稱 範 例 :android:app_name= @string/hello 其 他 XML 資 源 文 件 使 用 字 串 資 源, 需 要 使 用 前 置 符 號 @ 後 面 加 上 標 籤 名 稱 string 及 定 義 於 strings.xml 中 的 字 串 變 數 名 稱 @string/ 字 串 名 稱 => 例 如 :android:app_name= @string/hello
顏 色 設 定 資 源 檔 顏 色 設 定 資 源 檔 (colors.xml) 在 Android 中 的 顏 色 代 碼 類 似 網 頁 中 的 顏 色 代 碼, 都 是 採 用 16 進 位 的 方 式 Android 支 援 的 顏 色 語 法 有 :#RGB #ARGB #RRGGBB #AARRGGBB 四 種
顏 色 設 定 資 源 檔 在 res/values/ 底 下 新 增 colors.xml, 就 可 以 編 輯 並 使 用 <color> 標 籤 設 定 資 源 檔 先 設 定 <color> 標 籤 變 數 名 稱, 接 在 設 定 black 的 顏 色 代 碼
顏 色 設 定 資 源 檔 在 JAVA 原 始 檔 中 使 用 用 法 :R.color. 顏 色 常 數 名 稱 範 例 :getresources().getcolor(r.color.black); 在 XML 文 件 中 使 用 用 法 :@color/ 顏 色 變 數 名 稱 範 例 :android:titlecolor= @color/black
尺 寸 定 義 資 源 檔 尺 寸 定 義 資 源 檔 - dimens.xml 首 先 於 res/values 中 新 增 dimens.xml, 此 檔 案 可 針 對 字 串 個 別 設 定 字 型 大 小, 像 是 px in mm pt dp dip sp 等 等 尺 寸 px(pixel) mm(millimeter) in(inches) pt(points) dp&dip sp 以 畫 面 真 實 的 像 素 做 為 單 位 以 畫 面 的 毫 米 為 單 位 以 畫 面 的 英 吋 作 為 單 位 一 點 的 單 位 為 1/72 英 吋 相 對 於 160dpi 的 螢 幕 中 的 一 個 像 素 隨 著 螢 幕 大 小 改 變 的 一 個 像 素
尺 寸 定 義 資 源 檔 在 JAVA 原 始 檔 中 使 用 用 法 :R.dimen. 尺 寸 變 數 名 稱 範 例 :float dimen = getresource().getdiemnsion(r.dimne.px); 在 XML 文 件 中 使 用 用 法 :@dimen/ 尺 寸 變 數 名 稱 範 例 :android:textsize= @dimen/px
樣 式 資 源 檔 樣 式 資 源 檔 - styles.xml Style 資 源 檔 是 類 似 一 般 手 機 上 可 套 用 的 佈 景 主 題, 它 可 以 整 合 許 多 屬 性, 並 提 供 給 系 統 使 用 在 此 文 件 中 主 要 是 使 用 <style> 定 義 手 機 程 式 佈 局, 並 加 入 <item> 標 籤 作 細 部 設 定 Style 資 源 檔 是 類 似 一 般 手 機 上 可 套 用 的 佈 景 主 題, 它 可 以 整 合 許 多 屬 性, 並 提 供 給 系 統 使 用, 像 是 前 面 所 介 紹 的 <string> <color> <dimen> <drawable> 等 等 標 籤 在 此 文 件 中 主 要 是 使 用 <style> 定 義 手 機 程 式 佈 局, 並 加 入 <item> 標 籤 作 細 部 設 定
樣 式 資 源 檔 在 JAVA 原 始 檔 中 使 用 用 法 :R.style. 樣 式 變 數 名 稱 範 例 :settheme(r.style.newstyle); 在 XML 文 件 中 使 用 用 法 :@style/ 樣 式 變 數 名 稱 範 例 :android:theme= @style/newstyle
視 窗 佈 局 資 源 檔 視 窗 佈 局 資 源 檔 - layout\main.xml 在 Android 平 台 裡, 使 用 者 介 面 都 是 透 過 ViewGroup 或 View 類 別 來 顯 示,ViewGroup 和 View 是 Android 平 台 上 最 基 本 的 使 用 者 介 面 元 件 我 們 可 以 透 過 程 式 直 接 呼 叫 的 方 法, 或 是 使 用 XML 文 件, 來 描 述 使 用 者 介 面 在 Android 平 台 裡, 使 用 者 介 面 都 是 透 過 ViewGroup 或 View 類 別 來 顯 示,ViewGroup 和 View 是 Android 平 台 上 最 基 本 的 使 用 者 介 面 元 件 我 們 可 以 透 過 程 式 直 接 呼 叫 的 方 法, 描 繪 使 用 者 介 面, 將 螢 幕 上 顯 示 的 介 面 元 素, 與 構 成 應 用 程 式 的 程 式 邏 輯, 混 合 在 一 起 撰 寫
視 窗 佈 局 資 源 檔 在 JAVA 中 使 用 : 用 法 :R.layout. 佈 局 檔 案 名 稱 範 例 :setcontentview(r.layout.main);
動 畫 資 源 檔 動 畫 資 源 檔 - anim.xml 首 先 在 res 底 下 建 立 anim 資 料 夾, 並 在 資 料 夾 中 建 立 anim.xml 透 過 這 個 資 源 檔 可 以 達 成 程 式 裡 面 的 一 些 動 畫 效 果 Animation 主 要 有 兩 種 動 畫 模 式 : 一 種 是 漸 變 動 畫 (alpha scale), 另 一 種 是 轉 場 動 畫 (translate rotate) 首 先 在 res 底 下 建 立 anim 資 料 夾, 並 在 資 料 夾 中 建 立 anim.xml 透 過 這 個 資 源 檔 可 以 達 成 程 式 裡 面 的 一 些 動 畫 效 果, 包 括 文 字 按 鈕 對 話 方 塊 等 等 具 備 旋 轉 翻 轉 的 功 能, 這 些 動 作 就 必 須 透 過 anim.xml 來 完 成 動 畫 資 源 檔 的 標 籤 為 <set>, 在 其 中 可 以 設 定 的 有 <alpha> <scale> <translate> <rotate> 標 籤 設 定 動 畫 效 果
動 畫 呈 現 - Animation 關 於 動 畫 的 實 現,Android 提 供 了 Animation, 在 Android SDK 介 紹 了 2 種 Animation 模 式 Tween Animation 通 過 對 場 景 裡 的 對 像 不 斷 做 圖 像 變 換 ( 平 移 縮 放 旋 轉 ) 產 生 動 畫 效 果, 即 是 一 種 漸 變 動 畫 Frame Animation 順 序 播 放 事 先 做 好 的 圖 像, 是 一 種 畫 面 轉 換 動 畫 Android 的 animation 由 四 種 類 型 組 成 Alpha Scale Translate Rotate
動 畫 資 源 的 使 用 方 法 : 動 畫 資 源 檔 首 先 要 引 入 相 關 的 Package, 加 入 android.view.animation.animationutils; 在 JAVA 中 使 用 : 用 法 :R.anim. 動 畫 資 源 檔 名 稱 範 例 :AnimationUtils.loadAnimation(this, R.anim.anim);
圖 檔 資 源 目 錄 圖 檔 資 源 目 錄 (drawable) 舉 凡 程 式 的 圖 示 背 景 圖 片 等 等, 皆 需 放 在 drawable 目 錄 底 下 Android 會 為 每 個 放 置 在 res/drawable 目 錄 下 的 圖 片 檔 案 產 生 一 變 數, 變 數 名 稱 就 是 這 個 圖 片 的 檔 名 ( 不 包 含 副 檔 名 ), 可 在 R.java 文 件 中 的 drawable 中 查 詢 舉 凡 程 式 的 圖 示 背 景 圖 片 等 等, 皆 需 放 在 drawable 目 錄 底 下,Android 可 以 接 受 的 圖 檔 類 型 為 png jpg gif Android 會 為 每 個 放 置 在 res/drawable 目 錄 下 的 圖 片 檔 案 產 生 ID,ID 就 是 這 個 圖 片 的 檔 名, 如 果 一 張 圖 片 的 檔 名 是 app_icon.png 那 麼 就 會 在 R.java 文 件 中 的 drawable 下 產 生
圖 檔 資 源 目 錄 在 JAVA 原 始 檔 中 使 用 用 法 :R.drawable. 圖 檔 名 稱 範 例 :Drawable bitmap = getresources().getdrawable(r.drawable.icon); 在 XML 文 件 中 使 用 用 法 :@drawable/ 圖 檔 名 稱 範 例 :android:background="@drawable/icon"
UI 設 計 元 件 介 紹
文 字 表 示 框 - TextView
文 字 輸 入 框 - EditText
文 字 輸 入 框 - EditText AutoComplteTextView 和 MultiAutoComplteTextView 都 可 以 只 有 輸 入 部 份 的 前 頭 文 字 時, 就 可 以 在 事 先 規 劃 好 的 下 拉 選 單 中 找 到 要 輸 入 的 文 字, AutoComplteTextView 只 可 以 輸 入 單 項, 但 MultiAutoComplteTextView 可 以 輸 入 多 項, 項 目 和 項 目 之 間 會 自 動 插 入 逗 點, android:hint= 提 示 字 元 類 別 EditText AutoComplteTextView MultiAutoComplteTextView Spinner aul inc. 說 明 一 般 文 字 輸 入 具 自 動 提 示 字 串 的 選 單 - 單 項 具 自 動 提 示 字 串 的 選 單 - 多 項 自 訂 下 拉 選 單
按 鈕 元 件 - Button
按 鈕 元 件 - Button 類 別 Class Button ToggleButton ImageButton CheckBox RadioButton 印 在 按 鈕 上 的 圖 像 檔 案 要 放 在 res/drawable 目 錄 上, 這 裡 用 到 的 圖 像 檔 案 名 稱 是 title.png, aul inc. 在 屬 性 區 src 要 定 義 成 @drawable/title 說 明 一 般 按 鈕, 標 籤 文 字 顯 示 ON/OFF 交 替 切 換 按 鈕 一 般 按 鈕, 標 籤 圖 像 顯 示 多 項 選 擇 框 圈 選 按 鈕 標 籤 上 顯 示 文 字 的 一 般 按 鈕 畫 只 面 要 在 佈 屬 局 性 區 button_activity.xml text 定 義 成 想 要 顯 示 的 文 字 或 定 義 在 res/values/strings.xml 檔 案 的 變 數, 本 範 例 定 義 在 strings.xml 檔 案 上 的 變 數 是 @string/app_pushme <Button android:id="@+id/button01" android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="@string/app_pushme"/> <ImageButton android:id="@+id/imagebutton01 android:layout_width="wrap_content" android:layout_height="wrap_content" android:src="@drawable/title"/>
Spinner Spinner 是 一 個 widget, 允 許 使 用 者 從 一 群 選 項 中 選 出 其 中 一 個 Spinner 就 類 似 下 拉 式 選 單, 當 列 表 超 過 螢 幕 大 小 時 也 可 允 許 捲 動 <?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:orientation="vertical" android:padding="10dip" android:layout_width="fill_parent" android:layout_height="wrap_content"> <TextView android:layout_width="fill_parent" android:layout_height="wrap_content" android:layout_margintop="10dip" android:text="please select a planet:" /> <Spinner android:id="@+id/spinner" android:layout_width="fill_parent" android:layout_height="wrap_content" android:drawselectorontop="true" android:prompt="@string/planet_prompt" /> </LinearLayout> <?xml version="1.0" encoding="utf-8"?> <resources> <string-array name= cards"> <item>visa</item> <item>mastercard</item> <item>jbc</item> <item>hsbc</item> <item>citibank</item> <item>sd</item> </string-array> </resources>
警 告 框 - AlertDialog 一 個 對 話 框 通 知 一 般 是 出 現 在 當 前 活 動 前 面 的 一 個 視 窗 背 後 的 活 動 遺 失 焦 點 而 由 此 對 話 框 接 受 所 有 的 使 用 者 互 動 對 話 框 通 常 用 於 和 運 行 中 應 用 程 式 直 接 相 關 的 通 知 和 短 暫 活 動
選 項 清 單 - Menu
表 列 清 單 - ListView
影 像 框 - ImageView
Toast Notification 消 息 條 通 知 是 一 個 在 視 窗 彈 出 的 訊 息, 它 只 顯 示 內 容 所 需 的 空 間 且 使 用 者 當 前 活 動 仍 然 保 持 可 見 和 可 互 動 這 個 通 知 自 動 淡 入 淡 出, 且 不 接 受 互 動 事 件, 因 為 消 息 條 可 以 從 一 個 後 台 服 務 Service 中 建 立, 即 便 應 用 程 式 不 可 見, 它 也 將 呈 現 出 來 一 個 消 息 條 是 用 來 顯 示 簡 短 文 字 訊 息 的 好 方 法, 例 如 說 檔 案 已 儲 存, 當 使 用 者 正 在 注 意 螢 幕 時, 這 種 方 式 就 可 以 提 醒 使 用 者 動 作 已 完 成 首 先,Toast 物 件 有 一 個 maketext 的 方 法, 這 個 方 法 帶 有 三 個 參 數 : 應 用 程 式 內 容 文 字 訊 息 顯 示 時 間 長 短 接 著 它 會 回 傳 一 個 初 始 化 的 Toast 物 件, 在 程 式 中 可 以 使 用 show() 方 法 來 顯 示
Toast Notification 範 例 public class ToastNotification extends Activity { /** Called when the activity is first created. */ @Override public void oncreate(bundle savedinstancestate) { super.oncreate(savedinstancestate); setcontentview(r.layout.main); /* 第 一 種 maketext 用 法 */ Context context1 = getapplicationcontext(); CharSequence text1 = "Short Toast"; int duration1 = Toast.LENGTH_SHORT; // 設 定 停 留 長 短 Toast toast = Toast.makeText(context1, text1, duration1); toast.setgravity(gravity.top Gravity.LEFT, 0, 0); // 設 定 Toast 物 件 位 置 toast.show(); /* 第 二 種 maketext 用 法 */ Context context2 = getapplicationcontext(); CharSequence text2 = "Long Toast"; int duration2 = Toast.LENGTH_LONG; // 設 定 停 留 長 短 } } Toast.makeText(context2, text2, duration2).show();
硬 體 元 件
感 測 器 有 關 手 機 上 感 測 器 的 開 發,Android 平 台 將 許 多 硬 體 部 分 整 合 地 更 方 便 使 用, 首 先 要 先 了 解 的 就 是 Android 提 供 了 哪 些 感 測 器 的 常 數 給 開 發 程 式 使 用 感 測 器 類 型 方 向 加 速 表 光 線 磁 場 距 離 溫 度 等 取 樣 率 最 快 遊 戲 普 通 使 用 者 界 面 當 應 用 程 式 請 求 特 定 的 取 樣 率 時, 只 是 對 感 測 器 系 統 的 一 個 建 議, 並 不 保 證 特 定 的 取 樣 率 可 用 準 確 性 高 低 中 不 可 靠
感 測 器 當 需 要 與 感 測 器 互 動 時, 應 用 程 式 必 須 向 系 統 註 冊, 藉 此 監 視 一 個 或 多 個 與 感 測 器 相 關 的 活 動 關 於 註 冊 的 方 法 是 使 用 SensorManager 類 別 中 的 registerlistener 方 法 不 過 在 此 需 要 注 意 的 是, 並 非 所 有 Android 的 設 備 都 支 援 SDK 中 所 定 義 的 感 測 器 假 設 某 種 感 測 器 無 法 在 特 定 的 設 備 上 使 用, 系 統 會 自 動 降 級
感 測 器 SensorEventListener 是 感 測 器 應 用 程 式 的 入 口 它 包 括 兩 個 方 法 : onsensorchanged(sensorevent e) 方 法 在 感 測 器 值 變 更 時 呼 叫 該 方 法 只 對 受 此 應 用 程 式 監 視 的 感 測 器 呼 叫 每 種 感 測 器 所 提 供 的 資 料 不 一 定 一 樣 多, 像 是 方 向 和 加 速 表 傳 感 器 都 提 供 三 個 資 料 當 感 測 器 的 準 確 性 變 更 時, 將 會 呼 叫 onaccuracychanged(sensor s, int accuracy) 方 法 參 數 包 括 兩 個 參 數 : 一 個 表 示 感 測 器, 另 一 個 表 示 該 感 測 器 的 新 準 確 值
G-Sensor Sample 88
G-Sensor Sample Enable the Listener when program resume Stop the Listener when program pause 89
資 料 參 考 Websites: Android Official Android SDK 手 機 應 用 程 式 開 發 教 學 課 程 講 義 Android Opensource Project Javaworld YSL 的 程 式 天 堂 ( 盧 育 聖 ) Books: Google Android 2.x 應 用 程 式 開 發 實 戰 碁 峯 出 版 社 進 階 : Android 應 用 開 發 揭 密 佳 魁 資 訊 出 版 社 Google Android SDK 開 發 範 例 大 全 悅 知 文 化 出 版 社 90