112
Android 介介介介 介介介介介介 介介介 介介介 2012/4 V1 2012/8 V2 Android 介介介介介介介介介 介介介介介介介介

Android 介面設計

  • Upload
    cale

  • View
    45

  • Download
    0

Embed Size (px)

DESCRIPTION

Android 智慧型手機程式設計 程式設計與應用班. Android 介面設計. 建國科技大學 資管系 饒瑞佶 2012/4 V1 2012/8 V2. Android 介面設計. 全部都透過 XML 檔案來決定 res/layout 內 Activity 內透過 setContentView 來設定 當然 …. 需要 R 的幫忙. M V C Model. Model-View-Controller Model :儲存內容 View :顯示介面 Controller : 控制程式操作. 使用者. View. 要求動作. 顯示內容. - PowerPoint PPT Presentation

Citation preview

Page 1: Android 介面設計

Android 介面設計

建國科技大學 資管系饒瑞佶

2012/4 V1

2012/8 V2

Android 智慧型手機程式設計程式設計與應用班

Page 2: Android 介面設計

Android 介面設計• 全部都透過 XML 檔案來決定• res/layout 內• Activity 內透過 setContentView 來設定• 當然… . 需要 R 的幫忙

Page 3: Android 介面設計

MVC Model

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

View

Controller

Model

要求動作

顯示內容

使用者

查詢資料

提供資料

Page 4: Android 介面設計

Android 視窗介面

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

那咩講ㄏㄛ哩… .. 眼淚就ㄅㄧㄝ ㄇㄝ ㄌ一

Page 5: Android 介面設計

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

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

Page 6: Android 介面設計

XML

Page 7: Android 介面設計

XML

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

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

Page 8: Android 介面設計

XML• 原始 main.xml

root tag一定要有一定有名稱空間 xmlns

XML 表頭定義

Page 9: Android 介面設計

XML• 擴充後 main.xml

擴充後 tag

有幾個擴充後 tag ?

Page 10: Android 介面設計

多國語言

Page 11: Android 介面設計

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

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

Page 12: Android 介面設計

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

Page 13: Android 介面設計

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

Page 14: Android 介面設計

介面佈局Layout

Page 15: Android 介面設計

View Hierarchy

Page 16: Android 介面設計

Layout

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

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

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

Page 17: Android 介面設計

LinearLayout

Page 18: Android 介面設計

LinearLayout

Page 19: Android 介面設計

RelativeLayout

Page 20: Android 介面設計

RelativeLayout

Page 21: Android 介面設計

TableLayout

Page 22: Android 介面設計

介面檢視工具Hierarchy View

Page 23: Android 介面設計

Hierarchy View• 要先啟動 AVD SDK:hierarchyviewer

Page 24: Android 介面設計

Hierarchy View• 點兩下可預覽

Page 25: Android 介面設計

介面設計工具DroidDraw

Page 26: Android 介面設計

DroidDraw

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

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

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

• 單機版

Page 27: Android 介面設計

DroidDraw 網路版

產生 xml 碼

xml 碼

物件

版面

Page 28: Android 介面設計

DroidDraw 單機版

下載單機版

Page 29: Android 介面設計

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

Page 30: Android 介面設計

DroidDraw 單機版

產生 xml 碼

版面

物件

Page 31: Android 介面設計

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

Page 32: Android 介面設計

按鈕

Page 33: Android 介面設計

按鈕 View

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

Page 34: Android 介面設計

Jao 專案

1

Page 35: Android 介面設計

Jao 專案畫面

Button.java

Page 36: Android 介面設計

設計 main.xml

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

Page 37: Android 介面設計

設計 main.xml

原始 main.xml

Page 38: Android 介面設計

設計 main.xml

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

大小寫有差!

Page 39: Android 介面設計

設計 main.xml

代表有錯誤!

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

2

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

還有Relative layoutTable layout

Page 40: Android 介面設計

android:id

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

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

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

Page 41: Android 介面設計

設計 strings.xml

在 strings.xml 加入 button_large 文字對應

Page 42: Android 介面設計

預覽 main.xml

預覽 main.xml

Page 43: Android 介面設計

R.java

R.Java 自動加入資源

Page 44: Android 介面設計

加入圖檔

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

Page 45: Android 介面設計

AndroidManifest.xml

更改 Application 的 icon

1

2

Page 46: Android 介面設計

執行程式

1

Page 47: Android 介面設計

執行程式

目前只有畫面,沒有動作

Page 48: Android 介面設計

加入按鈕處理程式

1

2

3

main.xml中的 android:id屬性

Page 49: Android 介面設計

按鈕跳頁

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

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

sample_page.java

• 在 AndroidManiFest.xml 中加入Activity

Page 50: Android 介面設計

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

12

Page 51: Android 介面設計

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

複製 main.xml 的結構

Page 52: Android 介面設計

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

Page 53: Android 介面設計

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

1

Page 54: Android 介面設計

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

2

Page 55: Android 介面設計

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

複製 Button.java 的結構

Page 56: Android 介面設計

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

1

2

3

4

Page 57: Android 介面設計

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

Page 58: Android 介面設計

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

Page 59: Android 介面設計

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

Page 60: Android 介面設計

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

Page 61: Android 介面設計

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

console for output” 問題(如果有)

Page 62: Android 介面設計

執行按鈕跳頁

Page 63: Android 介面設計

執行按鈕跳頁

Page 64: Android 介面設計

執行按鈕跳頁

Page 65: Android 介面設計

執行按鈕跳頁

Page 66: Android 介面設計

跳畫面但不換 Activity只換 Layout

Page 67: Android 介面設計

BMI範例

Page 68: Android 介面設計

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

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

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

Page 69: Android 介面設計

新專案 HelloBMI

Page 70: Android 介面設計

BMI UI

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

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

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

Page 71: Android 介面設計

輸入 View

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

android:layout_width="wrap_content"

android:layout_height="wrap_content“

android:numeric="true”>

</EditText>

Page 72: Android 介面設計

BMI UI

Page 73: Android 介面設計

修改 main.xml

未修改前

Page 74: Android 介面設計

修改 main.xml

修改後

Page 75: Android 介面設計

R.java

自動產生

Page 76: Android 介面設計

BMI UI 執行結果

Page 77: Android 介面設計

BMI 程式 (I)

建立按鈕事件

Page 78: Android 介面設計

BMI 程式 (II)

取得輸入值

計算 BMI

顯示 BMI

顯示身體狀況

Page 79: Android 介面設計

BMI範例結果

Page 80: Android 介面設計

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

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

中顯示

Page 81: Android 介面設計

練 習 解 答• 將 HelloBMI 中的 findViewById 與

setOnClickListener 改成副程式

Page 82: Android 介面設計

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

samples/index.html

Page 83: Android 介面設計

對話框 (Dialog) I

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

案 .this);

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

builder.setMessage( 對話框內容 );

builder.show();

具備實體,會佔記憶體

Page 84: Android 介面設計

對話框 (Dialog) I

Page 85: Android 介面設計

對話框 (Dialog) I

Page 86: Android 介面設計

對話框 (Dialog) II

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

.setTitle( 對話框標題訊息 )

.setMessage( 對話框內容 )

.show();

匿名實體,不佔記憶體

Page 87: Android 介面設計

對話框 (Dialog) II

Page 88: Android 介面設計

對話框 (Dialog) II

結果相同,但不佔記憶體

Page 89: 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 90: Android 介面設計

對話框 (Dialog) 按鈕

Page 91: Android 介面設計

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

Page 92: Android 介面設計

Toast訊息框

Page 93: Android 介面設計

Toast訊息框 +try catch

Page 94: Android 介面設計

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

Page 95: Android 介面設計

練 習 解 答

Page 96: Android 介面設計

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

• 處理選項動作– onOptionsItemSelected

Page 97: Android 介面設計

選 單

Page 98: Android 介面設計

選 單

onCreateOptionsMenu

onOptionsItemSelected

Page 99: Android 介面設計

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

• 處理選項動作– onOptionsItemSelected

Page 100: Android 介面設計

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

menu.add(0, MENU_ABOUT, 0, "關於 BMI").setIcon(android.R.drawable.ic_menu_help);menu.add(0, MENU_QUIT, 0, "結束BMI").setIcon(android.R.drawable.ic_menu_close_clear_cancel);

Page 101: Android 介面設計

選 單

Page 102: Android 介面設計

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

Page 103: Android 介面設計

protected static final int MENU_ABOUT=Menu.FIRST; protected static final int MENU_QUIT=Menu.FIRST+1;@Overridepublic boolean onCreateOptionsMenu(Menu menu) {// TODO Auto-generated method stubmenu.add(0, MENU_ABOUT, 0, "關於 BMI").setIcon(android.R.drawable.ic_menu_help);menu.add(0, MENU_QUIT, 0, "結束 BMI").setIcon(android.R.drawable.ic_menu_close_clear_cancel);return super.onCreateOptionsMenu(menu);}

@Overridepublic boolean onOptionsItemSelected(MenuItem item) {// TODO Auto-generated method stubswitch(item.getItemId()){case MENU_ABOUT:

break;case MENU_QUIT:

break;}return super.onOptionsItemSelected(item);}

Page 104: Android 介面設計

選 單

Page 105: Android 介面設計

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

Page 106: Android 介面設計

選 單

Page 107: Android 介面設計

練 習 解 答

Page 108: Android 介面設計

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

Page 109: Android 介面設計

選單選項加入圖示

Page 110: Android 介面設計

控制螢幕方向• 預設是可以隨著手機方向旋轉而旋轉• 可以在 AndroidManiFest.xml 中設定

不旋轉 (很多 Game APP 就是這樣做 )– <activity android:name="Main"

android:screenOrientation="portrait"></activity>

Page 111: Android 介面設計

設計隨螢幕旋轉與大小無關的 UI

• 多使用 DashboardLayout• UI 裡面也有 include功能

請參考http://www.androidhive.info/2011/12/android-dashboard-design-tutorial/

Page 112: Android 介面設計

有興趣的,找找動態 Layout