Android 視窗介面

106
Android 視視視視 視視視視視視 視視視 視視視 2010/10

description

Android 視窗介面. 建國科技大學 資管系 饒瑞佶 2010/10. M V C Model. Model-View-Controller Model :儲存內容 View :顯示介面 Controller : 控制程式操作. 使用者. View. 要求動作. 顯示內容. Controller. 查詢資料. Model. 提供資料. Android 視窗介面. Views 按鈕元件 影像按鈕元件 單選選單元件 複選選單元件 對話視窗 …. Android 視窗介面. 透過 main.xml 佈局資源檔設計介面 - PowerPoint PPT Presentation

Transcript of Android 視窗介面

Page 2: Android 視窗介面

MVC Model

• Model-View-Controller• Model :儲存內容• View :顯示介面• Controller :控制程式操作

View

Controller

Model

要求動作

顯示內容

使用者

查詢資料

提供資料

Page 3: Android 視窗介面

Android 視窗介面

• Views–按鈕元件–影像按鈕元件–單選選單元件–複選選單元件–對話視窗 …

Page 4: Android 視窗介面

Android 視窗介面• 透過 main.xml 佈局資源檔設計介面– 理面的 android:id 屬性是程式與介面的連結

• 透過 strings.xml 文字資源檔設計介面文字• 透過 drawable 圖檔資源檔設計介面圖形• 透過 anim.xml 設計介面動畫

Page 5: Android 視窗介面

XML

Page 6: Android 視窗介面

XML

• eXtensible-Markup-Language• data of data• 由 tag 構成,一定要有開始與結束 tag• 需有 root tag• Well-defined• 開頭:

<?xml version="1.0" encoding="UTF-8" ?> • 與 HTML 不同,並非 HTML 的進化

Page 7: Android 視窗介面

XML• 原始 main.xml

root tag一定有名稱空間 xmlns

Page 8: Android 視窗介面

XML• 擴充後 main.xml

擴充後 tag

有幾個擴充後 tag ?

Page 9: Android 視窗介面

多國語言

Page 10: Android 視窗介面

多國語言• main.xml 不動• 使用規定語法的 strings.xml 目錄– 繁體中文 :values-zh-rTW– 簡體中文 : values-zh-rCN– 日文 :values-ja– 英式英文 :values-en-rUK– 美式英文 :value-en-rUS

• 只要 Android 上使用的語言更改,就會自動顯示對應的文字

Page 11: Android 視窗介面

多國語言• 依據規定建立各語言的目錄與 strings.xml 檔案• 修改顯示文字

Page 12: Android 視窗介面

多國語言• 手機上切換語言• 執行時顯示文字就會自動替換

Page 13: Android 視窗介面

介面佈局Layout

Page 14: Android 視窗介面

View Hierarchy

Page 15: Android 視窗介面

Layout

• LinearLayout– 將 View 以水平或垂直方式做線性排列

• RelativeLayout• 將 View 依相對位置做排列

• TableLayout• 像建立表格般安排 View/ViewGroup 的位置

Page 16: Android 視窗介面

LinearLayout

Page 17: Android 視窗介面

LinearLayout

Page 18: Android 視窗介面

RelativeLayout

Page 19: Android 視窗介面

RelativeLayout

Page 20: Android 視窗介面

TableLayout

Page 21: Android 視窗介面

介面檢視工具Hierarchy View

Page 22: Android 視窗介面

Hierarchy View• 要先啟動 AVD

Page 23: Android 視窗介面

Hierarchy View• 點兩下可預覽

Page 24: Android 視窗介面

介面設計工具DroidDraw

Page 25: Android 視窗介面

DroidDraw

• 協助進行 Android 程式介面設計,拖拉放方式

• 協助產生 XML 碼,再貼回 main.xml等檔案就可以

• 網路版–http://droiddraw.org/

• 單機版

Page 26: Android 視窗介面

DroidDraw 網路版

產生 xml 碼

xml 碼

物件

版面

Page 27: Android 視窗介面

DroidDraw 單機版

下載單機版

Page 28: Android 視窗介面

DroidDraw 單機版• 不需要安裝,直接執行 droiddraw.exe

Page 29: Android 視窗介面

DroidDraw 單機版

產生 xml 碼

版面

物件

Page 30: Android 視窗介面

其它 Viewshttp://developer.android.com/guide/tutorials/views/index.html

Page 31: Android 視窗介面

按鈕 View

Page 32: Android 視窗介面

按鈕 View

• 使用 Eclipse 建立新專案– Project Name=Jao– Application Name=MyButton– Package Name=com.android.jao– Create Activity= Jao

Page 33: Android 視窗介面

Jao 專案

1

Page 34: Android 視窗介面

Jao 專案畫面

Button.java

Page 35: Android 視窗介面

設計 main.xml

• 介面佈局資源檔• 設計介面的組成元件,例如按鈕…• res\layout\main.xml

Page 36: Android 視窗介面

設計 main.xml

原始 main.xml

Page 37: Android 視窗介面

設計 main.xml

加入 scrollview 讓介面可以上下捲動1

大小寫有差!

Page 38: Android 視窗介面

設計 main.xml

代表有錯誤!

加入 button 讓介面出現按鈕元件

2

程式與介面的連結android:id 屬性

還有Relative layoutTable layout

Page 39: Android 視窗介面

android:id

• 介面佈局資源檔 main.xml 與程式的連結

• 格式: android:id=“@+id/ 名稱”–@ :解讀成識別符號而不是一般內容– + :新增一個 id– id/ :識別符號被歸類在 id 類別下

• 自動在 R.java 中產生索引• 取用方式: R.id. 名稱

Page 40: Android 視窗介面

設計 strings.xml

在 strings.xml 加入 button_large 文字對應

Page 41: Android 視窗介面

預覽 main.xml

預覽 main.xml

Page 42: Android 視窗介面

R.java

R.Java 自動加入資源

Page 43: Android 視窗介面

加入圖檔

加入 arrow.png確定圖檔路徑是在專案內

Page 44: Android 視窗介面

AndroidManifest.xml

更改 Application 的 icon

1

2

Page 45: Android 視窗介面

執行程式

1

Page 46: Android 視窗介面

執行程式

目前只有畫面,沒有動作

Page 47: Android 視窗介面

加入按鈕 View 處理程式

1

2

3

main.xml中的 android:id屬性

Page 48: Android 視窗介面

按鈕 View 跳頁

• 建立對應的畫面 sample_page.xml–res/layout/sample_page.xml

• 建立對應的程式 sample_page.java–src/com.example.android.button/

sample_page.java

• 在 AndroidManiFest.xml 中加入Activity

Page 49: Android 視窗介面

按鈕 View 跳頁• 建立對應的畫面 sample_page.xml

12

Page 50: Android 視窗介面

按鈕 View 跳頁• 建立對應的畫面 sample_page.xml

複製 main.xml 的結構

Page 51: Android 視窗介面

按鈕 View 跳頁• 建立對應的畫面 sample_page.xml

Page 52: Android 視窗介面

按鈕 View 跳頁• 建立對應的程式 sample_page.java

1

Page 53: Android 視窗介面

按鈕 View 跳頁• 建立對應的程式 sample_page.java

2

Page 54: Android 視窗介面

按鈕 View 跳頁• 建立對應的程式 sample_page.java

複製 Button.java 的結構

Page 55: Android 視窗介面

按鈕 View 跳頁• 建立對應的程式 sample_page.java

1

2

3

4

Page 56: Android 視窗介面

按鈕 View 跳頁• 建立對應的程式 sample_page.java

Page 57: Android 視窗介面

按鈕 View 跳頁• 加入從 Jao.java 呼叫 sample_page.java• 先在 main.xml 加入一個按鈕

Page 58: Android 視窗介面

按鈕 View 跳頁• 在 Jao.java 加入呼叫按鈕與程式

Page 59: Android 視窗介面

按鈕 View 跳頁• 在 AndroidManifest.xml 中加入 Activity

Page 60: Android 視窗介面

執行按鈕 View 跳頁• 解決” Unparsed aapt error(s)! Check the

console for output” 問題(如果有)

Page 61: Android 視窗介面

執行按鈕 View 跳頁

Page 62: Android 視窗介面

執行按鈕 View 跳頁

Page 63: Android 視窗介面

執行按鈕 View 跳頁

Page 64: Android 視窗介面

執行按鈕 View 跳頁

Page 65: Android 視窗介面

BMI 範例

Page 66: Android 視窗介面

BMI 計算範例• Body Mass Index = 體重 (kg)/( 身高 * 身高 )

(m)• 產生新專案 HelloBMI• 利用 Droiddraw 設計介面與產生 xml 介面檔– 修改 main.xml

• 撰寫 HelloBMI.java 程式– 利用按鈕 view 計算 BMI 值– 利用兩個 TextView 呈現結果

Page 67: Android 視窗介面

新專案 HelloBMI

Page 68: Android 視窗介面

BMI UI

• Body Mass Index = 體重 (kg)/( 身高 * 身高 )(m)

• 我們需要– 兩個顯示 view(TextView) 來提示填入身高體重

數字– 兩個輸入 view(EditText) 來填入身高體重數字– 需要一個按鈕 view(Button) 來開始計算– 需要兩個顯示 view(TextView) 來顯示計算結果

Page 69: Android 視窗介面

輸入 View

<EditTextandroid:id=“@+id/ 名稱 "

android:layout_width="wrap_content"

android:layout_height="wrap_content“

android:numeric="true”>

</EditText>

Page 70: Android 視窗介面

BMI UI

Page 71: Android 視窗介面

修改 main.xml

未修改前

Page 72: Android 視窗介面

修改 main.xml

修改後

Page 73: Android 視窗介面

R.java

自動產生

Page 74: Android 視窗介面

BMI UI 執行結果

Page 75: Android 視窗介面

BMI 程式 (I)

建立按鈕事件

Page 76: Android 視窗介面

BMI 程式 (II)

取得輸入值

計算 BMI

顯示 BMI

顯示身體狀況

Page 77: Android 視窗介面

BMI 範例結果

Page 78: Android 視窗介面

練 習• 重構:將 HelloBMI 中的 findViewById 與

setOnClickListener 改成副程式• 將字串改存入 string.xml 中,再在 HelloBMI.java

中顯示

Page 79: Android 視窗介面

練 習 解 答• 將 HelloBMI 中的 findViewById 與

setOnClickListener 改成副程式

Page 80: Android 視窗介面

More Samples• http://developer.android.com/resources/

samples/index.html

Page 81: Android 視窗介面

對話框 (Dialog) I

• 結構:AlertDialog.Builder builder=new AlertDialog.Builder( 專

案 .this);

builder.setTitle( 對話框標題訊息 );

builder.setMessage( 對話框內容 );

builder.show();

具備實體,會佔記憶體

Page 82: Android 視窗介面

對話框 (Dialog) I

Page 83: Android 視窗介面

對話框 (Dialog) I

Page 84: Android 視窗介面

對話框 (Dialog) II

• 結構:new AlertDialog.Builder( 專案 .this)

.setTitle( 對話框標題訊息 )

.setMessage( 對話框內容 )

.show();

匿名實體,不佔記憶體

Page 85: Android 視窗介面

對話框 (Dialog) II

Page 86: Android 視窗介面

對話框 (Dialog) II

結果相同,但不佔記憶體

Page 87: Android 視窗介面

對話框 (Dialog) 按鈕• 結構:new AlertDialog.Builder( 專案 .this)

.setTitle( 對話框標題訊息 )

.setMessage( 對話框內容 )

.setPositiveButton(" 確認 ",new DialogInterface.OnClickListener() {

public void onClick(DialogInterface dialog, int which) { // TODO Auto-generated method stub } }).show();

匿名實體,不佔記憶體

Page 88: Android 視窗介面

對話框 (Dialog) 按鈕

Page 89: Android 視窗介面

Toast訊息框• import android.widget.Toast;• Toast.makeText(專案 .this, 訊息 , 顯示時間 ).show();

Page 90: Android 視窗介面

Toast訊息框

Page 91: Android 視窗介面

Toast訊息框 +try catch

Page 92: Android 視窗介面

練 習• 加入使用者輸入 0 的錯誤訊息顯示• 使用 Try catch +Toast 顯示錯誤訊息

Page 93: Android 視窗介面

練 習 解 答

Page 94: Android 視窗介面

選 單• 使用手機硬體上的 MENU鍵進行呼叫顯示• 建立選單– onCreateOptionsMenu

• 處理選項動作– onOptionsItemSelected

Page 95: Android 視窗介面

選 單

Page 96: Android 視窗介面

選 單

onCreateOptionsMenu

onOptionsItemSelected

Page 97: Android 視窗介面

選單基本結構• 建立選單– onCreateOptionsMenu

• 處理選項動作– onOptionsItemSelected

Page 98: Android 視窗介面

加入選單選項• 加入選項– menu.add(0, 識別符號 , 0, 顯示文字 )

Page 99: Android 視窗介面

選 單

Page 100: Android 視窗介面

處理選項動作• 處理選項動作– onOptionsItemSelected

Page 101: Android 視窗介面

選 單

Page 102: Android 視窗介面

練 習• 在”結束”選項中加入詢問對話框• 對話框中有”確定”與”取消”按鈕• 按下”確定”就結束程式• 按下”取消”就取消結束程式的動作

Page 103: Android 視窗介面

選 單

Page 104: Android 視窗介面

練 習 解 答

Page 105: Android 視窗介面

選單選項加入圖示• 加入選項– menu.add(0, 識別符號 , 0, 顯示文字 ).setIcon();

Page 106: Android 視窗介面

選單選項加入圖示