Course 04
Android 現況概述 進一步介紹開發環境 開發環境介紹與熟悉 程式基本框架介紹 建立第一個App – BMI 開發演練 進階應用介紹 Emulator Debug Tools 程式基本框架介紹 建立第一個App – BMI Demo Code Plan & Design 開發演練 Coding- UI描述 與設計 概論 Smart Phone, Android 目前的趨勢,動機 著名app簡介,透過這次workshop所學,可做到甚麼程度 Android 開發環境,開發方式介紹 Hardware Android SDK Framework基礎認識 練習-完成一個小應用程式 進階開發應用(Day 3) Google Map Sensors 網路遠端資料傳送 程式流程解讀 與使用者對話- Dialog Activities & Intent 進階應用介紹 Data Storage 多媒體-圖片與聲音 後續延伸-Web Service
0.關於本堂課 Emulator ? 更進一步介紹開發環境,實際練習操作指令 BUG and Debug
Emulator 為什麼需要模擬器? 啟動與使用 Android 模擬器 更改模擬器的設定-外觀,方向切換 方便開發 特定情況下,可透過模擬器模擬(EX: 兩支手機) 啟動與使用 Android 模擬器 更改模擬器的設定-外觀,方向切換 練習: Emulator's Communication Emulator Tools目錄底下 Reference: http://developer.android.com/guide/developing/tools/emulator.html
ADB (android debug bridge) 相關指令: 檔案檢視-ls 將檔案上傳到模擬器- adb push 001.jpg /sdcard 將檔案從模擬器上下載 -adb pull /sdcard/001.jpg 刪除檔案 rm xxx.jpg SD Card Create and Mount-mksdcard 1024M sdcard.img 建立模擬器 操作模擬器 安裝apk
關於BUG Bug Developers
Debug-Android 提供的Debug 環境 Debug View 設定/觀察中斷點 留Log : Logcat Logcat with Console monitor TraceView
開發工具簡介- DDMS 透過DDMS 模擬手機的各種狀況 try:傳簡訊 try:打電話 Reference : http://code.google.com/intl/zh-TW/android/reference/ddms.html
REFERENCE: Debug Tasks android/docs/guide/developing/debug-tasks.html Logcat http://developer.android.com/intl/zh-TW/guide/developing/tools/adb.html#logcat Filtering Log Output Controlling Log Output Format 輔助開發工具-OpenIntents : http://code.google.com/p/openintents/wiki/SensorSimulator 使用 Android 虛擬機器 http://code.google.com/p/androidbmi/wiki/PlayEmulator ADB 指令: http://developer.android.com/intl/zh-TW/guide/developing/tools/adb.html
Android 現況概述 進一步介紹開發環境 開發環境介紹與熟悉 程式基本框架介紹 建立第一個App – BMI 開發演練 進階應用介紹 Emulator Debug Tools 程式基本框架介紹 建立第一個App – BMI Plan & Design 開發演練 Pratice01- UI LayOut 概論 Smart Phone, Android 目前的趨勢,動機 著名app簡介,透過這次workshop所學,可做到甚麼程度 Android 開發環境,開發方式介紹 Hardware Android SDK Framework基礎認識 練習-完成一個小應用程式 進階開發應用(Day 3) Google Map Sensors 網路遠端資料傳送 Pratice02-完成程式邏輯 Pratice03-進行重構 Pratice04-Menu,Dialog 進階應用介紹 Pratice05-Activities & Intent Pratice06-Data Storage Pratice07-圖片與動畫
怎麼做一個 App? Reference : http://whoswho.openfoundry.org/workshop/details/61-kalug--android-.html
今日目標- 完成一個簡單的應用程式 Weight / BMI 計算器 參考來源: http://sites.google.com/site/gasodroid/Home/androidentry3
BMI ? 身高體重指數(又稱身體質量指數,英文為Body Mass Index,簡稱BMI)是一個計算值,主要用於統計用途。當我們需要比較及分析一個人的體重對於不同高度的人所帶來的健康影響時,BMI值是一個中立而可靠的指標
Plan - 想法 輸入身高與體重,輸出BMI值,以及建議 記下每天的體重 可以設定目標,決定日期與目標體重,在每天輸入時,告訴我一些建議 提醒功能: 顯示一個小機器人,變胖時跟著變胖,變瘦時跟著變瘦,同時發出鼓勵/沮喪的音效 提醒功能: 透過提醒列,提醒我 監督功能: 如果一直過重超過xx天 ,自動送出簡訊(SMS)告訴朋友 跟網路服務同步 anything else ? 想法 老是不知不覺的體重飆高嗎? 每天記錄你的體重,體脂肪吧 設定好你的目標,每天詳細的紀錄吧
先完成Prototype: 輸入身高與體重,取得BMI值的建議 顯示結果,以及建議 調整顯示內容的方式 資料儲存 動畫顯示
針對目標,我們要做的事: 需求分析 LayOut- 介面設計, UI 決定, 操作方式決定 開始Coding 輸入 輸出 體重 身高 輸出 BMI結果 建議 LayOut- 介面設計, UI 決定, 操作方式決定 各種可用介面元件列表 http://developer.android.com/guide/tutorials/views/index.html Edit Text http://developer.android.com/intl/zh-TW/reference/android/widget/EditText.html Get/setText method EditText Attributes android:numeric TextView Button 開始Coding
針對目標,我們要做的事: 需求分析 LayOut- 介面設計, UI 決定, 操作方式決定 開始Coding 輸入 輸出 體重(EditText) 身高(EditText) 輸出 BMI結果((TextView) 建議(TextView) LayOut- 介面設計, UI 決定, 操作方式決定 各種可用介面元件列表 http://developer.android.com/guide/tutorials/views/index.html Edit Text http://developer.android.com/intl/zh-TW/reference/android/widget/EditText.html Get/setText method EditText Attributes android:numeric TextView Button 開始Coding
Pratice05-Activities & Intent Android 現況概述 進一步介紹開發環境 開發環境介紹與熟悉 Emulator Debug Tools 程式基本框架介紹 建立第一個App – BMI Plan & Design 開發演練 Pratice01- UI LayOut 概論 Smart Phone, Android 目前的趨勢,動機 著名app簡介,透過這次workshop所學,可做到甚麼程度 Android 開發環境,開發方式介紹 Hardware Android SDK Framework基礎認識 練習-完成一個小應用程式 進階開發應用(Day 3) Google Map Sensors 網路遠端資料傳送 Pratice02-完成程式邏輯 Pratice03-進行重構 Pratice04-Menu,Dialog 進階應用介紹 Pratice05-Activities & Intent Pratice06-Data Storage Pratice07-圖片與動畫
專案架構檢視 專案架構檢視 from : http://code.google.com/p/androidbmi/wiki/ReadSource 程式專案架構 乍看之下,Android 插件已幫我們建立了不少檔案。 檢視新建立的 BMI 檔案夾中的內容,我們可以將一個 Android 應用程式基本的檔案結構歸納成如下: 我們來看看 Android 應用程式的基本檔案結構,以及各自所負責的內容。 src/ 原始碼(source)目錄 src 目錄中包含了一個 Android 應用程式中所需的各個程式碼檔案。這些檔案被包在對應 package 的子目錄下。(如本章的 BMI 例子中,子目錄指的就是 /src/com/demo/android/bmi/) src 目錄中比較關鍵的程式有: 1. Bmi.java 這個檔案的檔名會隨著你在建立一個新的程式專案畫面中所填入「Create Activity」欄位值的不同而改變。這是新程式專案中的主要程式區塊。我們開發 Android 程式的多數時間,都是在 src 目錄下和 Android 打交道。 gen/ 自動生成(Generate)目錄 gen 目錄中存放所有自動生成的檔案。 gen 目錄中最關鍵的程式就是 R.java 檔。 1. R.java 這個檔是自動產生的。會由 ADT 插件自動根據你放入 res 目錄的 XML 描述文件、圖像等資源,同步更新修改 'R.java' 這個中介檔案。所有的 Android 程式中都會有以 R.java 為名的這個檔案,你完全不需要,也應避免手工修改 R.java 這個檔案。 R.java 中自動產生的 「R」 類別就像是個字典一樣,包含了使用者介面、圖像、字串等各式的資源與相應的編號(id)。Android 應用程式中很多時候會需要透過 R 類別調用資源。 編譯時編譯器也會查看這個資源列表,沒有使用到的資源就不會編譯進去,為手機應用程式節省不必要佔用的空間。 res/ 資源(Resource)目錄 「res」 目錄中存放所有程式中用到的資源檔案。"資源檔案"指的是資料檔案,或編譯時會被轉換成程式一部分的 XML 描述檔。Android 針對放在 「res」 目錄下的不同子目錄的資源,會有各自不同處理方式。因此我們寫程式時,最好能搞清楚各目錄下分別可放置的內容。 res/ 中的程式: 3. layout/ 版面配置(layout)目錄 「layout」目錄包含所有使用 XML 格式的介面描述檔。「layout」 中的 XML 介面描述檔就像寫網頁時用到的 HTML 檔案一樣,用來描述螢幕上的版面編排與使用的介面元件。XML 介面描述檔描述的內容可以是整張螢幕,也可以只描述一部分的介面(例如描述用來產生對話框的介面元件)。 雖然你也能直接通過 Java 來建立使用者介面,不過透過 XML 描述檔來建立使用者介面相對更簡單,架構也更清晰,以後維護時更容易釐清問題。要使用這些介面元件,應透過 「R.java」 檔中自動產生的 「R」 類別來調用。 4. values/ 參數值(value)目錄 「values」 目錄包含所有使用 XML 格式的參數值描述檔,可以在此添加一些額外的資源如字串(很常用)、顏色、風格等。使用時也是透過 「R」 類別來調用。 Android 功能清單 5. AndroidManifest.xml 「AndroidManifest.xml」 是 Android 程式的功能清單,應用程式在這裡列出該程式所提供的功能。當應用程式開啟時,會提供諸如內容提供者(ContentProvider)、處理的資料類型、 實際運行的類別、跨應用程式的資訊等等訊息。 你可以在此指定你的應用程式會使用到的服務(諸如電話功能、網路功能、GPS功能等)。 當你新增一個頁面行為類別 (Activity) 時,你也需要先在此註冊這個新增的 Activity 類別後,才能順利調用。 參考資料 Android 應用程式的檔案組織方式與用途 http://developer.android.com/guide/appendix/faq/commontasks.html#filelist
最初的程式碼
LayOut Editbox : 輸入身高 Editbox: 輸入體重 Button:開始計算 TextView:顯示結果
長這樣
Pratice05-Activities & Intent Android 現況概述 進一步介紹開發環境 開發環境介紹與熟悉 Emulator Debug Tools 程式基本框架介紹 建立第一個App – BMI Plan & Design 開發演練 Pratice01- UI LayOut 概論 Smart Phone, Android 目前的趨勢,動機 著名app簡介,透過這次workshop所學,可做到甚麼程度 Android 開發環境,開發方式介紹 Hardware Android SDK Framework基礎認識 練習-完成一個小應用程式 進階開發應用(Day 3) Google Map Sensors 網路遠端資料傳送 Pratice02-完成程式邏輯 Pratice03-進行重構 Pratice04-Menu,Dialog 進階應用介紹 Pratice05-Activities & Intent Pratice06-Data Storage Pratice07-圖片與動畫
範例(Project_Workshop) Pratice_Study02 : 完成程式邏輯部分, Pratice_Study03 : 進行重構, Pratice_Study04 : 加入選單,並且透過選單,建立Dialog. Pratice_Study05 :建立Activity , 並透過Intent呼叫,以及activity之間的資料傳遞 Pratice_Study06 : 1. Preference 2. Daily widght Record ->SQLite Pratice_Study07 : Frame Animation機制介紹 今天看能夠講到哪裡, 留最後半堂課我們做總結.(先確認 是否還有明天) 如果有餘力的同學,可以試著前進
目標: 功能: 實際上要做的事: 處理按下"確定"按鈕後,會發生的事-計算BMI,給予建議與結果 導入用到的模組、取得介面元件、對按鈕指定動作。 這堂課的目標 android.widget
開發期間可以參考的文件 官方的開發基礎教學文件 官方Reference文件 有哪些Views (LayOut 和UI)可以使用 http://developer.android.com/intl/zh-TW/reference/packages.html 官方的開發基礎教學文件 http://developer.android.com/intl/zh-TW/guide/index.html 有哪些Views (LayOut 和UI)可以使用 http://developer.android.com/intl/zh-TW/guide/tutorials/views/index.html <AndroidSDK目錄>\docs\ 底下有相同的文件,不用上網查也可以 EX: C:\Android\docs\
請開啟Project: Pratice_Study02 Assist: HandOut_Day2.docx
LayOut-將描述字串抽離到String.xml "請輸入身高" 改到 Strings.xml 裡的 msg_Height "170" 改到String.xml裡的 value_Height ..... 省時間,這段就請大家自己參考,在範例中我們作的,而昨天沒做的事情..
LayOut-指定EditText只能輸入數字 EditText->Property-> Numeric,選擇 Integer 合理的狀況下,應該只能輸入數字才對
Code-入口 入口 Package com.example_study01 : -指出這個檔案所在的名稱空間(namespace)- 管理,避免衝突 -EX: 對應目錄: com\example_study01\ import : 在 Java 語言中,使用到任何 API 前都要事先導入相對應的 Package。 Ctrl + Shift + O public class MainActivity 「Bmi」是這個類別的名稱。「class」則是用作宣告類別關鍵字。「public」關鍵字是用來修飾「Bmi」這個類別。表示「Bmi」是個「公開」的類別,可以從 package 外部取用??。 「extends」是繼承(Inherit)類別的關鍵字 宣告一個公開的 Bmi 類別。這個 Bmi 類別繼承了程式開頭導入的 Activity 類別 @Override 告訴程式我們要覆寫這個「onCreate」方法。當我們打開程式時,程式不再使用從「bmi」 類別中繼承來的「onCreate」方法,而是使用我們在程式中自訂的行為 「Bundle」可以保存程式上一次關閉(凍結)時的狀態 你可以透過覆寫 onFreeze 方法(與 onCreate 方法的作用類似) 來保存凍結前的狀態。 當程式啟動(Activity 重新初始化)時,會再次呼叫 onCreate 方法,你就能從 savedInstanceState 中得到前一次凍結的狀態。我們也可以透過「Bundle」來將這個 Activity 的內容傳到下一個 Activity 中。 super 執行 Activity 類別中 onCreate 方法的內容 Google Android 將其應用程式的介面稱為視圖(View),而負責控制各種動作行為的程式主體(Controller),則稱為活動(Activity)。 setContentView(R.layout.main); 透過螢幕顯示的各種元素是按照介面層次結構來描述的。要將一個顯示元素的層次結構轉換顯示到一個螢幕上,Activity 會呼叫它用來設定 View 的 「setContentView」 方法,並傳入想引用的 XML 描述文件。當 Activity 被啟動並需要顯示到螢幕上時,系統會通知 Activity,並根據引用的 XML 文件敘述來描繪出使用者介面。
Code- UI 類別的宣告 宣告一個Button Instance UI 類別的宣告 宣告一個 button 實體
Code-與UI 資源檔的Binding 存取UI 的識別符號 程式 main.xml 與UI 資源檔的Binding 透過 findViewById 方法,從資源檔中取得對應的介面元件(按鈕) 轉型: 為了確保宣告的型別跟 XML 描述檔中描述的介面元件型別一致,好使程式運作正常,我們在 「findViewById」 方法前加上 「(Button)」修飾,強制將取得的資源型別設成 「button」型別。 多型 秀一下Eclipse IDE 的語法建議功能 main.xml
Button 事件處理的方式 - Listener button.setOnClickListener」與其中的 「OnClickListener」兩個類別。 「 setOnClickListener 是 button (按鈕)實體的方法
程式邏輯- 計算BMI 值的實作 程式邏輯- 計算BMI 值的實作 BMI 值的算法是「體重除以身高的平方」。 用計算式來表示,就是 體重(weight) / 身高(height)*身高(height) 身高的單位是公尺 DecimalFormat nf = new DecimalFormat("0.00"); result.setText("Your BMI is "+nf.format(BMI)); 透過 java 內建的 DecimalFormat 函式,我們可以將運算結果,以適當的格式顯示。
Result
Pratice 開啟Pratice_02 ,複習剛才上課所描述的,完成主程式邏輯部分, 可以參考HandOut 跟註解
Pratice05-Activities & Intent Android 現況概述 進一步介紹開發環境 開發環境介紹與熟悉 Emulator Debug Tools 程式基本框架介紹 建立第一個App – BMI Plan & Design 開發演練 Pratice01- UI LayOut 概論 Smart Phone, Android 目前的趨勢,動機 著名app簡介,透過這次workshop所學,可做到甚麼程度 Android 開發環境,開發方式介紹 Hardware Android SDK Framework基礎認識 練習-完成一個小應用程式 進階開發應用(Day 3) Google Map Sensors 網路遠端資料傳送 Pratice02-完成程式邏輯 Pratice03-進行重構 Pratice04-Menu,Dialog 進階應用介紹 Pratice05-Activities & Intent Pratice06-Data Storage Pratice07-圖片與動畫
這堂課的目標 1.重構-讓程式碼更容易維護 2.我們想把原本的訊息改成對話框型式 MENU 按鈕的使用 實作: 與使用者的對話 -> 對話框功能 AlertDialog MENU 按鈕的使用 這堂課的目標 一個.cpp裡,塞了3萬行的code 一拖拉庫的UI
重構-讓程式碼更容易閱讀 findViews() SetListener() 重新命名變數 針對建議描述的部分->新增XML來描述字串 現在我們只有一個按鈕要處理還好, 如果有數十個按鈕要處理,不是很慘? 不請大家做,我直接修改 我們可以想像,在同一個畫面中,多加入一些按鈕與欄位後,"onCreate" 這段程式將變得壅腫,我們來試著先對此稍作修改: 首先,我們可以套用 MVC 模式,將宣告介面元件(按鈕、數字欄位)、指定負責函式等動作抽取出來,將 onCreate 函式改寫如下 在「res/values」目錄中建立一個 「advice.xml」 輸入資料-
建立Alert Dialog http://developer.android.com/intl/zh-TW/reference/android/app/Dialog.html http://developer.android.com/intl/zh-TW/guide/topics/ui/dialogs.html
建立Alert Dialog 建立Dialog 透過.setTitle("關於 Android BMI") 我們設定了對話框的標題。 透過.setMessage("Android BMI Calc") 我們設定了對話框的主要內容。 .setPositiveButton("確認", new DialogInterface.OnClickListener(){ public void onClick( DialogInterface dialoginterface, int i){ } }) 「setPositiveButton」、「setNegativeButton」 或 「setNeutralButton」 函式都可以用來定義按鈕,各按鈕分別預設代表正面/中立/負面的結果。 上方程式碼中定義的「setPositiveButton」裡,包含了一個沒有作用的對話框介面(DialogInterface)。 表示當我們按下按鈕時,不做任何事就直接退出對話框。
建立MENU清單,透過清單呼叫Dialog 1. 建立選單 2. 處理選項動作
「onCreateOptionsMenu」函式即選單列的主體。在 Android 機器或模擬器上按下硬體的「Menu」(選單)鍵,所彈出的選單列即是靠 menu.add(0, 識別符號(identifer), 0, 字串或資源識別符號); 「識別符號」的目的則是作為這個選項的標籤,以供後續處理選項動作時,更容易辨認出所對應的選項。
當我們在 Android 應用程式的選單列上選擇了相應的選項後,則是依賴「onOptionsItemSelected」函式,來負責處理選單列中各選項所個別對應的動作。 menu.add(0, MENU_ABOUT, 0, "關於..."); menu.add(0, MENU_Quit, 0, "結束"); 在「onOptionsItemSelected」函式中收到 「MENU_Quit」識別符號時,我們呼叫 Android 內建的 「finish」函式來關閉這個 Activity。因為我們的「BMI」應用程式只由一個「Bmi」Activity 組成,所以當我們呼叫「finish」函式來關閉「Bmi」這個 Activity,就等於直接關閉了這個「BMI」應用程式。 而事實上, 在 Android 平台上,無論是開發者或是使用者,都不需要自己來關閉 Activity。 因為 Android 虛擬機(Dalvik) 接手了什麼時候 Activity 該啟動或關閉的工作。整個 Android Activity 的運作流程,將在後續章節中作講解。
Result
Pratice 開啟Pratice_Study03 ,練習重構 開啟Pratice_Study04,建立Dialog跟Menu, 可以參考HandOut與註解
Android 現況概述 進一步介紹開發環境 開發環境介紹與熟悉 程式基本框架介紹 建立第一個App – BMI 開發演練 進階應用介紹 Emulator Debug Tools 程式基本框架介紹 建立第一個App – BMI Plan & Design 開發演練 Pratice01- UI LayOut 概論 Smart Phone, Android 目前的趨勢,動機 著名app簡介,透過這次workshop所學,可做到甚麼程度 Android 開發環境,開發方式介紹 Hardware Android SDK Framework基礎認識 練習-完成一個小應用程式 進階開發應用(Day 3) Google Map Sensors 網路遠端資料傳送 Pratice02-完成程式邏輯 Pratice03-進行重構 Pratice04-Menu,Dialog 進階應用介紹 Pratice05-Activities & Intent Pratice06-Data Storage Pratice07-圖片與動畫
目標: 改良顯示的方式 - 我們想將結果獨立顯示在新的頁面 將會使用到: another Activity Intent 昨天稍微提到的兩個東西 應用程式無界限 Reference : http://code.google.com/p/androidbmi/wiki/LifeCycle
先來複習Activity Activity的生命週期 獨立Activity / 相依Activity 的差異,以及使用時機 EX: 2 Activity 1. MainActivity 2. Report 先來複習Activity 手機的特性,就是應該能隨時在未完成目前動作的時候,離開正在使用的功能,切換到接電話、接收簡訊模式...而且在接完電話回來應用程式時,還希望能看到一樣的內容 Android 的虛擬機(VM)是使用堆疊 (Stack based) 管理。主要有四種狀態: * Active (活動) * Paused (暫停) * Stopped (停止) * Dead (已回收或未啟動) 留Log , 透過Logcat觀察 觀察: public void onCreate() super.onCreate(...); { Log.v(TAG,"onCreate"); } public void onStart() super.onStart(); Log.v(TAG,"onStart"); public void onResume() super.onResume(); Log.v(TAG,"onResume"); public void onPause() super.onPause(); Log.v(TAG,"onPause"); public void onStop() super.onStop(); Log.v(TAG,"onStop"); public void onRestart() super.onRestart(); Log.v(TAG,"onReStart"); public void onDestroy() super.onDestroy(); Log.v(TAG,"onDestroy");
MainActivity: onCreate -> onStart -> onResume 呼叫Report: onPause(1) -> onCreate(2) -> onStart(2) -> onResume(2) -> onStop(1) 回到 MainActivity :onPause(2) -> onRestart(1) -> onStart(1) -> onResume(1) -> onStop(2) -> onDestroy(2) 一般啟動 onCreate -> onStart -> onResume 啟動一個 Activity 的基本流程是:分配資源給這個 Activity(Create 狀態),然後將 Activity 內容顯示到螢幕上(Start 狀態)。在一切就緒後,取得螢幕的控制權(Resume 狀態),使用者可以開始使用這個程式。 呼叫另一個 Activity onPause(1) -> onCreate(2) -> onStart(2) - onResume(2) -> onStop(1) 這是個先凍結原本的 Activity,再交出直接存取螢幕能力(Pause 狀態)的過程。 直到 Activity 2 完成一般啟動流程後,Activity 1 才會被停止。 回原 Activity onPause(2) -> onRestart(1) -> onStart(1) -> onResume(1) -> onStop(2) -> onDestroy(2) 點 Back 按鈕可以回到原本的 Activity。 退出結束 onPause -> onStop -> onDestroy 如果程式中有直接呼叫「finish」函式來關閉 Activity的話,系統假設我們很確定我們在做什麼,因此會直接跳過先凍結(Freeze)的階段,暫停(Pause),停止(Stop),然後銷毀(Destroy)。 回收後再啟動 被回收掉的 Activity 一旦又重新被呼叫時,會像一般啟動一樣再次呼叫 Activity 的 onCreate 函式。 當我們使用「Android」手機一陣子,在手機上已經執行過多個應用程式。只要按下「Back」(返回)鍵,「Android」就會開啟最近一次開啟過的 Activity。 這時我們要是按下多次「Back」(返回)鍵,理論上遲早會返回到某個已經銷毀(Destroy)的 Activity。這時會發生什麼事呢? 如果應該開啟的 Activity 已經被回收了,那麼這個 Activity 會再次被建立(Create)出來。再次被建立出來的 Activity,當然會跟原本我們開啟過的 Activity 不一樣啦。 所以如果要讓再次被建立出來的 Activity 看起來跟原本開啟過的一樣,那麼在 Activity 之間切換時,我們就要留意保留資料:最好在每次 Activity 運行到「onPause」或「onStop」狀態時先保存資料,然後在「onCreate」時將資料讀出來。
開始- 預備建立新的Activity 5.1 建立新的Activity class 5.2 建立新的LayOut xml file 5.3 我們可以將 Activity 看成 MVC 模式中的 Control。Activity 負責管理 UI(詳細的UI細節可以由資源檔讀入),並接受事件觸發 以是否需要與其他 Activity 交換資料來區分,Activity 可以粗分為兩種類型:「獨立的 Activity」與「相依的 Activity」。不同類型的 Activity,其動作也不盡相同
Intent的使用- 呼叫新的Activity,資料的傳遞 5.5 透過Bundle 記錄要傳遞的參數 5.6. 將Intent 傳入Android 框架中 修改AndroidManifest.xml 註冊Activity 事先註明會用到的服務 Intent的使用- 呼叫新的Activity 透過 Intent 通知系統(Android 框架):我們將要從 Bmi Activity 這個頁面(輸入頁面)前往 Report Activity 頁面(結果頁面)
Intent的使用- 呼叫新的Activity,資料的傳遞 AndroidManifest.xml 註冊Activity,service, receiver,provider uses-permission :存取SMS、能否存取聯絡簿、相機功能,… Reference Android manifest http://developer.android.com/reference/android/R.styleable.html#AndroidManifest Intent Action http://developer.android.com/reference/android/content/Intent.html Intent的使用- 呼叫新的Activity 透過 Intent 通知系統(Android 框架):我們將要從 Bmi Activity 這個頁面(輸入頁面)前往 Report Activity 頁面(結果頁面)
Result
Pratice 開啟Pratice_Study05,建立Activity , 並透過Intent呼叫 , 嘗試加入除錯訊息.
Pratice05-Activities & Intent Android 現況概述 進一步介紹開發環境 開發環境介紹與熟悉 Emulator Debug Tools 程式基本框架介紹 建立第一個App – BMI Plan & Design 開發演練 Pratice01- UI LayOut 概論 Smart Phone, Android 目前的趨勢,動機 著名app簡介,透過這次workshop所學,可做到甚麼程度 Android 開發環境,開發方式介紹 Hardware Android SDK Framework基礎認識 練習-完成一個小應用程式 進階開發應用(Day 3) Google Map Sensors 網路遠端資料傳送 Pratice02-完成程式邏輯 Pratice03-進行重構 Pratice04-Menu,Dialog 進階應用介紹 Pratice05-Activities & Intent Pratice06-Data Storage Pratice07-圖片與動畫
目標 儲存資料方式, 甚麼時候適合用哪種方式(身高,體重記錄的方式) 我們想做到的.. Preference text file read/write SQLite 我們想做到的.. 把不會變的身高記錄下來 把體重按照日期,記錄下來 Database
Preference-取得/記錄偏好設定 Step01 Step02 Preference-取得/記錄偏好設定 http://code.google.com/p/androidbmi/wiki/AndroidPreference
[Optional]Database Reference: HandOut_Day2 : 6-4~6-8 記錄每天的體重- SQL Lite on Android 日期的選擇 - DatePicker UI 的使用
練習 開啟Pratice_Study06,透過Preference 來記錄身高設定 [Optional]: 透過Database , 加入紀錄每日體重功能
Pratice05-Activities & Intent Android 現況概述 進一步介紹開發環境 開發環境介紹與熟悉 Emulator Debug Tools 程式基本框架介紹 建立第一個App – BMI Plan & Design 開發演練 Pratice01- UI LayOut 概論 Smart Phone, Android 目前的趨勢,動機 著名app簡介,透過這次workshop所學,可做到甚麼程度 Android 開發環境,開發方式介紹 Hardware Android SDK Framework基礎認識 練習-完成一個小應用程式 進階開發應用(Day 3) Google Map Sensors 網路遠端資料傳送 Pratice02-完成程式邏輯 Pratice03-進行重構 Pratice04-Menu,Dialog 進階應用介紹 Pratice05-Activities & Intent Pratice06-Data Storage Pratice07-圖片與動畫
目標 初探Android 中的圖像處理 - 瞭解圖像的基本操作
變胖或變瘦的動畫顯示 ImageView Animation Script
Step: 將圖形匯入resource/drawable 建立Frame Animation XML 在report.xml 中加入ImageView 在程式中建立實體 ImageView AnimationDrawable 設定動畫播放的xml,指定 OnTouch Event中觸發動畫事件
Pratice 開啟Pratice_Study07,將圖形匯入,建立anim/, 撰寫XML編輯動畫行為,完成程式碼中對動畫物件的操作 完成”太瘦”以及”剛剛好”兩段動畫,加入到程式中 [Optional]加入聲音
Android 現況概述 開發環境介紹與熟悉 程式基本框架介紹 開發演練 進階應用介紹 概論 Smart Phone, Android 目前的趨勢,動機 著名app簡介,透過這次workshop所學,可做到甚麼程度 Android 開發環境,開發方式介紹 Hardware Android SDK Framework基礎認識 練習-完成一個小應用程式 進階開發應用(Day 3) Google Map Sensors 網路遠端資料傳送 進階應用介紹