ANDROID PROGRAMMING1

54
ANDROID PROGRAMMING1

description

ANDROID PROGRAMMING1. OUTLINE. Android 程式開發 專案架構 XML Dialog Toast Menu. 開發 ANDROID 的基本步驟. 程式規劃 & 架構設計 Project 包含哪些功能 需要哪些畫面 & 畫面間的流轉 需要之資料 & 其來源和格式 伺服器端支援 ? Database 的功能 ? 特殊權限 ? 後端服務 (Server)?. How to do it?. 把需要之介面畫出 ( 包含介面內包含之資訊及功能 ) 。 釐清每個介面的轉跳關係。 - PowerPoint PPT Presentation

Transcript of ANDROID PROGRAMMING1

Page 1: ANDROID PROGRAMMING1

ANDROID PROGRAMMING1

Page 2: ANDROID PROGRAMMING1

OUTLINE

Android 程式開發 專案架構 XML Dialog Toast Menu

Page 3: ANDROID PROGRAMMING1

開發 ANDROID 的基本步驟

程式規劃 & 架構設計

Project 包含哪些功能 需要哪些畫面 & 畫面間的流轉 需要之資料 & 其來源和格式 伺服器端支援 ? Database 的功能 ? 特殊權限 ? 後端服務 (Server)?

Page 4: ANDROID PROGRAMMING1

把需要之介面畫出 ( 包含介面內包含之資訊及功能 ) 。 釐清每個介面的轉跳關係。 釐清資料是取自網路或本機或 .. ,資料的存取較適用

database 或 file 。 後端服務需要長駐或只需在啟動時在後端執行,功能需要

的權限。

HOW TO DO IT?

Page 5: ANDROID PROGRAMMING1

程式開發步驟1. 實現 UI( 版面配置模式 & 介面元件 )2. 資料操作及儲存 ( 資料來源 & 儲存方式 )3. 實現多頁面跳轉

ex: 選取選單項目來跳轉 , 監聽事件發生的處理 如果跳轉暫時無法連結 → add a button

4. Add server5. 完善程式細節

ex: 程式需從網路取得資料 → AndroidManifest.xml 加入相關 uses-permission,

舊版本更新要加入 Android : version code & Android version name

Page 6: ANDROID PROGRAMMING1

測試 & 發佈程式

使用模擬器 ( 利用模擬器 & 控制面板 ) ex:DDMS ( 偵錯監視服務 Dalvik Debug Monitor

ServiceDalvik) 是 SDK 自帶的一個可視的偵錯工具。提供螢幕截圖、日誌存儲和行程檢測能力。

打包、產生簽暑金鑰檔案

可以發佈到 Android Market

Page 7: ANDROID PROGRAMMING1

API 查詢http://developer.android.com/reference/packages.html

Page 8: ANDROID PROGRAMMING1

專案架構

src/ : 原始碼 (source) 目錄 , 放置 .java 檔 gen/ : 自動生成 (generate) 目錄 , 內部檔案自動生成

R.java: 資源列表 , 包含使用者介面、圖像、字串,程式中用到的資源都會在這裡自動產生列表。

res/ : 資源 (resouce) 目錄 , 存放資料檔案、圖片、 xml 檔 layout/ :xml 介面描述檔 values/ :xml 格式的參數值描述檔 drawable/ : 用到的圖片

AndroidManifest.xml : 應用程式功能清單

Page 9: ANDROID PROGRAMMING1

XML 描述使用者介面

res/layout/main.xml

將介面顯示與程式邏輯分離ex. 哪裡顯示文字 , 哪裡顯示按鈕

程式的由此檔案描述

Page 10: ANDROID PROGRAMMING1

XML 檔

XML (Extensible Markup Language) 是一種標記描述語言,不管是語法還是看起來的樣子,都相當類似網頁所使用的 HTML 標記語言。

XML 被廣泛地運用在 Java 程式的設定中。「 main.xml 」 文件裡,第一行是每個 XML 描述檔固定的開頭內容,用來指示這個文字檔案是以 XML 格式描述的。

Page 11: ANDROID PROGRAMMING1

res/layout/main.xml<?xml version="1.0" encoding="utf-8"?>

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"        android:orientation="vertical"        android:layout_width="fill_parent"        android:layout_height="fill_parent"        >         <TextView              android:layout_width="fill_parent"             android:layout_height="wrap_content"           android:text=" @ string/hello"           />    </LinearLayout>

表示 xml 的版本、編碼方式

Page 12: ANDROID PROGRAMMING1

res/layout/main.xml<?xml version="1.0" encoding="utf-8"?>

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"        android:orientation="vertical"        android:layout_width="fill_parent"        android:layout_height="fill_parent"        >         <TextView              android:layout_width="fill_parent"             android:layout_height="wrap_content"           android:text=" @ string/hello"           />    </LinearLayout>

LinearLayout( 線性版面配置 )

FrameLayout( 框架版面配置 )TableLayout( 表格版面配置 )AbsoluteLayout( 絕對位置版面配置 )RelativeLayout( 相對位置版面配置 )

Page 13: ANDROID PROGRAMMING1

res/layout/main.xml<?xml version="1.0" encoding="utf-8"?>

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"        android:orientation="vertical"        android:layout_width="fill_parent"        android:layout_height="fill_parent"        >         <TextView              android:layout_width="fill_parent"             android:layout_height="wrap_content"           android:text=" @ string/hello"           />    </LinearLayout>

走向

介面寬度

介面長度

Page 14: ANDROID PROGRAMMING1

res/layout/main.xml<?xml version="1.0" encoding="utf-8"?>

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"        android:orientation="vertical"        android:layout_width="fill_parent"        android:layout_height="fill_parent"        >         <TextView              android:layout_width="fill_parent"             android:layout_height="wrap_content"           android:text=" Hello World, Bmi!”

           />    </LinearLayout>

是顯示文字到螢幕上

Page 15: ANDROID PROGRAMMING1

VIEW

顯示介面類ex. 文字、按鈕、輸入欄位

版面配置類ex. Layout 、 Tab

狀態提示類ex. 進度條、等待圈

Page 16: ANDROID PROGRAMMING1

BMI 程式 BMI 值 = 體重 (kg) / 身高 (m)^2

Page 17: ANDROID PROGRAMMING1

MAIN.XML

<TextViewandroid:layout_width="fill_parent“android:layout_height="wrap_content“android:text="身高 (cm)“/><EditText android:id="@+id/height“    android:layout_width="fill_parent“    android:layout_height="wrap_content“    android:numeric="integer"    android:text=""

「 android:phoneNumber=“true” 」僅允許輸入電話號碼「 android:autoLink=“all” 」自動將文字轉成超連結「 android:numeric=“true” 」 限制使用者只能輸入數字

Page 18: ANDROID PROGRAMMING1

<TextView android:layout_width="fill_parent"    android:layout_height="wrap_content"    android:text="體重 (kg)"    />

     <EditText android:id="@+id/weight"    android:layout_width="fill_parent"     android:layout_height="wrap_content"     android:numeric="integer"     android:text=""    />

MAIN.XML

Page 19: ANDROID PROGRAMMING1

         <Button android:id="@+id/submit"            android:layout_width="fill_parent"            android:layout_height="wrap_content"            android:text=" 計算 BMI 值 " /> <TextView android:id="@+id/result"            android:layout_width="fill_parent"            android:layout_height="wrap_content"            android:text=""            />             <TextView android:id="@+id/suggest"                 android:layout_width="fill_parent"                 android:layout_height="wrap_content"                 android:text=""

MAIN.XML

Page 20: ANDROID PROGRAMMING1

將字串抽離 XML res/values/strings.xml<?xml version="1.0" encoding="utf-8"?>

<resources>    <string name="app_name">BMI</string>    <string name="bmi_height">身高 (cm)</string>    <string name="bmi_weight">體重 (kg)</string>    <string name="bmi_btn"> 計算 BMI 值 </string>    <string name="bmi_result">你的 BMI 值是 </string></resources>

<string name="識別代號 "> 文字敘述 </string>

Page 21: ANDROID PROGRAMMING1

存取識別符號

<EditText android:id="@+id/height”  />

XML占空間 Android 並不直接使用 XML 檔案,而是透過 Android

開發工具,自動將 XML 描述檔轉換成資源檔案。一旦應用程式要操作某個介面元件,或是使用任何種類的資源( 字串、圖片、圖示、音效 ...) ,都使用索引來查詢。

@[ 類型 ]/[識別符號 ]

Page 22: ANDROID PROGRAMMING1

R.java    public final class R {

        public static final class attr {        }        public static final class drawable {            public static final int icon=0x7f020000;        }        public static final class id {            public static final int height=0x7f050000;            public static final int result=0x7f050003;            public static final int submit=0x7f050002;            public static final int suggest=0x7f050004;            public static final int weight=0x7f050001;        }        public static final class layout {            public static final int main=0x7f030000;        }        public static final class string {            public static final int app_name=0x7f040000;        }    }

圖片

識別符號

介面描述

文字

屬性

Page 23: ANDROID PROGRAMMING1

       

<TextView android:layout_width=“fill_parent“ android:layout_height=”wrap_content“ android:text=”身高 (cm)“ />

<TextView         android:layout_width="fill_parent"         android:layout_height="wrap_content"         android:text="@string/bmi_height"        />

<string name="bmi_height">身高 (cm)</string>

AFTER

BEFORE

Page 24: ANDROID PROGRAMMING1

.JAVA

專案開啟時已經寫好了

Page 25: ANDROID PROGRAMMING1

package test.BMI;import android.app.Activity;import android.os.Bundle;

public class BMI extends Activity { /** Called when the activity is first created. */ @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.main); }}

Page 26: ANDROID PROGRAMMING1

package test.BMI;import android.app.Activity;import android.os.Bundle;

public class BMI extends Activity { /** Called when the activity is first created. */ @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.main); }}

Page 27: ANDROID PROGRAMMING1

package test.BMI;import android.app.Activity;import android.os.Bundle;

public class BMI extends Activity { /** Called when the activity is first created. */ @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.main); }}

與記憶體管理有關

Page 28: ANDROID PROGRAMMING1

package test.BMI;import android.app.Activity;import android.os.Bundle;

public class BMI extends Activity { /** Called when the activity is first created. */ @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.main); }}

Page 29: ANDROID PROGRAMMING1

package test.BMI;import android.app.Activity;import android.os.Bundle;

public class BMI extends Activity { /** Called when the activity is first created. */ @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.main); }}

Page 30: ANDROID PROGRAMMING1

BMI.JAVA

Page 31: ANDROID PROGRAMMING1

BMI.JAVA

Page 32: ANDROID PROGRAMMING1

觸發事件函式

Page 33: ANDROID PROGRAMMING1

編輯欄位

Page 34: ANDROID PROGRAMMING1

運算

Page 35: ANDROID PROGRAMMING1

顯示結果

Page 36: ANDROID PROGRAMMING1

格式

Page 37: ANDROID PROGRAMMING1

顯示建議

Page 38: ANDROID PROGRAMMING1

DIALOG

Page 39: ANDROID PROGRAMMING1
Page 40: ANDROID PROGRAMMING1

OPENOPTIONSDIALOG()函式內容建立了一

個 AlertDialog 對話框類別實體

Page 41: ANDROID PROGRAMMING1
Page 42: ANDROID PROGRAMMING1
Page 43: ANDROID PROGRAMMING1

最後一定要顯示

Page 44: ANDROID PROGRAMMING1

DIALOG 加入按鈕

沒做事結束對話框

Page 45: ANDROID PROGRAMMING1
Page 46: ANDROID PROGRAMMING1

TOAST

Page 47: ANDROID PROGRAMMING1

顯示時間長短

Page 48: ANDROID PROGRAMMING1

MENU

Page 49: ANDROID PROGRAMMING1

建立選單

處理選項動作

Page 50: ANDROID PROGRAMMING1

建立選單

Page 51: ANDROID PROGRAMMING1
Page 52: ANDROID PROGRAMMING1

處理選項動作

Page 53: ANDROID PROGRAMMING1
Page 54: ANDROID PROGRAMMING1

小技巧 Ctrl+Shift+o

自動 import 需要的東西