Android 基礎教學

Size: px
Start display at page:

Download "Android 基礎教學"

Transcription

1 Android 基礎教學 吳柏翰 1

2 Outline Android 歷史起源 Android 優勢與市場未來趨勢 安裝 Android SDK 建立專案 模擬器的執行與操作 使用 Log 及 IDE 除錯工具 實機運作 2

3 Android 歷史起源 起源 隨著手機與網際網路結合, 上網普及化之後, 使用者對手機的功能有截然不同的需求 透過網際網路, 各種新的服務與應用應運而生, 使用者也希望手機平台能像電腦一樣, 讓使用者能發揮設計創意, 自主地開發服務 因此智慧型手機隨之上市, 於是微軟公司以其在電腦終端作業系統霸主的地位, 推出智慧型手機專用之 WinCE 及 Window Mobile 作業平台 3

4 Android 歷史起源 由於微軟公司的作業系統並不開放原始程式碼, 因此除有版權問題外, 也因無法深入作業系統核心而限縮了應用軟體發展的空間 有鑑於此, 以開放程式碼 Linux 作業系統為基礎發展 Android 手機平台的構想應運而生 Android 字面上的意義是指科技小說裏面的機器人, 隱含有新奇 能接受指示, 且具有智慧的意思 它是 Google 在 2007 年鼓吹它為手機系統平台, 初期由 Google 開發, 後由開放手機聯盟 (Open Handset Alliance) 接手後續發展推廣 4

5 Android 歷史起源 由於 Android 開放式架構的特性, 開發人員可以很容易地進行系統擴充 Android 平台具有以下特點 : 系統的開放性 應用程式的對等性 跨應用程式的整合性 開發環境的效率性 5

6 Android 歷史起源 架構簡介 Android 使用堆層 (Stack) 做為軟體平台的建構方式 堆疊主要分為四層, 分別為作業系統核心層 系統函式庫層 應用架構層 及應用程式層, 如下頁圖所示 作業系統核心層以 Linux 核心工作為基礎, 提供作業系統基本功能及一些硬體驅動程式 6

7 Android 歷史起源 應用程式層 (Application Program) 應用架構層 (Application Framework) 系統函式庫層 (Libraries) Android 執行環境 (Android Runtime) 核心函式庫 (Core Libraries) Dalvik 虛擬機器 (DVM) 作業系統核心底層 (Linux Kernel) Android 平台架構圖 7

8 Android 歷史起源 8

9 Android 歷史起源 要注意到的一點是, 目前 Android 的 Linux 核心與常用的 GNU/Linux 並不完全相同,GNU/Linux 有的東西在 Android Linux 核心中並不一定有 為提供在手機環境使用,Android 的 Linux 核心特別加強了程式間通訊 (Inter Process Communication, IPC) 及電源管理 (Power Management) 的功能 9

10 Android 歷史起源 作業系統核心底層之上是函式庫及 Android 執行環境 (Android Runtime), 函式庫有許多開放原始碼的有用函式, 例如,OpenGL libc (bionic) WebKit 等等 而 Android Runtime 主要包括核心函式庫 (Core Libraries) 及 Android 專有之虛擬機器 Dalvik (Dalvik Virtual Machine, DVM) 應用架構層主要是提供 Android 應用程式的 API, 包括位置管理 資源管理 電話管理 提示管理等一些軟體套件, 應用架構層再透過 JNI 去呼叫下層函式庫 10

11 Android 歷史起源 若有新的函式加到函式庫裏, 則應用架構層就需要加以擴充 透過應用架構層的規範, 可以對軟體函式的增加做較好的管理 有了上述三層的支援, 系統已將硬體元件抽象化 (Hardware Abstraction), 並以層次的架構提供各種有用且方便取用的函式庫, 再經由其 DVM 建構的跨平台 Java 開發環境, 使用者即可在應用程式層設計 Android 平台上的各種好玩的應用服務 11

12 Android 歷史起源 系統特性 應用程式框架 支援元件的重用與替換 Dalvik 虛擬機 專門為移動設備做了優化 內部整合瀏覽器 該瀏覽器基於開源的 WebKit 引擎 優化的圖形庫 包括 2D 和 3D 圖形庫,3D 圖形庫基於 OpenGL ES 1.0 ( 硬體加速可選 ) SQLite 結構化的資料存儲 多媒體支援 包括常見的音效 視訊和靜態印象檔格式 MPEG4 H.264 MP3 AAC AMR JPG PNG GIF 豐富的開發環境 模擬器, 除錯工具, 記憶體及性能分析, 和 Eclipse 整合開發環境 12

13 Android 優勢與市場未來趨勢 開發工作 Android 移植開發的最終目的是讓手機或其他移動產品能夠執行強大的 Android 系統, 使之成為一個移動作業平台 主要的工作集中在以下兩個方面 : Linux 中的相關設備驅動程式 Android 本地框架中的硬體抽象層 13

14 Android 優勢與市場未來趨勢 系統開發 Android 系統開發的一個比較典型的實例就是當系統需要某種功能時, 為了給 Java 層次的應用程式提供讀取的介面, 需要從底層到上層的整體開發, 步驟如下 : 增加 C 或者 C++ 本地庫 ( 如底層 driver) 定義 Java 層所需要的類 ( 系統 API) 將所需要的程式碼封裝成 JNI 結合 Java 類和 JNI 應用程式讀取 Java 類 ( 上層應用 ) 14

15 安裝 Android SDK Only Idea Android 提供免費且跨平台的整合開發環境, 只要電腦能連接上網路, 我們隨時都能下載相關工具下來, 並開始開發 Android 應用程式 除了不用擔心平台相容性問題,Android 也提供相當容易的開發工具, 讓任何使用者都可以更專心於程式設計上 15

16 安裝 Android SDK 支援的作業系統 Windows XP 或 Vista Mac OS X 或之後版本 ( 適用 x86 架構的 Intel Mac) Linux (Ubuntu 6.10) Android 開發工具 JDK 6 Java 程式語言開發工具 Android SDK 1.5r2 Android 程式開發套件, 包含 Android 手機模擬器 (Emulator) Eclipse IDE (Ganymede) 程式撰寫工具 ADT Eclipse Android 擴充套件 16

17 安裝 Android SDK 安裝步驟 安裝 Java (JDK 6) 安裝 Eclipse ADT 擴充套件 更新 ADT 擴充套件 Help Software Update 選擇安裝方式 Available Software Add Site Local or 輸入網址 以 Local 方式安裝 解壓縮 ADT 尋找解壓縮資料夾 點選 OK 搜尋 ADT 套件 安裝 ADT 套件 安裝 ADT 套件 勾選 I accept the 點選 Finish 開始安裝 檢查 ADT 是否安裝成功 Window Preferences 檢查 Android 標籤是否出現 17

18 安裝 Android SDK 安裝 Android SDK 解壓縮後重新命名為 android-sdk,sdk 資料夾可放於任意位置, 故本教材統一放於 C 槽底下 18

19 安裝 Android SDK 安裝 Android Development Tools (ADT) 開啟 Eclipse 選取 Help Install New Software 19

20 安裝 Android SDK 安裝 Android Development Tools (ADT) 開啟 Eclipse 選取 Help Install New Software 選擇 Add 按鈕 20

21 安裝 Android SDK 選擇 ADT 資料夾 安裝 Android Development Tools (ADT) 選擇 Lgcal.. 按鈕 確定 21

22 安裝 Android SDK 安裝 Android Development Tools (ADT) 檢查路徑正確後按下 ok 22

23 安裝 Android SDK 安裝 Android Development Tools (ADT) 勾選 Developer Tools(Android DDMS and ADT) 點選 下一步 23

24 安裝 Android SDK 安裝 Android Development Tools (ADT) 列出準備安裝的 Package 詳細內容, 此處直接點選 下一步 即可 24

25 安裝 Android SDK 安裝 Android Development Tools (ADT) 最後點選 Finish 即可 25

26 安裝 Android SDK 安裝 Android Development Tools (ADT) 安裝完成後需要重新啟動 Eclipse 26

27 安裝 Android SDK 設定 Android SDK 細項 點選 Window Preferences 進行 Android SDK 細項設定 27

28 安裝 Android SDK 設定 Android SDK 細項 點選 Browse 並選擇 Android SDK 存放位置 28

29 安裝 Android SDK 設定 Android SDK 細項 設定完成後選擇 OK 完成設定 ( 其他選項可根據需求作修改 ) 29

30 安裝 Android SDK 安裝 Android SDK 30

31 安裝 Android SDK 安裝 Android SDK 選擇 Installed Packages, 並點選 Update All 31

32 安裝 Android SDK 安裝 Android SDK 點選 Accept All, 接著按下 Install Accepted 32

33 安裝 Android SDK 安裝 Android SDK 系統會詢問是否重新啟動 ADB, 點選 是 重新啟動 33

34 安裝 Android SDK 安裝 Android SDK 安裝完成後點選 Close 即完成安裝 34

35 建立專案 建立 Android 專案 File Other 選擇 Android Project Next 進入設定頁面 設定 Android 專案 選擇 Build Target 選擇用來編譯專案的 SDK 版本 輸入 Project name 自訂 Android 專案名稱 輸入 Application name 自訂顯示在應用程式上的標題 輸入 Package Name 套件 (Package) 名稱, 用於辨別不同類別 (class) 輸入 Create Activity 建立並自訂 Activity 子類別名稱,Activity 用於啟動程式和控制程式流程, 或是根據需要控制螢幕 界面 Min SDK Version 專案所支援的最低 SDK 版本 Debug 編譯器相關設定 Debug Debug Configurations 點兩下 Android Application Debug 相關設定 選擇 Target 標籤 勾選剛剛建立的模擬器名稱 Apply 編譯器測試 Debug 點選剛剛建立的編譯器 35

36 建立專案 36

37 名稱 Project Name 建立專案 Application Name Package Name Create Activity Build Target Min SDK Version 描述 專案資料夾名稱 應用程式標題 套件名稱, 例如 : java.net java.io, 可自行命名 是否建立這個是項目的主要類別 選擇編譯專案的 SDK 版本, 選擇後會填入下列的 Min SDK Version 中 應用程式支援的最低 SDK 版本

38 建立專案 Android 針對 res 也提供了不同種類的編輯器, 畫面上使用的是 Android Layout Editor 38

39 建立專案 選擇 RUN Debug Configuration 設定 39

40 建立專案 建立 Android 模擬器 點選 Android Application, 右鍵點選 New 新增一個新設定 40

41 建立專案 建立 Android 模擬器 1. 在 Name: 輸入此設定名稱 NewProject_2 2.Browse 選擇以建立好的 Project 3.Launch Action 選擇 Launch Default Activity 41

42 模擬器的執行與操作 建立 Android 模擬器 進入模擬器設定頁面 Window Android AVD Manager 設定與建立模擬器 輸入 Name 自訂模擬器名稱 選擇 Target( 建議為 Google APIs-3.1) 使用模擬器 API 選擇 Skin 模擬器佈景大小與顯示方式 點選 Finish 顯示模擬器於清單中 42

43 建立 Android 模擬器 選擇 Window 設定 AVD 模擬器環境 模擬器的執行與操作 43

44 模擬器的執行與操作 Name: 打上模擬器名稱 Target: 選擇 Android API Level 9 選擇完成後, 按下 Create AVD 即完成設定 44

45 模擬器的執行與操作 建立 Android 模擬器 選擇完成後, 按下 Start 即可開啟模擬器 45

46 使用 Log 及 IDE 除錯工具 Error Log 選擇 Show View Error Log 設定 Error Log Message Window 46

47 使用 Log 及 IDE 除錯工具 Error Log 此時下方即會出現 Error Log Message Window 47

48 使用 Log 及 IDE 除錯工具 IDE 除錯工具 48

49 使用 Log 及 IDE 除錯工具 49

50 實機運作 Android SDK 安裝 建立第一支 Hello World 專案 Run 模擬器, 並可以成功秀出 Hello World! 50

51 實機運作 51

52 Android 圖形介面設計 吳柏翰 1

53 Outline 圖形操作介面設計 相關常用 API 核心框架 程式生命週期 畫面切換的流程 2

54 圖形操作介面設計 Android 與 UI 的關係 Style 樣式設計 視窗事件處理 Event Listeners Event Handlers TouchMode Handling Focus 3

55 Android 與 UI 的關係 使用者介面有兩種方式可以呈現 與主程式混合寫在一起 寫在 XML 中 用來顯示資料 影像或是其他訊息的元件, 都被叫做 View View 是大部分 UI 的父類別 4

56 Android 與 UI 的關係 ViewGroup 是一種 View 容器, 本身也是一種 View, 但是可以包含 View 及其他 ViewGroup 元件的 View 5

57 Style 樣式設計 設計使用者介面的兩種方式 Styles 是一個包含一種或者多種格式化屬性的集合, 可以將其套用在佈局 XML 的單一元素中 Themes 是一個包含一種或者多種格式化屬性的集合, 可以將其套用在應用程式中所有的活動當中或其中的某個活動 6

58 Style 樣式設計 Android 系統中有提供一些預設的 style 如果要產生客製化的 style, 首先要在 res/values 目錄下建立一個名為 style.xml 的文件 7

59 布局文件 (res/values/style.xml): Style 樣式設計 <?xml version="1.0" encoding="utf-8"?> <resources> <style name="styletext1"> </style> <item name="android:textsize">18sp</item> <item name="android:textcolor">#ec9237</item> <style name="styletext2"> </style> </resources> <item name="android:textsize">14sp</item> <item name="android:textcolor">#ff7f7c</item> <item name="android:fromalpha">0.0</item> <item name="android:toalpha">0.0</item> style.xml 定義內容如下 8

60 Style 樣式設計 布局文件 (res/layout/main.xml): <?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns: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" /> <TextView style = "@style/styletext1" android:text="styletext1" android:id="@+id/textview01" android:layout_width="wrap_content" android:layout_height="wrap_content"> </TextView> <TextView style = "@style/styletext2" android:text="styletext2" android:id="@+id/textview02" android:layout_width="wrap_content" android:layout_height="wrap_content"> </TextView> </LinearLayout> 接著加入兩個 TextView, 修改 res/layout/main.xml 9

61 Style 樣式設計 10

62 視窗事件處理 利用 UI 的事件處理 (UI Events), 和使用者 互動 : 在 Android 中有超過一種以上監聽使用者與應用程式互動的方法 當事件發生在使用者介面上時, 截取使用者與特定 View 互動的事件, 在 View 類別中就提供了此類的方法 11

63 視窗事件處理 Android framework 呼叫不同的 view 中, 針對許多 UI 事件的方法 例如 : 當一個 View( 按鈕 ) 被點選, 這時 ontouchevent() 方法就會被呼叫 為了監聽這個動作, 必需繼承及覆寫這個方法, 但為了處理這類事件, 每個 View 都需要被繼承, 實際上來說並不實用 View 類別也包含巢狀介面的集合, 使得這些事件可以更容易去定義, 這些介面就被稱為 event listeners 12

64 Event Listeners 一個 event listener 在 View 類別中是一個介面並包含一個 callback 的方法 當使用者與 View 的物件互動, 此 listener 將會被註冊, 這些方法將會由 Android framework 所呼叫 13

65 Event Listeners event listener 有下列幾種 callback 方法 : onclick() onlongclick() onfocuschange() onkey() ontouch() oncreatecontextmenu() 14

66 Event Listeners 程式碼 (src/ncu/bnlab/onclicklistenerexample.java): public OnClickListener msendlistener = new OnClickListener() { }; public void onclick(view v) { } /* 當按鈕被按下所需執行的動作 */ Toast.makeText( OnClickEX2.this, Toast.LENGTH_LONG).show(); public void oncreate(bundle savedinstancestate) { } super.oncreate(savedinstancestate); setcontentview(r.layout.main); Button button = (Button)findViewById(R.id.send); /* 註冊 onclick listener */ button.setonclicklistener(msendlistener); 此處針對 Event Listeners 撰寫一範例, 改寫 onclick 事件 15

67 Event Listeners 針對按鈕撰寫點擊事件, 當按下按鈕時, 下方會出現 Toast 的訊息 16

68 Event Listeners 程式碼 (src/ncu/bnlab/onclicklistenerexample2.java): public void oncreate(bundle savedinstancestate) { super.oncreate(savedinstancestate); setcontentview(r.layout.main); Button button = (Button)findViewById(R.id.send); // 註冊 onclick listener button.setonclicklistener(this) 另外可以把 OnClickListener 作 } 為活動的一部分來實作會更方便, public void onclick(view v) 這將避免額外的問題 { // 當按鈕被按下所需執行的動作 Toast.makeText( this, "Yes.", Toast.LENGTH_LONG).show(); } 17

69 Event Listeners 第二個範例中 onclick() 沒有回傳值, 但是一些其它 event listener 必需回傳一個布林值 對於其中一些 callback, 原因與 event 相關, 詳細說明如下 - onlongclick() 回傳一個布林值表示是否已經處理了這個事件而不再進一步處理 18

70 - onkey() Event Listeners 回傳一個布林值來表示是否已經處理了這個事件而不再進一步處理 - ontouch() 回傳一個布林值來表示是否已經處理了這個事件 重要的是這個事件可以有多個彼此跟隨的動作 19

71 Event Listeners 按鍵事件總是傳遞給當前焦點所在的 View 它們從 View 層次的頂層開始被分發, 然後依次向下, 直到到達適合的目標 20

72 Event Handlers 如果從 View 建立一個客製化元件, 那麼將定義一些 callback 方法當作預設的事件處理器 - onkeydown(int, KeyEvent) - onkeyup(int, KeyEvent) - ontrackballevent(motionevent) - ontouchevent(motionevent) - onfocuschanged(boolean, int, Rect) 21

73 Event Handlers 不屬於 View 類別的一部分, 但可以直接影響處理事件的方式 : - Activity.dispatchTouchEvent(MotionEvent) - ViewGroup.onInterceptTouchEvent(MotionEvent) - ViewParent.requestDisallowInterceptTouchEvent (boolean) 22

74 TouchMode 觸控模式 (TouchMode) 設備具有觸控功能, 而且使用者透過觸控來和 UI 互動, 不需要針對焦點項目做提醒, 或者設定焦點到一個特定的 View, 使用者也可以得知哪個項目將接受輸入 23

75 TouchMode isfocusableintouchmode() 對於一個具備觸控功能的裝置, 當使用者觸碰螢幕, 設備就會進入觸控模式 因此只有 isfocusableintouchmode() 方法回傳 true, View 才可取得焦點 isintouchmode() 為了查詢目前狀態, 可以呼叫 isintouchmode() 來查看此裝置是否處於觸控模式中 24

76 Handling Focus Framework 將根據使用者輸入去處理一般的焦點移動, 這包含當 View 刪除 隱藏或者新 View 出現時改變焦點 isfocusable() View 透過 isfocusable() 方法表示取得焦點的意圖 setfocusable() 呼叫 setfocusable(), 可以改變 View 是否可接受 焦點 25

77 Handling Focus isfocusableintouchmode() 在觸控模式下, 可以透過 isfocusableintouchmode() 查詢一個 View 是否允許接受焦點 setfocusableintouchmode() 透過 setfocusableintouchmode(), 來改變 isfocusableintouchmode() 查詢的 view 26

78 Handling Focus: <LinearLayout Handling Focus android:orientation="vertical"... > <Button /> <Button /> </LinearLayout> 透過覆寫佈局文件中的 XML 屬性 : nextfocusdown nextfocusleft nextfocusright 和 nextfocusup 為失去焦點的 View 增加這些屬性, 屬性值為擁有焦點的 ViewID 27

79 相關常用 API 元件佈局 文字元件 表單元件 對話視窗元件 選單元件 顯示元件 28

80 元件佈局 LinearLayout RelativeLayout TableLayout 29

81 LinearLayout 線性佈局共有兩個方向 : 垂直 (vertical) 水平 (horizontal) 決定垂直或是水平的屬性為 Orientation android:orientation="vertical" 30

82 LinearLayout 線性佈局就是將在 < LinearLayout > 內的元件以線性的方式來呈現 31

83 LinearLayout 在這個範例中, 使用了 <TextView> 元件, 共使用了三個 <TextView>, 這三個元件都以垂直向下的方式來呈現 32

84 LinearLayout 布局文件 (res/layout/main.xml): <?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android=" android:orientation="vertical" android:layout_width="fill_parent" android:layout_height="fill_parent"> <TextView android:text=" 這是第一列 " android:textsize="22sp" android:layout_width="wrap_content" android:layout_height="wrap_content" /> <TextView android:text=" 這是第二列 " android:textsize="22sp" android:layout_width="wrap_content" android:layout_height="wrap_content" /> <TextView android:text=" 這是第三列 " android:textsize="22sp" android:layout_width="wrap_content" android:layout_height="wrap_content" /> </LinearLayout> 33

85 android:orientation LinearLayout 在 <LinearLayout> 中, 此屬性代表元件的排列是垂直或水平佈局 android:layout_width 代表此元件佈局的寬度, 若值為 fill_parent 則會填滿 parent 的寬度 ; 若值為 wrap_content 則元件寬度會依照內容大小而調整 34

86 LinearLayout android:layout_height 代表此元件佈局的高度, 若值為 fill_parent 則會填滿 parent 的高度 ; 若值為 wrap_content 則元件高度會依照內容大小而調整 android:layout_margin 指定這個 view 距離上下左右的額外距離 35

87 LinearLayout android: layout_marginbottom 指定這個 view 距離下方的額外距離 android: layout_marginleft 指定這個 view 距離左方的額外距離 android: layout_marginright 指定這個 view 距離右方的額外距離 android: layout_margintop 指定這個 view 距離上方的額外距離 36

88 RelativeLayout 37

89 RelativeLayout 用 RelativeLayout 展示如 LinearLayout 的結果 38

90 RelativeLayout 布局文件架構 (res/layout/main.xml): <!-- 顯示第一行的 TextView --> <!-- 顯示第二行的 TextView --> TextView02" TextView01" <!-- 顯示第三行的 TextView --> TextView03" TextView02" 程式以 TextView01 為參考,TextView02 置放在 TextView01 下方,TextView03 放置在 TextView02 下方 39

91 布局文件架構 (res/layout/main.xml): <?xml version="1.0" encoding="utf-8"?> RelativeLayout <RelativeLayout xmlns:android=" android:layout_width="fill_parent" android:layout_height="fill_parent"> <TextView android:text=" 這是第一列 " android:textsize="30sp" android:layout_width="wrap_content" android:layout_height="wrap_content" /> <TextView android:text=" 這是第二列 " android:textsize="30sp" android:layout_width="wrap_content" android:layout_height="wrap_content" /> <TextView android:text=" 這是第三列 " android:textsize="30sp" android:layout_width="wrap_content" android:layout_height="wrap_content" /> </RelativeLayout> 此範例用到三個 TextView, 利用三個 TextView 作 RelativeLayout 40

92 RelativeLayout android:layout_above 置於目標 id 元件的上方 android:layout_alignbaseline 置於與目標 id 元件同樣的基準線上 android:layout_alignbottom 讓自己的下邊界與目標 id 元件的下邊界在同一個位置 41

93 RelativeLayout android:layout_alignleft 讓自己的左邊界與目標 id 元件的左邊界在同一位置 android:layout_alignparentbottom 若為 true, 讓自己的下邊界與 Parent 的下邊界同位置 android:layout_alignparentleft 若為 true, 讓自己的左邊界與 Parent 的左邊界同位置 42

94 RelativeLayout android:layout_alignparentright 若為 true, 讓自己的右邊界與 Parent 的右邊界同位置 android:layout_alignparenttop 若為 true, 讓自己的上邊界與 Parent 的上邊界同位置 android:layout_alignright 讓自己的右邊界與目標 id 元件的右邊界在同一位置 43

95 RelativeLayout android:layout_aligntop 讓自己的上邊界與目標 id 元件的上邊界在同一個位置 android:layout_alignwithparentifmissing 若設為 true, 當參考的目標 id 不可用時, 會以 Parent 為參考目標 android:layout_below 置於目標 id 元件的下方 44

96 RelativeLayout android:layout_centerhorizontal 若為 true, 置於 Parent 水平位置的中心 android:layout_centerinparent 若為 true, 置於 Parent 水平以及垂直位置的中心 android:layout_centervertical 若為 true, 置於 Parent 垂直位置的中心 android:layout_toleftof/torightof 置於目標 id 元件的左方 / 右方 45

97 TableLayout 46

98 TableLayout 範例使用了三個 <TableRow>, 意即有三個 row 47

99 TableLayout 布局文件 -1(res/layout/main.xml): <?xml version="1.0" encoding="utf-8"?> <TableLayout xmlns:android=" android:layout_width="fill_parent" android:layout_height="fill_parent"> <TableRow android:layout_margintop="20px"> <TextView android:layout_column="0" android:text=" 第一列 \n 第一行 " android:textsize="22sp" android:layout_marginleft="60px"/> <TextView android:layout_column="1" android:text=" 第一列 \n 第二行 " android:textsize="22sp" android:layout_marginleft="60px"/>/> </TableRow> <TableRow android:layout_margintop="20px"> <TextView 48

100 TableLayout 布局文件 -2(res/layout/main.xml): android:layout_column="0" android:text=" 第二列 \n 第一行 " android:textsize="22sp" android:layout_marginleft="60px"/> <TextView android:layout_column="1" android:text=" 第二列 \n 第二行 " android:textsize="22sp" android:layout_marginleft="60px"/>/> </TableRow> <TableRow android:layout_margintop="20px"> <TextView android:layout_column="0" android:text=" 第三列 \n 第一行 " android:textsize="22sp" android:layout_marginleft="60px"/> <TextView android:layout_column="1" android:text=" 第三列 \n 第二行 " android:textsize="22sp" android:layout_marginleft="60px"/>/> </TableRow> </TableLayout> 49

101 文字元件 TextView AutoCompleteTextView 50

102 TextView TextView 是個基本常用的元件 可使用 XML 來操作 可使用程式碼中的 Method 方法來操作 下列敘述 XML 與 Method 相對應之屬性功能 格式為 XML <-> Method 51

103 TextView android:autolink <-> setautolinkmask(int) 可讓文字上的連結自動變成可點擊的連結 android:gravity <-> setgravity(int) 設定文字在 View 中 x 軸和 y 軸相關數值 android:height <-> setheight(int) 設定 TextView 的高度 android:width <-> setwidth(int) 設定 TextView 的寬度 52

104 TextView android:hint <-> sethint(int) 當 Text 是空的時候, 就會顯示 hint 中的文字 android:lines <-> setlines(int) 設置 TextView 高度為幾個 Line 的高度, 值必須為整數型別 android:maxlength <-> setfilters(inputfilter) 設定 TextView 文字的最大長度 53

105 TextView android:password <-> settransformationmethod(transformation) 讓 Text 顯示成其他符號, 常用於輸入或顯示密碼時 android:text <-> settext(charsequence) 顯示的文字 android:textstyle <-> settypeface(typeface) 設定文字樣式 54

106 TextView android:textcolor <-> settextcolor(colorstatelist) 設定文字的顏色 android:textcolorlink <-> setlinktextcolor(int) 設定連結的顏色 android:textsize <-> settextsize(float) 設定文字大小 55

107 TextView 若點擊上述的網址, 則會自動開啟瀏覽器跳至指定之網頁 56

108 TextView 純粹用 XML 語法產生連結 (res/layout/main.xml): <?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns: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:gravity="center" android:autolink="web" android:text="google - /> <TextView android:layout_width="fill_parent" android:layout_height="wrap_content" android:gravity="center" android:autolink="web" android:text="yahoo - /> </LinearLayout> 設置 autolink 為 web 設置 autolink 為 web 57

109 布局文件 (res/layout/main.xml): <?xml version="1.0" encoding="utf-8"?> TextView <LinearLayout xmlns:android=" android:orientation="vertical" android:layout_width="fill_parent" android:layout_height="fill_parent" > </LinearLayout> 用程式碼產生連結 1(TextView.java): package ncu.bnlab; import android.app.activity; import android.os.bundle; import android.text.util.linkify; import android.view.gravity; import android.widget.linearlayout; import android.widget.textview; 58

110 TextView 用程式碼產生連結 2(TextView.java): public class TextViewExample extends Activity { /** Called when the activity is first created. public void oncreate(bundle savedinstancestate) { super.oncreate(savedinstancestate); setcontentview(r.layout.main); LinearLayout layout = (LinearLayout)findViewById(R.id.my_layout); TextView tv1 = new TextView(this); tv1.setgravity(gravity.center); tv1.setautolinkmask(linkify.web_urls); tv1.settext("google - layout.addview(tv1); TextView tv2 = new TextView(this); } } tv2.setgravity(gravity.center); tv2.setautolinkmask(linkify.web_urls); tv2.settext("yahoo - layout.addview(tv2); 59

111 TextView android:autolink <-> setautolinkmask(int) none autolink 預設值 all <-> Linkify.ALL 目前所有連結種類 <-> Linkify. _ADDRESSES 連結 phone <-> Linkify. PHONE_NUMBERS 電話號碼連結 web <-> Linkify.WEB_URLS 網址連結 設置 autolink 屬性 60

112 AutoCompleteTextView AutoCompleteTextView 可達到簡易自動完成 Text 的功能 假設已有定義台灣的縣市英文名稱, 當輸入 Ta 時, 程式會自動將符合 Ta 的縣市名稱給列出來, 如範例所展示 61

113 AutoCompleteTextView 62

114 AutoCompleteTextView 布局文件 (res/layout/main.xml): <?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android=" android:orientation="vertical" android:layout_width="fill_parent" android:layout_height="fill_parent" > <AutoCompleteTextView android:text="" android:layout_width="fill_parent" android:layout_height="wrap_content" /> </LinearLayout> 63

115 AutoCompleteTextView 程式碼 (TextView.java): package ncu.bnlab; import android.app.activity; import android.os.bundle; import android.widget.arrayadapter; import android.widget.autocompletetextview; public class AutoCompleteTextViewExample extends Activity { /** Called when the activity is first created. public void oncreate(bundle savedinstancestate) { super.oncreate(savedinstancestate); setcontentview(r.layout.main); ArrayAdapter<String> adapter = new ArrayAdapter<String>(this, android.r.layout.simple_dropdown_item_1line, TAIWAN); AutoCompleteTextView TaiwanCity = (AutoCompleteTextView)findViewById(R.id.city); TaiwanCity.setAdapter(adapter); } private static final String[] TAIWAN = new String[] { "Keelung", "Taipei", "Taoyuan", "Hsinchu", "Miaoli", "Taichung", "Changhua", "Nantou", "Yunlin", "Chiayi", "Tainan", "Kaohsiung", "Pingtung ", "Yilan", "Hualien", "Taitung" }; } 64

116 表單元件 Button ImageButton RadioButton CheckBox DatePicker ProgressBar RatingBar 65

117 Button Button 的 layout 方面會有兩種屬性 wrap_content layout_width 為 wrap_content 時, 這個 button 會依據 button 上的 text 長度為基準 fill_parent layout_width 為 fill_parent 時, 則會以 parent 最寬的長度為主 66

118 Button 利用 XML 建立 Button 即可 67

119 ImageButton ImageButton 可以將圖片當作 button 的背景 利用此屬性 layout:src=" 圖片位置 " ImageButton 範例 68

120 布局文件 (res/layout/main.xml): <?xml version="1.0" encoding="utf-8"?> ImageButton <LinearLayout xmlns:android=" android:orientation="vertical" android:layout_width="fill_parent" android:layout_height="fill_parent"> <ImageButton android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_gravity="center_horizontal" /> <ImageButton android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_gravity="center_horizontal" /> <ImageButton android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_gravity="center_horizontal" /> </LinearLayout> 69

121 RadioButton RadioButton 為個別的一個按鈕 若要做成有多選一這種功能時, 則需將這些 RadioButton 放置一個 <RadioGroup> 中 70

122 RadioButton 71

123 布局文件 -1(res/layout/main.xml): <?xml version="1.0" encoding="utf-8"?> RadioButton <LinearLayout xmlns:android=" android:orientation="vertical" android:layout_width="fill_parent" android:layout_height="fill_parent"> <TextView android:text=" 您對此次教學感到?" android:layout_width="wrap_content" android:layout_height="wrap_content" /> <RadioGroup android:layout_width="fill_parent" android:layout_height="wrap_content" android:orientation="horizontal > 72

124 RadioButton 布局文件 -2(res/layout/main.xml): <RadioButton android:text=" 滿意 " android:layout_width="wrap_content" android:layout_height="wrap_content" android:checked="true"/> <RadioButton android:text=" 普通 " android:layout_width="wrap_content" android:layout_height="wrap_content" /> <RadioButton </RadioGroup> </LinearLayout> android:text=" 不滿意 " android:layout_width="wrap_content" android:layout_height="wrap_content" /> 73

125 CheckBox CheckBox 只有兩種型態 checked unchecked CheckBox 可用在勾選多項選擇時 74

126 CheckBox 75

127 CheckBox 布局文件 -1(res/layout/main.xml): <TextView android:text=" 你喜歡的顏色? ( 可複選 )" android:id="@+id/textview01" android:layout_width="wrap_content" android:layout_height="wrap_content" /> <LinearLayout android:orientation= horizontal android:layout_width="fill_parent" android:layout_height="wrap_content"> <CheckBox android:text=" 紅色 " android:id="@+id/checkbox01" android:layout_width="wrap_content" android:layout_height="wrap_content" /> <CheckBox android:text=" 黃色 " android:id="@+id/checkbox02" android:layout_width="wrap_content" android:layout_height="wrap_content" /> <CheckBox android:text=" 綠色 " android:id="@+id/checkbox02" android:layout_width="wrap_content" android:layout_height="wrap_content" /> </LinearLayout> 76

128 CheckBox 布局文件 -2(res/layout/main.xml): <TextView android:text=" 平常的休閒活動? ( 可複選 )" android:id="@+id/textview02" android:layout_width="wrap_content" android:layout_height="wrap_content" /> <LinearLayout android:orientation="horizontal" android:layout_width="fill_parent" android:layout_height="wrap_content"> <CheckBox android:text=" 打球 " android:id="@+id/checkbox04" android:layout_width="wrap_content" android:layout_height="wrap_content" /> <CheckBox android:text=" 游泳 " android:id="@+id/checkbox05" android:layout_width="wrap_content" android:layout_height="wrap_content" /> <CheckBox android:text=" 上網 " android:id="@+id/checkbox06" android:layout_width="wrap_content" android:layout_height="wrap_content" /> </LinearLayout> </LinearLayout> 77

129 DatePicker DatePicker 可讓使用者選擇年 月 日 當使用者按下 button 後,TextView 會顯示 DatePicker 所選的日期 78

130 布局文件 -1(res/layout/main.xml): <?xml version="1.0" encoding="utf-8"?> DatePicker <LinearLayout xmlns:android=" android:orientation="vertical" android:layout_width="fill_parent" android:layout_height="fill_parent"> <DatePicker android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_gravity="center_horizontal" android:layout_margintop="15sp"/> <Button android:text=" 確定 " android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_gravity="center_horizontal" android:layout_margintop="25sp"/> <TextView android:text="" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_gravity="center_horizontal" android:layout_margintop="35sp"/> </LinearLayout> 79

131 程式碼 (DatePickerExample.java): public class DatePickerExample extends Activity { /** Called when the activity is first created. public void oncreate(bundle savedinstancestate) { } super.oncreate(savedinstancestate); setcontentview(r.layout.main); DatePicker final DatePicker datepicker = (DatePicker) findviewbyid(r.id.datepicker01); final Button mybutton = (Button) findviewbyid(r.id.button01); final TextView textview = (TextView) findviewbyid(r.id.textview01); mybutton.setonclicklistener(new OnClickListener(){ public void onclick(view v) { int year = datepicker.getyear(); int month = datepicker.getmonth() + 1; } }); int day = datepicker.getdayofmonth(); textview.settext( year + "-" + month + "-" + day ); } 80

132 ProgressBar ProgressBar 可用於顯示程式執行進度 ProgressBar 有上述四種型態 81

133 ProgressBar 布局文件 (res/layout/main.xml): <ProgressBar android:layout_height= wrap_content android:layout_width= 200px android:layout_gravity= center_horizontal android:layout_margintop= 20sp style=?android:attr/progressbarstylehorizontal /> <ProgressBar android:layout_height= wrap_content android:layout_width= wrap_content android:layout_gravity= center_horizontal android:layout_margintop= 20sp style=?android:attr/progressbarstylesmall /> <ProgressBar android:layout_height= wrap_content android:layout_width= wrap_content android:layout_gravity= center_horizontal android:layout_margintop= 20sp style=?android:attr/progressbarstyle /> <ProgressBar android:layout_height= wrap_content android:layout_width= wrap_content android:layout_gravity= center_horizontal android:layout_margintop= 20sp style="?android:attr/progressbarstylelarge" /> 82

134 RatingBar RatingBar 可用來製作評分系統 使用者可碰觸 RatingBar 的星星來達到評分 若碰觸星星的右半部則會加分 碰觸左半部則會扣分 最多為五顆星, 星星間隔為 0.5 顆星 83

135 RatingBar 84

136 RatingBar 布局文件 (res/layout/main.xml): <?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android=" android:orientation="vertical" android:layout_width="fill_parent" android:layout_height="fill_parent"> <RatingBar android:layout_width="wrap_content" android:layout_height="wrap_content" android:numstars="3" /> <TextView android:text="" android:textsize="50sp" android:layout_width="fill_parent" android:layout_height="wrap_content" /> <RatingBar android:layout_width="wrap_content" android:layout_height="wrap_content" /> <TextView android:text="" android:textsize="50sp" android:layout_width="fill_parent" android:layout_height="wrap_content" /> </LinearLayout> 85

137 程式碼 (RatingBarExample.java): RatingBar public class RatingBarExample extends Activity { /** Called when the activity is first created. public void oncreate(bundle savedinstancestate) { super.oncreate(savedinstancestate); setcontentview(r.layout.main); public void oncreate(bundle savedinstancestate) { super.oncreate(savedinstancestate); setcontentview(r.layout.main); final TextView textview01 = (TextView) findviewbyid(r.id.textview01); final TextView textview02 = (TextView) findviewbyid(r.id.textview02); final RatingBar ratingbar01 = (RatingBar) findviewbyid(r.id.ratingbar01); ratingbar01.setonratingbarchangelistener(new OnRatingBarChangeListener(){ public void onratingchanged(ratingbar ratingbar, float rating, boolean fromuser) { textview01.settext(float.tostring(ratingbar01.getrating())); }}); final RatingBar ratingbar02 = (RatingBar) findviewbyid(r.id.ratingbar02); ratingbar02.setonratingbarchangelistener(new OnRatingBarChangeListener(){ public void onratingchanged(ratingbar ratingbar, float rating,boolean fromuser) { textview02.settext(float.tostring(ratingbar02.getrating())); } } }}); 86

138 對話視窗元件 AlertDialog ProgressDialog 87

139 AlertDialog AlertDialog 為警告對話視窗, 像是離開程式或是刪除檔案時會跳出的對話視窗元件 88

140 AlertDialog 程式碼 -1(AlertDialogExample.java): public class AlertDialogExample extends Activity public void oncreate(bundle savedinstancestate) { } super.oncreate(savedinstancestate); setcontentview(r.layout.main); final Button button01 = (Button) findviewbyid(r.id.button01); final Button button02 = (Button) findviewbyid(r.id.button02); button01.setonclicklistener(new OnClickListener(){ public void onclick(view arg0) { } }); About(); button02.setonclicklistener(new OnClickListener(){ } public void onclick(view arg0) { }); Leave(); private void About() { } AlertDialog.Builder builder = new AlertDialog.Builder(this); builder.settitle(" 關於 ").setmessage(" 這是 Alert Dialog").show(); 89

141 程式碼 -2(AlertDialogExample.java): AlertDialog private void Leave() { AlertDialog.Builder builder = new AlertDialog.Builder(this); builder.setmessage(" 確定要離開本程式嗎?").setPositiveButton("Yes", new DialogInterface.OnClickListener() { public void onclick(dialoginterface dialog, int which) { // TODO Auto-generated method stub AlertDialogExample.this.finish(); } }).setnegativebutton("no", new DialogInterface.OnClickListener() { public void onclick(dialoginterface dialog, int which) { // TODO Auto-generated method stub dialog.cancel(); } }); AlertDialog about_dialog = builder.create(); about_dialog.show(); } } 90

142 create() 創建一個 AlertDialog AlertDialog setcancelable(boolean) 設為 false 時, 使用者無法使用其他方式關閉這個對話視窗, 只可使用對話視窗上給的操作方式來操作 seticon(drawable or int) 設置 Title 上的 Icon settitle(charsequence or int) 設定要顯示的 Title 91

143 AlertDialog setmessage(charsequence or int) 設定要顯示的內容 setpositivebutton(charsequence text, DialogInterface.OnClickListener listener) 設定正向 ( 左邊 ) 的按鈕 setnegativebutton(charsequence text, DialogInterface.OnClickListener listener) 設定反向 ( 右邊 ) 的按鈕 show() 顯示 AlertDialog 92

144 ProgressDialog ProgressDialog 可用於在等待其他程式或是在等待上傳時使用 ProgressDialog 有兩種形式 圓型 ProgressDialog 長條型 ProgressDialog 93

145 ProgressDialog 圓形的 ProgressDialog 94

146 ProgressDialog 程式碼 (AlertDialogExample01.java): public class ProgressDialogExample extends Activity { int nowprogressstatus = 0; Handler myhandler = new public void oncreate(bundle savedinstancestate) { super.oncreate(savedinstancestate); setcontentview(r.layout.main); final ProgressDialog dialog01 = ProgressDialog.show(this, "", " 程式正在開啟中...", false); Thread thread01 = new Thread(new Runnable() { public void run() { while (nowprogressstatus < 100) { try { Thread.sleep(500); } catch (InterruptedException e) { } // TODO Auto-generated catch block e.printstacktrace(); nowprogressstatus+=5; } // While myhandler.post(new Runnable() { } } }); } }); public void run() { } thread01.start(); dialog01.cancel(); 圓形的 ProgressDialog 95

147 ProgressDialog 長條型 ProgressDialog 96

148 ProgressDialog 程式碼 (AlertDialogExample02.java): public class ProgressDialogExample02 extends Activity { int nowprogressstatus = 0; Handler myhandler = new public void oncreate(bundle savedinstancestate) { super.oncreate(savedinstancestate); setcontentview(r.layout.main); final ProgressDialog dialog02 = new ProgressDialog(this); dialog02.setprogressstyle(progressdialog.style_horizontal); dialog02.setmessage(" 讀取中..."); dialog02.show(); Thread thread02 = new Thread(new Runnable() { public void run() { while (nowprogressstatus < 100) { try { Thread.sleep(500); } catch (InterruptedException e) { e.printstacktrace(); } nowprogressstatus+=5; myhandler.post(new Runnable() { public void run() { dialog02.setprogress(nowprogressstatus); } }); } // While myhandler.post(new Runnable() { public void run() { dialog02.cancel(); }}); }}); thread02.start(); } } 97

149 選單元件 Options Menu Context Menu Sub Menu Spinner 98

150 Options Menu Options Menu 就是透過按手機或模擬器上的 menu 鍵顯示的功能表 最多可以顯示六項, 稱為 Icon Menu 超過六項就會以 More 的功能項來表示其餘的選項, 稱為 Expanded Menu 99

151 Options Menu 此種型式的 Menu 就稱為 OptionsMenu 100

152 Options Menu 程式碼 -1(OptionsMenuEX.java): public class OptionsMenu extends Activity { public static final int aboutbtnid = Menu.FIRST; public static final int exitbtnid = Menu.FIRST + 1; /** Called when the activity is first created. public void oncreate(bundle savedinstancestate) { super.oncreate(savedinstancestate); setcontentview(r.layout.main); } public boolean oncreateoptionsmenu(menu menu) { menu.add(0, aboutbtnid, 0, "About"); menu.add(0, exitbtnid, 0, "Exit"); return true; } 101

153 Options Menu 程式碼 -2(OptionsMenuEX.java): public boolean onoptionsitemselected(menuitem item) { super.onoptionsitemselected(item); switch( item.getitemid() ) { case aboutbtnid: opendialog(); break; case exitbtnid: finish(); break; } return true; } public void opendialog() { AlertDialog.Builder builder = new AlertDialog.Builder(this); builder.setmessage("about OptionsMenu"); builder.settitle("about"); builder.setpositivebutton("ok", new DialogInterface.OnClickListener() { } public void onclick(dialoginterface dialog, int which) { } }).show(); 102

154 Options Menu 103

155 Options Menu 程式碼 -1(OptionsMenuEX.java): public class OptionsMenu2 extends Activity { public static final int aboutbtnid = Menu.FIRST; public static final int exitbtnid = Menu.FIRST + 1; public static final int searchbtnid = Menu.FIRST + 2; public static final int addbtnid = Menu.FIRST + 3; public static final int playbtnid= Menu.FIRST + 4; public static final int delbtnid = Menu.FIRST + 5; public static final int openbtnid = Menu.FIRST + 6; /** Called when the activity is first created. public void oncreate(bundle savedinstancestate) { } super.oncreate(savedinstancestate); setcontentview(r.layout.main); public boolean oncreateoptionsmenu(menu menu) { menu.add(0, aboutbtnid, 0, "About"); } menu.add(0, exitbtnid, 0, "Exit"); menu.add(0, searchbtnid, 0, "Search"); menu.add(0, addbtnid, 0, "Add"); menu.add(0, playbtnid, 0, "Play"); menu.add(0, delbtnid, 0, "Delete"); menu.add(0, openbtnid, 0, "Open"); return true; 104

156 Options Menu 程式碼 -2(OptionsMenuEX2.java): public boolean onoptionsitemselected(menuitem item) { super.onoptionsitemselected(item); switch( item.getitemid() ) { case aboutbtnid: opendialog(); break; case exitbtnid: finish(); break; } return true; } public void opendialog() { AlertDialog.Builder builder = new AlertDialog.Builder(this); builder.setmessage("about OptionsMenu"); builder.settitle("about"); builder.setpositivebutton( OK, new DialogInterface.OnClickListener() { } public void onclick(dialoginterface dialog, int which) { } }).show(); 105

157 Options Menu 在功能表中增加圖示 106

158 程式碼 (OptionsMenuEX.java): Options Menu public boolean oncreateoptionsmenu(menu menu) { } menu.add(0, aboutbtnid, 0, "About").setIcon(R.drawable.icon); menu.add(0, exitbtnid, 0, "Exit").setIcon(R.drawable.icon); return true; 透過 seticon() 方法在功能表中增加圖示 107

159 Context Menu Android 中的 Context Menu 與一般個人電腦中的滑鼠右鍵非常類似 當在 View 上, 使用者長按螢幕不放兩秒, 將會出現一個浮動功能表 Context Menu 不支援圖示或快捷鍵 108

160 Context Menu 109

161 程式碼 (ContextMenuEX.java): public class ContextMenu extends Activity { public String checkeditem = ""; public static final int newbtnid = Menu.FIRST; public static final int openbtnid = Menu.FIRST + 1; public static final int closebtnid = Menu.FIRST + public void oncreate(bundle savedinstancestate) { } super.oncreate(savedinstancestate); setcontentview(r.layout.main); Context Menu Button filebtn = (Button)findViewById(R.id.fileBtn); Button editbtn = (Button)findViewById(R.id.editBtn); registerforcontextmenu(filebtn); registerforcontextmenu(editbtn); public void oncreatecontextmenu(android.view.contextmenu conmenu, View v, ContextMenuInfo menuinfo) { { } super.oncreatecontextmenu(conmenu, v, menuinfo); conmenu.setheadertitle("context Menu"); conmenu.add(0, newbtnid, 0, "New").setNumericShortcut('1'); conmenu.add(0, openbtnid, 0, "Open").setCheckable(true); conmenu.add(0, closebtnid, 0, "Close").setIcon(R.drawable.icon); } public boolean oncontextitemselected(menuitem item) } super.oncontextitemselected(item); return false; 110

162 Sub Menu 一個子功能表可以被加入任何功能表中, 但不能加入另外的子功能表中 當應用程式有很多功能可以被分類時, 會非常好用, 就像是一般電腦的功能表 111

163 Sub Menu 112

164 程式碼 -1(SubMenuEX.java): Sub Menu public class SubMenus extends Activity { public String checkeditem = ""; public static final int newbtnid = Menu.FIRST; public static final int openbtnid = Menu.FIRST + 1; public static final int closebtnid = Menu.FIRST + public void oncreate(bundle savedinstancestate) { super.oncreate(savedinstancestate); setcontentview(r.layout.main); Button filebtn = (Button)findViewById(R.id.fileBtn); Button editbtn = (Button)findViewById(R.id.editBtn); registerforcontextmenu(filebtn); registerforcontextmenu(editbtn); } 113

165 程式碼 -2(SubMenuEX.java): } Sub Menu public void oncreatecontextmenu(android.view.contextmenu conmenu, View v, ContextMenuInfo menuinfo) { super.oncreatecontextmenu(conmenu, v, menuinfo); /* conmenu.setheadertitle("context Menu"); conmenu.add(0, newbtnid, 0, "New").setNumericShortcut('1'); // 利用數字選擇 conmenu.add(0, openbtnid, 0, "Open").setCheckable(true); // 設定 checkbox conmenu.add(0, closebtnid, 0, "Close").setIcon(R.drawable.icon); //ContextMenu 不支援 icon*/ SubMenu sub = conmenu.addsubmenu("submenu"); sub.add("add..."); sub.add("delete..."); } public boolean oncontextitemselected(menuitem item) { super.oncontextitemselected(item); return false; } 114

166 Spinner Spinner 是一個 widget, 允許使用者從一群選項中選出其中一個 Spinner 就類似下拉式選單, 當列表超過螢幕大小時也可允許捲動 115

167 Spinner 116

168 布局文件 -1(res/layout/main.xml): <?xml version="1.0" encoding="utf-8"?> Spinner <LinearLayout xmlns: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> 首先我們將 main.xml 改寫成下列範例中的程式碼 117

169 布局文件 (res/value/strings.xml): Spinner <string name="planet_prompt">choose a item</string> 布局文件 (res/value/arrays.xml): <?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> 其中我們新增了 Spinner 的標籤, 接著新增這段程式碼至 strings.xml 中 接著在 res/value/ 中建立一下名為 arrays.xml 的文件,arrays.xml 程式碼如下 118

170 程式碼 -1(SpinnerEX.java): package ncu.bnlab.spinnerexample; import android.app.activity; import android.os.bundle; import android.widget.arrayadapter; import android.widget.spinner; public class SpinnerEX extends Activity { Spinner /** Called when the activity is first public void oncreate(bundle savedinstancestate) { super.oncreate(savedinstancestate); setcontentview(r.layout.main); Spinner s = (Spinner)findViewById(R.id.spinner); 最後將 Spinner 的 JAVA 原始檔開啟, 在 oncreate() 中加入程式碼 119

171 程式碼 -2(SpinnerEX.java): } } Spinner /* 設定功能表項目陣列, 使用 createfromresource 方法 */ ArrayAdapter adapter = ArrayAdapter.createFromResource( this, R.array.cards, android.r.layout.simple_spinner_item); /* 設定選單 */ adapter.setdropdownviewresource(android.r.layout.simple_spinner_dropdown_item); /* 設定 Adapter */ s.setadapter(adapter); 120

172 顯示元件 ImageView ListView GridView WebView 121

173 ImageView 用於顯示一個圖樣, 例如說一個圖示或圖片 ImageView 類別可以載入來自不同來源的圖片 ( 可能來自資源或內容提供商 ), 它可以用於任何佈局管理器, 並提供多種顯示選項, 例如 : 縮放 著色 122

174 ImageView 123

175 程式碼 -1(ImageViewEX.java): ImageView public class ImageViewEX extends Activity public void oncreate(bundle savedinstancestate) { super.oncreate(savedinstancestate); ImageView imageview = new ImageView(this); imageview.setimageresource(r.drawable.christmas); setcontentview(imageview); } } 將 drawable 中的圖檔資源置入 imageview 的圖片來源 124

176 ListView Android 除了提供 CheckBox 與 RadioButton 的物件之外, 還提供另一種更為方便且表現多樣化的物件 ListView 125

177 ListView 126

178 程式碼 -1(ListViewEX.java): public class ListViewEX extends Activity public void oncreate(bundle savedinstancestate) { super.oncreate(savedinstancestate); ListView String[] Data = {" 網路概論 "," 通訊網路實驗 "," 通訊概論 "}; ListView listview = new ListView(this); // 設定 ListView 選擇的方式 : // 單選 :ListView.CHOICE_MODE_SINGLE // 多選 :ListView.CHOICE_MODE_MULTIPLE listview.setchoicemode( ListView.CHOICE_MODE_SINGLE ); ArrayAdapter varraydata = new ArrayAdapter( this, android.r.layout.simple_list_item_single_choice, Data } } ); // 設定 ListView 的接收器, 做為選項的來源 listview.setadapter( varraydata ); // ListView 設定為 ContentView setcontentview(listview); 127

179 程式碼 -2(ListViewEX.java): ListView public class ListViewEX2 extends ListActivity public void oncreate(bundle savedinstancestate) { super.oncreate(savedinstancestate); String[] Data = { " 葷食 "," 素食 "," 兩者皆可 " }; ListView listview = this.getlistview(); listview.setchoicemode( ListView.CHOICE_MODE_SINGLE ); // ListView 的選項來源由陣列提供 this.setlistadapter( new ArrayAdapter( this, android.r.layout.simple_list_item_single_choice, Data )); } } 128

180 GridView GridView 可以顯示一個二維滾動格框, 也可搭配其他元件, 呈現類似一般手機上的功能表 129

181 GridView 130

182 GridView GridView 程式碼 -1(GridViewEX.java): public class GridViewEX extends Activity public void oncreate(bundle savedinstancestate) { super.oncreate(savedinstancestate); setcontentview(r.layout.main); GridView gridview = (GridView) findviewbyid(r.id.gridview); gridview.setadapter(new ImageAdapter(this)); } } 131

183 GridView ImageAdapter 程式碼 -1(ImageAdapter.java): public class ImageAdapter extends BaseAdapter { private Context mcontext; public ImageAdapter(Context c) { mcontext = c; } public int getcount() { return mthumbids.length; } public Object getitem(int position) { return null; } public long getitemid(int position) { return 0; } 132

184 GridView ImageAdapter 程式碼 -2(ImageAdapter.java): public View getview(int position, View convertview, ViewGroup parent) { ImageView imageview; if (convertview == null) { imageview = new ImageView(mContext); imageview.setlayoutparams(new GridView.LayoutParams(85, 85)); imageview.setscaletype(imageview.scaletype.center_crop); imageview.setpadding(8, 8, 8, 8); } else { imageview = (ImageView) convertview; } imageview.setimageresource(mthumbids[position]); return imageview; } private Integer[] mthumbids = { R.drawable.icon, R.drawable.christmas, R.drawable.favorite, R.drawable.ipod }; } 133

185 WebView Webview 是用於顯示 web 頁面的視景 在活動中的任何一個瀏覽器或簡易地顯示一些線上內容 它使用 Webkit 繪圖引擎去顯示頁面且包含 上一頁 下一頁 放大縮小 文字搜尋 等等方法 134

186 WebView 135

187 WebView <uses-permission android:name="android.permission.internet" /> 佈局文件 (res/layout/main.xml): 為了使活動可以在 WebView 存取 Internet 及讀取 web 頁面, 需在 AndroidManifest.xml 中加入 INTERNET 權限 <?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android=" android:layout_width="wrap_content" android:layout_height="wrap_content" android:orientation="vertical"> <WebView android:layout_width="fill_parent" android:layout_height="fill_parent" /> </LinearLayout> 136

188 程式碼 (WebViewEX.java): WebView public class WebViewEX extends Activity { /** Called when the activity is first created. public void oncreate(bundle savedinstancestate) { super.oncreate(savedinstancestate); setcontentview(r.layout.main); WebView webview; webview = (WebView) findviewbyid(r.id.webview); webview.getsettings().setjavascriptenabled(true); } webview.loadurl(" } 此處以 Google 網站作為連接範例 137

189 核心框架 Android 系統架構 138

190 核心框架 (Application Framework) 開發人員可以使用核心應用程式所提供的 API 框架 應用程式框架構簡化元件的重用性 任何一個應用程式都可以發佈它的功能, 且其他應用程式也可以使用其所發佈的功能 應用程式重用機制讓使用者方便地替換程式元件 139

191 核心框架 訊息 應用程式框架 default F1() F1() 使用者 作業系統 abstra ct F2() F2() 事件 default F3() 訊息 default F4() 應用程式 F4() 140

192 核心框架 隱藏在每個應用程式背後是一系列的服務 (Services) 和活動 (Activity) 豐富的視圖 (Views) 用來構建應用程式, 包括 : 清單 (Lists) 網格 (Grids) 文字方塊 (Text Boxes) 按鈕 (Buttons) 可嵌入的 Web 瀏覽器 內容提供器 (Content Providers) 使應用程式可以獲得另一個應用程式的資料 ( 如聯繫人資料庫 ), 或者共用資料 資源管理器 (Resource Manager) 提供非程式碼資源的訪問, 如本地字串 圖形 和佈局檔 ( layout files ) 通知管理器 (Notification Manager) 使得應用程式可以在狀態列中顯示自訂的提示資訊 活動管理器 (Activity Manager) 管理應用程式生命週期並提供常用的導航返回功能 141

193 程式生命週期 程式的生命週期 (Life Cycle) 活動 (Activity) 一個 Activity 基本上有三個生命狀態 : active 或 running Paused Stop 當一個 Activity 處於 Pause 或 Stop 的狀態時, 系統可以要求 Activity 結束或移除它, 當它再度呈現在使用者面前時, 要能完整的重新啟動及回復先前的狀態 應用程式存在與否並非由應用程式所自行決定, 而是由 Android 系統透過運行機制決定 142

194 程式生命週期 143

195 畫面切換的流程 按下 Button01 144

196 畫面切換的流程 對於文字標籤若要控制要記得給上 ID 145

197 畫面切換的流程 有了 ID 才能操控介面 146

198 畫面切換的流程 註冊按鍵事件處理程序 方法一不採用繼承介面 方法二採用繼承介面 147

199 畫面切換的流程 import android.app.activity; import android.os.bundle; import android.view.view; import android.view.view.onclicklistener; import android.widget.button; import android.widget.textview; public class HelloActivity extends Activity { /** Called when the activity is first created. public void oncreate(bundle savedinstancestate) { super.oncreate(savedinstancestate); setcontentview(r.layout.main); Button button = (Button)findViewById(R.id.Button01); button.setonclicklistener(changetext); } private OnClickListener changetext = new OnClickListener() } { }; { } public void onclick(view v) TextView result = (TextView)findViewById(R.id.Text01); result.settext("you are happy!"); 紅色粗體是新增程式 方法一不採用繼承介面 148

200 畫面切換的流程 package com.example.helloactivity; import android.app.activity; import android.os.bundle; import android.view.view; import android.view.view.onclicklistener; import android.widget.button; import android.widget.textview; public class HelloActivity extends Activity implements OnClickListener { /** Called when the activity is first created. public void oncreate(bundle savedinstancestate) { super.oncreate(savedinstancestate); setcontentview(r.layout.main); Button button = (Button)findViewById(R.id.Button01); button.setonclicklistener(this); } public void onclick(view v) { TextView result = (TextView)findViewById(R.id.Text01); result.settext("you are happy!"); } } 紅色粗體是新增程式 方法二採用繼承介面 149

201 package com.example.hello; import android.app.activity; import android.os.bundle; 畫面切換的流程 import android.view.view; import android.view.view.onclicklistener; import android.widget.button; import android.widget.textview; public class HelloActivity extends Activity implements OnClickListener{ } /** Called when the activity is first created. public void oncreate(bundle savedinstancestate) { super.oncreate(savedinstancestate); setcontentview(r.layout.main); Button button1=(button) findviewbyid(r.id.button01); button1.setonclicklistener(this); Button button2=(button) findviewbyid(r.id.button02); button2.setonclicklistener(this); } public void onclick(view v){ switch(v.getid()) { case R.id.Button01: TextView result = (TextView) findviewbyid(r.id.text01); result.settext("123"); break; : } 利用 getid() 及 switch 來處理不同按鈕的功能 public void onclick(view v){ switch(v.getid()) { case R.id.Button01: TextView result = (TextView) findviewbyid(r.id.text01); result.settext("123"); break; case R.id.Button02: setcontentview(r.layout.first); Button button3=(button) findviewbyid(r.id.button03); button3.setonclicklistener(this); break; case R.id.Button03: setcontentview(r.layout.main); Button button4=(button) findviewbyid(r.id.button01); button4.setonclicklistener(this); Button button5=(button) findviewbyid(r.id.button02); button5.setonclicklistener(this); break; } } 150

202 分組練習 每組 1~3 人 實作下列相關常用 API 各單元內任選一主題 表單元件 Button ImageButton RadioButton CheckBox DatePicker ProgressBar RatingBar 相同的主題至多只能 2 組重複 內容可依各組能力做出屬於自己的 style 選單元件 Options Menu Context Menu Sub Menu Spinner 顯示元件 ImageView ListView GridView WebView 151

203 Android 圖形介面設計 吳柏翰 1

204 Outline SQL Lite Database Activities Services Content Providers Broadcast Receivers Activating components: Intents 補充內容 專題製作 2

205 SQL Lite Database 手機上 Porttable( 可攜式 ) SQLite( 資料庫 ), 不外乎包含 Query( 查詢 ) Insert( 新增 ) Update( 修改 ) 和 Delete( 刪除 ), 可用來設計放置行事曆或提醒使用者還有哪些工作事項 以下範例為提供簡易 Menu 鍵做出資料庫的增 修 改 查功能, 同時設計單層的 Menu 按鈕, 使操作更直覺化, 搭配 ListView Wideget 來觸發點選事件 範例中與 User 互動的唯一管道是 EditText Widget, 在設計新增 修改的功能時, 資料庫會參考 EditText 裡的值, 並可以在 EditText 編輯工作事項, 透過 ListView 顯示所有的工作事項 3

206 SQL Lite Database 4

207 SQL Lite Database package irdc.ex05_05; import android.app.activity;import android.database.cursor; import android.database.sqlite.sqlitecursor;import android.os.bundle; import android.view.menu; import android.view.menuitem; import android.view.view; import android.widget.adapterview; import android.widget.edittext; import android.widget.listview; import android.widget.simplecursoradapter; public class EX05_05 extends Activity{ private ToDoDB mytododb; private Cursor mycursor; private ListView mylistview; private EditText myedittext; private int _id; protected final static int MENU_ADD = Menu.FIRST; protected final static int MENU_EDIT = Menu.FIRST + 1; protected final static int MENU_DELETE = Menu.FIRST + public boolean onoptionsitemselected(menuitem item) { super.onoptionsitemselected(item); switch (item.getitemid()) { case MENU_ADD: break; case MENU_EDIT: } break; case MENU_DELETE: break; return true; this.addtodo(); } this.edittodo(); this.deletetodo(); EX05_05.java 範例 5

208 SQL Lite public boolean oncreateoptionsmenu(menu menu) { super.oncreateoptionsmenu(menu); /* 新增三個 MENU */ menu.add(menu.none, MENU_ADD, 0, R.string.strAddButton); menu.add(menu.none, MENU_EDIT, 0, R.string.strEditButton); menu.add(menu.none, MENU_DELETE, 0, R.string.strDeleteButton); } return true; /** Called when the activity is first created. public void oncreate(bundle savedinstancestate) { super.oncreate(savedinstancestate); setcontentview(r.layout.main); mylistview = (ListView) this.findviewbyid(r.id.mylistview); myedittext = (EditText) this.findviewbyid(r.id.myedittext); mytododb = new ToDoDB(this); /* 取得 DataBase 裡的資料 */ mycursor = mytododb.select(); /* new SimpleCursorAdapter 並將 mycursor 傳入, 顯示資料的欄位為 todo_text */ SimpleCursorAdapter adapter = new SimpleCursorAdapter(this, R.layout.list, mycursor, new String[] { ToDoDB.FIELD_TEXT }, new int[] { R.id.listTextView1 }); mylistview.setadapter(adapter); /* 將 mylistview 加入 OnItemClickListener */ mylistview.setonitemclicklistener(new AdapterView.OnItemClickListener() public void onitemclick(adapterview<?> arg0, View arg1, int arg2, long arg3) { /* 將 mycursor 移到所點選的值 */ mycursor.movetoposition(arg2); /* 取得欄位 _id 的值 */ } _id = mycursor.getint(0); /* 取得欄位 todo_text 的值 */ myedittext.settext(mycursor.getstring(1)); }); EX05_05.java 範例 6

209 SQL Lite Database mylistview }.setonitemselectedlistener(new AdapterView.OnItemSelectedListener() public void onitemselected(adapterview<?> arg0, View arg1, int arg2, { } /* getselecteditem 所取得的是 SQLiteCursor */ SQLiteCursor sc = (SQLiteCursor) arg0.getselecteditem(); _id = sc.getint(0); public void onnothingselected(adapterview<?> arg0) { } }); EX05_05.java 範例 long arg3) 7

210 SQL Lite Database private void addtodo() { } if (myedittext.gettext().tostring().equals("")) return; /* 新增資料到資料庫 */ mytododb.insert(myedittext.gettext().tostring()); /* 重新查詢 */ mycursor.requery(); /* 重新整理 mylistview */ mylistview.invalidateviews(); myedittext.settext(""); _id = 0; private void edittodo() { } if (myedittext.gettext().tostring().equals("")) return; /* 修改資料 */ mytododb.update(_id, myedittext.gettext().tostring()); mycursor.requery(); mylistview.invalidateviews(); myedittext.settext(""); _id = 0; private void deletetodo() { if (_id == 0) /* 刪除資料 */ return; mytododb.delete(_id); mycursor.requery(); mylistview.invalidateviews(); }} myedittext.settext(""); _id = 0; ToDoDB.java 範例 8

211 SQL Lite Database package irdc.ex05_05; import android.content.contentvalues; import android.content.context; import android.database.cursor; import android.database.sqlite.sqlitedatabase; import android.database.sqlite.sqliteopenhelper; public class ToDoDB extends SQLiteOpenHelper { private final static String DATABASE_NAME = "todo_db"; private final static int DATABASE_VERSION = 1; private final static String TABLE_NAME = "todo_table"; public final static String FIELD_id = "_id"; public final static String FIELD_TEXT = "todo_text"; public ToDoDB(Context context) { } super(context, DATABASE_NAME, null, public void oncreate(sqlitedatabase db) { } /* 建立 table */ String sql = "CREATE TABLE " + TABLE_NAME + " (" + FIELD_id + " INTEGER primary key autoincrement, " + " " + FIELD_TEXT + " text)"; public void onupgrade(sqlitedatabase db, int oldversion, int newversion) { String sql = "DROP TABLE IF EXISTS " + TABLE_NAME; db.execsql(sql); oncreate(db); } ToDoDB.java 範例 9

212 SQL Lite Database public Cursor select() { } SQLiteDatabase db = this.getreadabledatabase(); Cursor cursor = db.query(table_name, null, null, null, null, null, null); return cursor; public long insert(string text) { } SQLiteDatabase db = this.getwritabledatabase(); /* 將新增的值放入 ContentValues */ ContentValues cv = new ContentValues(); cv.put(field_text, text); long row = db.insert(table_name, null, cv); return row; public void delete(int id) { } SQLiteDatabase db = this.getwritabledatabase(); String where = FIELD_id + " =?"; String[] wherevalue = { Integer.toString(id) }; db.delete(table_name, where, wherevalue); public void update(intid, String text) { SQLiteDatabase db = this.getwritabledatabase(); String where = FIELD_id + " =?"; String[] wherevalue = { Integer.toString(id) }; /* 將修改的值放入 ContentValues */ ContentValues cv = new ContentValues(); cv.put(field_text, text); db.update(table_name, cv, where, wherevalue); } } ToDoDB.java 範例 10

213 Activities 一般所指的活動 (Activity) 是使用者介面 一支應用程式可能有一個或以上的活動存在, 每個活動也都會有自己的 View 所有的活動在系統裡由活動堆疊所管理, 當一個新的活動被執行後, 它將會被放置到堆疊的最頂端, 並且變成 "running activity", 而先前的活動原則上還是會存在於堆疊中, 但它此時不會是在前景的情況, 除非新加入的活動離開 11

214 Activities 活動元件說明 活動元件是回應用戶操作而展示的視覺化使用者介面 應用程式可以只有一個 Activity, 或像簡訊應用程式那樣包含多個 每個 Activity 都被給予一個預設的視窗以進行繪製 extends ContextThemeWrapper implements ComponentCallbacks KeyEvent.Callback LayoutInflater.Factory View.OnCreateContextMenuListener Window.Callback 12

215 Activities 操控介面程式就是活動元件 public class Animation extends Activity protected void oncreate(bundle savedinstancestate) { : } } 13

216 Activities 活動狀態間的切換包含了呼叫下列幾種方法 : void oncreate(bundle savedinstancestate) void onstart() void onrestart() void onresume() void onpause() void onstop() void ondestroy() 14

217 Activities (Activity Lifecycle) 活動元件生命週期 15

218 Activities 活動的 Entire Lifetime 一個活動的 Entire Lifetime 是由 oncreate(bundle) 開始, 直到 ondestroy() 結束 一個活動可以把所有的資源設定寫在 oncreate 中, 直到 ondestroy() 時, 再釋放出來 16

219 Activities Entire Lifetime 17

220 Activities 活動的 Visible Lifetime: 一個活動的 Visible Lifetime 則是指在 onstart() onstop() 之間, 稱為 可視生命週期, 在這段時間內, 使用者可以在螢幕上看見 Activity, 但這個 Activity 不見得一定在前景跟使用者直接互動 18

221 程式生命週期 Visible Lifetime 19

222 程式生命週期 活動的 Foreground Lifetime: Foreground Lifetime 則是指 onresume() onpause() 之間, 在這個時期的活動是在所有的活動的前面, 並且直接跟使用者進行互動 一個活動能很頻繁的在 Resume 及 Pause 這兩個狀態切換, 所以在 onresume() 及 onpause() 中實作的程式應盡量精簡 20

223 程式生命週期 Foreground Lifetime 21

224 Services 在每一個包含服務元件的 AndroidManifest.xml 文件中, 必須有一個相應的 <service> 宣告 服務可以用兩種方式呼叫 : 服務自行啟動和運行, 直到某項操作停止或自行停止時 它可被提供給對外使用者的介面所操作 用戶端與服務物件建立連接並呼叫服務 22

225 Services 上述兩種模式不是完全分開的, 且可以綁定一個被 startservice() 啟動的服務 這種情況下,stopService() 不會停止服務, 一直到最後一個綁定的連接關閉時 與活動相似, 服務也有一些生命週期方法, 程式設計師可以實作它們去改變狀態, 但方法比活動要少 23

226 Services 服務是在背景長時間運行的應用元件, 不和使用者直接進行互動 例如 : 某服務可能在後台播放音樂, 而用於在執行其他的操作, 或者它透過網絡抓取資料或者執行某些計算, 將結果提供給活動 24

227 Services 服務元件說明 無視覺化使用者介面 在後台執行 執行於應用程式行程的主執行緒內 extends ContextWrapper implements ComponentCallbacks 25

228 Services (Service Lifecycle) 服務元件生命週期 26

229 Services 服務的 Entire Lifetime 服務的 Entire Lifetime 是在 oncreate() 開始, 於 ondestroy() 結束 類似活動, 服務在 oncreate() 方法中進行初始化, 在 ondestroy() 方法中釋放所有系統資源 例如, 音樂播放服務可能在 oncreate() 方法中建立音樂播放執行緒, 在 ondestroy() 方法中停止執行緒 27

230 Services 服務的 Active Lifetime 在呼叫 startservice() 方法後, 此方法被 Intent 對象指示去呼叫 onstart() 方法 音樂服務將分析這個 Intent 來確定播放什麼音樂, 並開始播放 28

231 Services 利用活動元件來操控服務元件 啟動服務 停止服務 29

232 Services java.lang.object android.content.context android.content.contextwrapper android.view.contextthemewrapper android.view.contextthemewrapper android.app.activity 活動及服務繼承關係 android.app.service 30

233 Content Providers 內容管理器將應用程式資料組合成特定的集合供其它應用程式使用 資料可以是儲存在檔 SQLite 資料庫, 或是其它任何使用者可以存取資料的地方 內容管理器繼承於內容管理器基礎類別, 並實作一組標準的方法, 使應用程式可以檢索和儲存它控制的資料 應用程式不是直接呼叫這些實作方法 而是透過內容解析器 (ContentResolver) 對象呼叫方法 內容解析器能夠通知任何的內容管理器, 並可以參與這些內容管理器行程間的管理 31

234 Content Providers 內容管理器說明 內容管理器將一些特定的應用程式資料提供給其它應用程式使用 資料可以存儲於檔案系統 SQLite 資料庫或其它方式 public abstract class ContentProvider extends Object implements ComponentCallbacks 32

235 Content Providers 使用內容提供者來操控資料庫 33

236 Broadcast Receivers 廣播接收器只有一個生命週期方法 : void onreceive(context curcontext, Intent broadcastmsg) 當廣播消息到達接收者時,Android 呼叫 onreceive() 方法, 並傳遞保存著訊息的 Intent 對象 當呼叫該方法時, 廣播接收者被認為是 active 的 當 onreceive() 結束時, 它就是 inactive 的 擁有活動的廣播接收者行程, 會被保護不被清除 但是只擁有 inactive 的廣播元件時, 當系統認為記憶體應該被其他行程使用時, 可以在任何時間被系統清除 34

237 Broadcast Receivers 當與廣播元件頻繁互動時, 會產生一些問題, 因此, 某些任務在獨立的執行緒中操作, 與管理其他的用戶元件的主執行緒是分開的 如果 onreceive() 產生執行緒然後返回, 這個完整的行程, 包括新產生的執行緒, 將被判斷為 inactive 的, 會被提報為將被清除的行程 解決這個問題的辦法是為 onreceive() 啟動一個 Service, 讓 Service 接手這工作, 因此系統會認為在行程中仍然有 active 的工作在進行 35

238 Broadcast Receivers 廣播接收器負責接受和回應通知, 很多通知源自於系統所發送的, 例如 : 發送時區變換的通知, 電池電量不足, 或使用者改變語言設置 應用程式也可以發出廣播通知, 舉例來說, 通知其它應用程式, 資料已下載完畢, 可供使用 應用程式可以擁有任意數量的廣播接收器來接收任何的通知 另外也可以啟動活動去回應接收到的通知, 或利用通知管理器 (NotificationManager) 來通知使用者 36

239 Broadcast Receivers 廣播接收器說明 專注於接收廣播通知資訊 並做出對應處理的元件 無使用者介面 public abstract class BroadcastReceiver extends Object 37

240 Activating components: Intents Intent 是一次即將操作的抽象描述 Intent 作用是 : (1) 啟動一個新 Activity 並且可以攜帶資料 (2) 透過 Intent 來啟動一個服務 (Service) (3) 透過 Intent 來廣播一個事件 38

241 Activating components: Intents 活動 Activity 服務 Service 應用程 式核心 廣播接收器 Broadcast Receiver 利用意圖訊息來啟動應用程式的核心元件 活動 Activity 服務 Service 應用程 式核心 可用於同一應用程式或不同應用程式之間 廣播接收器 Broadcast Receiver 39

242 Activating components: Intents 三個傳遞意圖訊息的機制 活動 服務 廣播接收器 Context.startActivity() 啟動活動 Activity.startActivityForResult() 啟動活動含結果 Activity.setResult() 設定結果 Context.startService() 啟動服務 Context.bindService() 建立應用程式和服務間的相依關係 Context.sendBroadcast() - Context.sendOrderedBroadcast() Context.sendStickyBroadcast() 40

243 Activating components: Intents 意圖依指定或不指定目的名稱可分成兩類 明顯意圖 隱含意圖 意圖濾器可用來宣告元件的能力並限定意圖訊息的使用 當元件沒有意圖濾器時只能用明顯意圖 行動 (action) 資料 (data) 種類 (category) 意圖濾器 (Intent Filter) 41

244 Activating components: Intents <intent-filter... > <action android:name="com.example.project.show_current" /> <action android:name="com.example.project.show_recent" /> <action android:name="com.example.project.show_pending" />... </intent-filter> <intent-filter... > <category android:name="android.intent.category.default" /> <category android:name="android.intent.category.browsable" />... </intent-filter> <intent-filter... > <data android:mimetype="video/mpeg" android:scheme="http"... /> <data android:mimetype="audio/mpeg" android:scheme="http"... />... </intent-filter> Action test Category test Data test 42

245 補充資料 (MVC) MVC(Model-View-Controller) 用於表示一種檢視軟體模型架構模式 MVC 把軟體分為三個基本部分 : 模型 (Model) 檢視 (View) 控制器 (Controller) 43

246 補充資料 (MVC) MVC 架構 44

247 補充資料 (MVC) MVC 架構起始於一個 GUI(graphical user interface design patter) 原型 其目的是實作動態程式設計, 使日後對於程式修改及擴展更加便利, 並使某些程式碼可重複利用 另外透過對複雜度的簡化, 使程式結構更加直覺 45

248 補充資料 利用模擬器控制視窗來進行簡訊測試 46

249 補充資料 利用 LogCat 來輔助除錯 47

250 補充資料 利用 Log 物件來協助除錯 public void run() { try { : Log.i("UDP", "S: Connecting..."); : Log.i("UDP", "S: Done."); } catch (Exception e) { Log.e("UDP", "S: Error", e); } 48

251 專題製作 ( 一 ) 每組 1~3 人 目的 : 利用 Android 設計出, 整合多種選擇表單可瀏覽 Http 網頁內容的 APP 程式 ( 如 Facebook Yahoo 新聞 GoogleMap 等 ) 需求 : 底圖 表單元件 對話視窗 Show Web wireless Internet TCP/IP Web Service 49

主程式 : public class Main3Activity extends AppCompatActivity { ListView listview; // 先整理資料來源,listitem.xml 需要傳入三種資料 : 圖片 狗狗名字 狗狗生日 // 狗狗圖片 int[] pic =new

主程式 : public class Main3Activity extends AppCompatActivity { ListView listview; // 先整理資料來源,listitem.xml 需要傳入三種資料 : 圖片 狗狗名字 狗狗生日 // 狗狗圖片 int[] pic =new ListView 自訂排版 主程式 : public class Main3Activity extends AppCompatActivity { ListView listview; // 先整理資料來源,listitem.xml 需要傳入三種資料 : 圖片 狗狗名字 狗狗生日 // 狗狗圖片 int[] pic =new int[]{r.drawable.dog1, R.drawable.dog2,

More information

Chapter 4

Chapter 4 Chapter 4 手機控制項應用 元件佈局 線性佈局共有兩個方向 : 垂直 (vertical) 水帄 (horizontal) 決定垂直或是水帄的屬性為 Orientation android:orientation="vertical" 線性佈局就是將在 < LinearLayout > 內的元件以線性的方式來呈現

More information

Microsoft Word - 第1章 Android基本概念.docx

Microsoft Word - 第1章 Android基本概念.docx Android 系 统 下 Java 编 程 详 解 作 者 : 华 清 远 见 第 1 章 Android 基 本 概 念 本 章 简 介 本 章 主 要 介 绍 Android 基 本 概 念 方 面 的 内 容, 包 括 Android 平 台 特 性 Android 系 统 架 构 Android 开 发 框 架 和 Android 开 发 环 境 搭 建 1.1 Android 简 介 Android

More information

res/layout 目录下的 main.xml 源码 : <?xml version="1.0" encoding="utf 8"?> <TabHost android:layout_height="fill_parent" xml

res/layout 目录下的 main.xml 源码 : <?xml version=1.0 encoding=utf 8?> <TabHost android:layout_height=fill_parent xml 拓展训练 1- 界面布局 1. 界面布局的重要性做应用程序, 界面是最基本的 Andorid 的界面, 需要写在 res/layout 的 xml 里面, 一般情况下一个 xml 对应一个界面 Android 界面布局有点像写 html( 连注释代码的方式都一样 ), 要先给 Android 定框架, 然后再在框架里面放控件,Android 提供了几种框架,AbsoluteLayout,LinearLayout,

More information

用手機直接傳值不透過網頁連接, 來當作搖控器控制家電 ( 電視遙控器 ) 按下按鍵發送同時會回傳值來確定是否有送出 問題 :1. 應該是使用了太多 thread 導致在傳值上有問題 2. 一次按很多次按鈕沒辦法即時反應

用手機直接傳值不透過網頁連接, 來當作搖控器控制家電 ( 電視遙控器 ) 按下按鍵發送同時會回傳值來確定是否有送出 問題 :1. 應該是使用了太多 thread 導致在傳值上有問題 2. 一次按很多次按鈕沒辦法即時反應 專題進度 老師 : 趙啟時老師 學生 : 陳建廷 2013/10/13 用手機直接傳值不透過網頁連接, 來當作搖控器控制家電 ( 電視遙控器 ) 按下按鍵發送同時會回傳值來確定是否有送出 問題 :1. 應該是使用了太多 thread 導致在傳值上有問題 2. 一次按很多次按鈕沒辦法即時反應 程式碼 : package com.example.phone; import java.util.arraylist;

More information

Dynamic Layout in Android

Dynamic Layout in Android Dynamic Layout in Android 建國科技大學資管系 饒瑞佶 2013/5 V1 Layout 多半都透過 res/layout/xml 格式設定來達成 Android 是 OOP, 所以可以動態產生 Layout 重點是 Layout 的階層關係 (Hierarchy) 需要處理對應事件 最後一樣用 setcontentview 加入 Layout 一 加入現有 Layout 中

More information

單步除錯 (1/10) 打開 Android Studio, 點選 Start a new Android Studio project 建立專案 Application name 輸入 BMI 點下 Next 2 P a g e

單步除錯 (1/10) 打開 Android Studio, 點選 Start a new Android Studio project 建立專案 Application name 輸入 BMI 點下 Next 2 P a g e Android Studio Debugging 本篇教學除了最基本的中斷點教學之外, 還有條件式中斷的教學 條件式中斷是進階的除錯技巧, 在某些特定情況中, 我們有一個函數可能會被呼叫數次, 但是我們只希望在某種條件成立時才進行中斷, 進而觀察變數的狀態 而條件式中斷這項技巧正是符合這項需求 本教學分兩部分 單步除錯 (Page2~11, 共 10) 條件式中斷點 (Page12~17, 共 6)

More information

Android Service

Android Service Android Service- 播放音樂 建國科技大學資管系 饒瑞佶 2013/7 V1 Android Service Service 是跟 Activity 並行 一個音樂播放程式若沒使用 Service, 即使按 home 鍵畫面離開之後, 音樂還是照播 如果再執行一次程式, 新撥放的音樂會跟先前撥放的一起撥, 最後程式就會出錯 執行中的程式完全看不到! 但是, 寫成 Service 就不同了

More information

建立Android新專案

建立Android新專案 經濟部工業局 Android 智慧型手機程式設計實務應用班 Android WebService 建國科技大學資管系 饒瑞佶 2012/4 WebService 需要 ksoap2-android-assembly-2.5.2-jar-withdependencies.jar 或 ksoap2-android-assembly-2.5.2-jar-withdependencies_timeout1.jar

More information

Android Robert C.C. Huang Oscar F.Y. Liu Peter C.L. Hsieh 2011/03/21

Android Robert C.C. Huang Oscar F.Y. Liu Peter C.L. Hsieh 2011/03/21 Android Robert C.C. Huang Oscar F.Y. Liu Peter C.L. Hsieh 2011/03/21 Outlines for Today Future Planning Review System Architecture Dev. Tools & Making the First App Project Structure & File Details Application

More information

Microsoft PowerPoint - 08_Android_Spring11_Control2.pptx

Microsoft PowerPoint - 08_Android_Spring11_Control2.pptx 作者 : 李昭賢作者 : 洪振偉編撰整理者 : 陳彥霖 學習目標 1. 透過 XML 產生控制項 2. 透過 Java 產生控制項 3. 新增事件 (Event) 處理 AnalogClock / DigitalClock 負責顯示時間 AnalogClock: 以傳統鐘錶指針方式顯示時與分 DigitalClock: 以數位數字方式顯示時 分與秒 類比小時鐘 (AnalogClock 類別 ) 數位小時鐘

More information

Microsoft Word zw

Microsoft Word zw 第 1 章 Android 概述 学习目标 : Android Android Android Studio Android Android APK 1.1 1. 智能手机的定义 Smartphone 2. 智能手机的发展 1973 4 3 PC IBM 1994 IBM Simon PDA PDA Zaurus OS 1996 Nokia 9000 Communicator Nokia 9000

More information

Android Fragment

Android Fragment Android Fragment 建國科技大學資管系饒瑞佶 2017/10 V1 Android 3.0 後才支援 Fragment 解決部分 App 適應螢幕大小的問題 它類似於 Activity, 可以像 Activity 可以擁有自己的版面設計, 也和 Activity 一樣有自己的生命週期 ( 具備 oncreate() oncreateview() 與 onpause() 方法 ) LifeCycle

More information

untitled

untitled JavaEE+Android - 6 1.5-2 JavaEE web MIS OA ERP BOSS Android Android Google Map office HTML CSS,java Android + SQL Sever JavaWeb JavaScript/AJAX jquery Java Oracle SSH SSH EJB+JBOSS Android + 1. 2. IDE

More information

目 錄 版 次 變 更 記 錄... 2 原 始 程 式 碼 類 型 之 使 用 手 冊... 3 一 安 裝 軟 體 套 件 事 前 準 備... 3 二 編 譯 流 程 說 明... 25 1

目 錄 版 次 變 更 記 錄... 2 原 始 程 式 碼 類 型 之 使 用 手 冊... 3 一 安 裝 軟 體 套 件 事 前 準 備... 3 二 編 譯 流 程 說 明... 25 1 科 技 部 自 由 軟 體 專 案 原 始 程 式 碼 使 用 手 冊 Source Code Manual of NSC Open Source Project 可 信 賴 的 App 安 全 應 用 框 架 -App 應 用 服 務 可 移 轉 性 驗 證 Trusted App Framework -Transferability Verification on App MOST 102-2218-E-011-012

More information

epub83-1

epub83-1 C++Builder 1 C + + B u i l d e r C + + B u i l d e r C + + B u i l d e r C + + B u i l d e r 1.1 1.1.1 1-1 1. 1-1 1 2. 1-1 2 A c c e s s P a r a d o x Visual FoxPro 3. / C / S 2 C + + B u i l d e r / C

More information

Android 开发教程

Android 开发教程 封面 1 GUI 可视化设计器 DroidDraw DroidDraw 是一个基于 Java Swing 的 Android 界面设计器, 可以通过它来生成复杂的 Android Layout XML 文 件,Android 的 Layout 和 Swing Layout 中有很好的对应, 设计器的代码编写起来比较容易 2 AnDroidDraw AnDroidDraw 是一个与 DroidDraw

More information

Lecture01_Android介绍

Lecture01_Android介绍 移动平台应用软件开发 Android 介绍 主讲 : 张齐勋 zhangqx@ss.pku.edu.cn 移动平台应用软件开发 课程建设小组 北京大学 二零一七年秋北京 Android是什么 Android不仅仅是一个操作系统 它更是一个完整的软件框 架 Android基于Linux内核 2005年Google公司收购了Android公司 Google公司选择使用Apache许可证开放Android源码

More information

预览图 : (2) 在 SelectCity.java 中增加控件, 用于绑定 select_city 文件的 ListView, TextView,EditTest 等控件 代码和注释如下 :

预览图 : (2) 在 SelectCity.java 中增加控件, 用于绑定 select_city 文件的 ListView, TextView,EditTest 等控件 代码和注释如下 : EditText 实现城市搜索 1801210778 邹宇航 摘要 : 使用 EditText 实现搜索城市的功能, 以此为依据更新 ListView 1. 效果图 : 2. 主要步骤 (1) 在 select-city.xml 布局文件中中添加 EditText 控件用作搜索框, 然后添加 ListView 控件用来显示城市名字内容 代码如下 : 预览图 : (2) 在 SelectCity.java

More information

Android Android Android SDK iv

Android Android Android SDK iv Android Market Google Android SDK Apple Google Microsoft b2c b 2010 Internet Android how why iii Android 240... Android Android SDK iv Android Market Google Android SDK Visual C++ Java N-tier J2EE Unix/Linux

More information

ContextMenu

ContextMenu 作者 : 林致宇 日期 :2012/1/20 問題 : 如何建立 ContextMenu? 解答 : 什麼是 ContextMenu 呢? 下面兩張圖是 ContextMenu 的範例, 紅色框線中的選單即所謂的 ContextMenu, 可以視為 選單列表, 例如在左圖的 ContextMenu 中有兩個選項 : Action 1 與 Action 2, 按下 Action 1 可執行某些動作,

More information

<4D F736F F F696E74202D20B5DAD2BBBDB2A3BA416E64726F6964D3A6D3C3BFAAB7A2B5E4D0CDB0B8C0FDB7D6CEF6A1AAD6F7C1F76D7033B2A5B7C5C6F7A3A

<4D F736F F F696E74202D20B5DAD2BBBDB2A3BA416E64726F6964D3A6D3C3BFAAB7A2B5E4D0CDB0B8C0FDB7D6CEF6A1AAD6F7C1F76D7033B2A5B7C5C6F7A3A Android 应用开发典型案例分析 主流 mp3 播放器 2012 年 09 月 04 19:30 准时开始 时间没到, 请耐心等待, 谢谢!.. 版权声明 华清远见教育集团版权所有 ; 未经华清远见明确许可, 不得为任何目的以任何形式复制 或传播此文档的任何部分 ; 本文档包含的信息如有更改, 恕不另行通知 ; 华清远见教育集团保留所有权利 概述 Android 和 UI 设计 UI(User

More information

Lecture01_Android介绍

Lecture01_Android介绍 移动平台应用软件开发 Android 介绍 主讲 : 张齐勋 zhangqx@ss.pku.edu.cn 移动平台应用软件开发 课程建设小组 北京大学 二零一八年秋北京 Android 是什么 Android 不仅仅是一个操作系统, 它更是一个完整的软件框架 Android 基于 Linux 内核 2005 年 Google 公司收购了 Android 公司 Google 公司选择使用 Apache

More information

<4D6963726F736F667420576F7264202D20BBF9D3DA416E64726F6964C6BDCCA8B5C4B5E7D7D3C5C4C2F4CFB5CDB32E646F63>

<4D6963726F736F667420576F7264202D20BBF9D3DA416E64726F6964C6BDCCA8B5C4B5E7D7D3C5C4C2F4CFB5CDB32E646F63> 基 于 Android 平 台 的 电 子 拍 卖 系 统 摘 要 本 电 子 拍 卖 系 统 其 实 就 是 一 个 电 子 商 务 平 台, 只 要 将 该 系 统 部 署 到 互 联 网 上, 客 户 都 可 以 在 该 系 统 上 发 布 想 出 售 的 商 品, 也 可 以 对 拍 卖 中 的 商 品 参 与 竞 价 整 个 过 程 无 须 人 工 干 预, 由 系 统 自 动 完 成 本

More information

The golden pins of the PCI card can be oxidized after months or years

The golden pins of the PCI card can be oxidized after months or years Q. 如何在 LabWindows/CVI 編譯 DAQ Card 程式? A: 請參考至下列步驟 : 步驟 1: 安裝驅動程式 1. 安裝 UniDAQ 驅動程式 UniDAQ 驅動程式下載位置 : CD:\NAPDOS\PCI\UniDAQ\DLL\Driver\ ftp://ftp.icpdas.com/pub/cd/iocard/pci/napdos/pci/unidaq/dll/driver/

More information

Microsoft Word - 02.目錄.doc

Microsoft Word - 02.目錄.doc 目錄 -1- 目錄 序 準備篇 一 使用說明... 0-2 二 標示說明... 0-6 三 注意事項... 0-7 第一類 Android 基礎知識 -UI 設計及語法應用 101. 整存整付計算機... 1-2 102. 電費計算機... 1-8 103. 點餐系統... 1-18 104. 計算 BMI 值... 1-23 105. MENU 功能選單... 1-36 106. 畫廊展示...

More information

Symantec™ Sygate Enterprise Protection 防护代理安装使用指南

Symantec™ Sygate Enterprise Protection 防护代理安装使用指南 Symantec Sygate Enterprise Protection 防 护 代 理 安 装 使 用 指 南 5.1 版 版 权 信 息 Copyright 2005 Symantec Corporation. 2005 年 Symantec Corporation 版 权 所 有 All rights reserved. 保 留 所 有 权 利 Symantec Symantec 徽 标 Sygate

More information

Chapter 9: Objects and Classes

Chapter 9: Objects and Classes Java application Java main applet Web applet Runnable Thread CPU Thread 1 Thread 2 Thread 3 CUP Thread 1 Thread 2 Thread 3 ,,. (new) Thread (runnable) start( ) CPU (running) run ( ) blocked CPU sleep(

More information

The Embedded computing platform

The Embedded computing platform Android User Interfaces Hsiao-Lung Chan, Ph.D. Dept Electrical Engineering Chang Gung University, Taiwan chanhl@maili.cgu.edu.tw Basic control components Text components TextView EditText Button compoents

More information

Chapter 2

Chapter 2 手持式裝置之隨身照護應用 Android 開發環境設定 鐘國家老師 在 Windows 安裝 Android 開發環境 下載 Android SDK 首先下載 Windows 平台的 Android SDK, 網址如下 : http://dl.google.com/android/android-sdk_r04-windows.zip 2.0 在 Windows 安裝 Android 開發環境 下載

More information

新・解きながら学ぶJava

新・解きながら学ぶJava 481! 41, 74!= 40, 270 " 4 % 23, 25 %% 121 %c 425 %d 121 %o 121 %x 121 & 199 && 48 ' 81, 425 ( ) 14, 17 ( ) 128 ( ) 183 * 23 */ 3, 390 ++ 79 ++ 80 += 93 + 22 + 23 + 279 + 14 + 124 + 7, 148, 16 -- 79 --

More information

2 第 章 绪 论 Internet 2.0 使 得 消 费 型 电 子 产 品 用 户 可 以 通 过 多 种 不 同 的 数 据 网 络 访 问 互 联 网 内 容 用 户 可 以 使 用 便 携 式 消 费 型 电 子 设 备, 如 智 能 手 机 触 屏 平 板 电 脑 电 子 书, 甚 至

2 第 章 绪 论 Internet 2.0 使 得 消 费 型 电 子 产 品 用 户 可 以 通 过 多 种 不 同 的 数 据 网 络 访 问 互 联 网 内 容 用 户 可 以 使 用 便 携 式 消 费 型 电 子 设 备, 如 智 能 手 机 触 屏 平 板 电 脑 电 子 书, 甚 至 . Android 是 什 么 第 章 绪 论 2 3 本 章 将 主 要 介 绍 Android 操 作 系 统, 这 些 背 景 知 识 可 以 帮 你 更 好 地 理 解 本 书 的 内 容 你 将 了 解 到, 这 一 平 台 在 如 今 以 便 携 式 消 费 型 电 子 设 备 为 基 础 的 Internet 2.0 环 境 下 是 如 何 大 显 身 手 的 这 里 所 说 的 Internet

More information

(Microsoft Word - wes _\246p\246\363\250\317\245\316LED\277O\305\343\245\334\252\254\272A.doc)

(Microsoft Word - wes _\246p\246\363\250\317\245\316LED\277O\305\343\245\334\252\254\272A.doc) 作者 Amber 版本 1.0.0 日期 2012/04/25 頁數 1/7 如何使用 LED 燈顯示狀態? 適用於 : 平台 作業系統版本 XPAC utility 版本 XP-8000 系列 N/A N/A XP-8000-Atom 系列 WES2009 所有版本 N/A: Not applicable to this platform and OS. 注意! 欲變更系統的任何設定之前, 請先關閉

More information

ASP.NET MVC Visual Studio MVC MVC 範例 1-1 建立第一個 MVC 專案 Visual Studio MVC step 01 Visual Studio Web ASP.NET Web (.NET Framework) step 02 C:\M

ASP.NET MVC Visual Studio MVC MVC 範例 1-1 建立第一個 MVC 專案 Visual Studio MVC step 01 Visual Studio Web ASP.NET Web (.NET Framework) step 02 C:\M ASP.NET MVC Visual Studio 2017 1 1-4 MVC MVC 範例 1-1 建立第一個 MVC 專案 Visual Studio MVC step 01 Visual Studio Web ASP.NET Web (.NET Framework) step 02 C:\MvcExamples firstmvc MVC 1-7 ASP.NET MVC 1-9 ASP.NET

More information

TPM BIOS Infineon TPM Smart TPM Infineon TPM Smart TPM TPM Smart TPM TPM Advanced Mode...8

TPM BIOS Infineon TPM Smart TPM Infineon TPM Smart TPM TPM Smart TPM TPM Advanced Mode...8 Smart TPM Rev. 1001 Smart TPM Ultra TPM Smart TPM TPM...3 1. BIOS... 3 2. Infineon TPM Smart TPM... 4 2.1. Infineon TPM...4 2.2. Smart TPM...4 3. TPM... 5 3.1. Smart TPM TPM...5 3.2. Advanced Mode...8

More information

Microsoft PowerPoint - 07.Android 介面元件-TableLayout、Toast、AlertDialog

Microsoft PowerPoint - 07.Android 介面元件-TableLayout、Toast、AlertDialog 計劃名稱 : 104 年度教育部資通訊軟體創新人才推升推廣計畫跨校資源中心 : 雲端運算 ( 國立中山大學 ) 課程名稱 : 網路及平台服務 Part1- 課程教材 教材名稱 :Android 介面元件 -TableLayout Toast AlertDialog 國立高雄大學資訊工程學系張保榮教授 大綱 TableLayout 版面配置 Toast 版面配置 AlertDialog 版面配置 TableLayout

More information

Eclipse C C++, or

Eclipse C C++,  or Eclipse C C++, Emailctchen@pl.csie.ntut.edu.tw or s1669021@ntut.edu.tw, s2598003@ntut.edu.tw http://pl.csie.ntut.edu.tw/~ctchen, http://www.ntut.edu.tw/~s2598003/ 2004/9/10 (0.02 ) Eclipse http://www.eclipse.org

More information

投影片 1

投影片 1 資料庫管理程式 ( 補充教材 -Part2) 使用 ADO.NET 連結資料庫 ( 自行撰寫程式碼 以實現新增 刪除 修改等功能 ) Private Sub InsertButton_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles InsertButton.Click ' 宣告相關的 Connection

More information

111

111 修 平 科 技 大 學 資 訊 網 路 技 術 系 貪 食 蛇 組 長 :BN99017 賴 冠 諻 組 員 :BN99001 楊 欣 樺 BN99008 楊 典 瑾 BN99041 陳 宥 瑞 BN99043 張 州 凱 指 導 老 師 : 口 試 老 師 : 口 試 老 師 : 口 試 老 師 : 中 華 民 國 1 0 3 年 6 月 目 錄 目 錄 1 摘 要 3 第 一 章 緒 論 4 (

More information

雲端 Cloud Computing 技術指南 運算 應用 平台與架構 10/04/15 11:55:46 INFO 10/04/15 11:55:53 INFO 10/04/15 11:55:56 INFO 10/04/15 11:56:05 INFO 10/04/15 11:56:07 INFO

雲端 Cloud Computing 技術指南 運算 應用 平台與架構 10/04/15 11:55:46 INFO 10/04/15 11:55:53 INFO 10/04/15 11:55:56 INFO 10/04/15 11:56:05 INFO 10/04/15 11:56:07 INFO CHAPTER 使用 Hadoop 打造自己的雲 8 8.3 測試 Hadoop 雲端系統 4 Nodes Hadoop Map Reduce Hadoop WordCount 4 Nodes Hadoop Map/Reduce $HADOOP_HOME /home/ hadoop/hadoop-0.20.2 wordcount echo $ mkdir wordcount $ cd wordcount

More information

Android 编程基础 Android 开发教程 & 笔记 1

Android 编程基础 Android 开发教程 & 笔记 1 Android 开发教程 & 笔记 1 多式样 ProgressBar 撰写 : 地狱怒兽 联系 :zyf19870302@126.com 普通圆形 ProgressBar 该类型进度条也就是一个表示运转的过程, 例如发送短信, 连接网络等等, 表示一个过程正 在执行中 一般只要在 XML 布局中定义就可以了

More information

書面

書面 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 5.4 互動功能畫面 程式碼請參考附件-程式三 在進入互動頁面時 會執行setAllText()依寵物狀態數值來 設定狀態文字與頭像 並且依心情決定是否要不要播放音效 觸摸的區域 由於是自己寫的 view 所以並未透過xml來設置 而是透過Layut.addview()來動態新增

More information

X6-04_How_do_I_write_a_com_port_communicate_program_of_XPAC_tc

X6-04_How_do_I_write_a_com_port_communicate_program_of_XPAC_tc Author WeiKai Version 1.0.0 Date 2013/4/14 Page 1/11 我如何在 XPAC 上建立一個 COM port 通訊程式 Applies to: Platform OS version XPAC utility version XPAC series All versions (WinCE6) All versions XPAC SDK 提供 XPAC 結合

More information

基于ECO的UML模型驱动的数据库应用开发1.doc

基于ECO的UML模型驱动的数据库应用开发1.doc ECO UML () Object RDBMS Mapping.Net Framework Java C# RAD DataSetOleDbConnection DataGrod RAD Client/Server RAD RAD DataReader["Spell"].ToString() AObj.XXX bug sql UML OR Mapping RAD Lazy load round trip

More information

建模与图形思考

建模与图形思考 C03_c 基 於 軟 硬 整 合 觀 點 JNI: 从 C 调 用 Java 函 数 ( c) By 高 煥 堂 3 How-to: 基 於 軟 硬 整 合 觀 點 从 C 调 用 Java 函 数 如 果 控 制 点 摆 在 本 地 C 层, 就 会 常 常 1. 从 本 地 C 函 数 去 调 用 Java 函 数 ; 2. 从 本 地 C 函 数 去 存 取 Java 层 对 象 的 属 性

More information

Microsoft PowerPoint - ch6 [相容模式]

Microsoft PowerPoint - ch6 [相容模式] UiBinder wzyang@asia.edu.tw UiBinder Java GWT UiBinder XML UI i18n (widget) 1 2 UiBinder HelloWidget.ui.xml: UI HelloWidgetBinder HelloWidget.java XML UI Owner class ( Composite ) UI XML UiBinder: Owner

More information

RecyclerView and CardVew

RecyclerView and CardVew RecyclerView and CardView 建國科技大學資管系饒瑞佶 2017/10 V1 CardView CardView A CardView is a ViewGroup. Like any other ViewGroup, it can be added to youractivity or Fragment using a layout XML file. To create an

More information

1: public class MyOutputStream implements AutoCloseable { 3: public void close() throws IOException { 4: throw new IOException(); 5: } 6:

1: public class MyOutputStream implements AutoCloseable { 3: public void close() throws IOException { 4: throw new IOException(); 5: } 6: Chapter 15. Suppressed Exception CH14 Finally Block Java SE 7 try-with-resources JVM cleanup try-with-resources JVM cleanup cleanup Java SE 7 Throwable getsuppressed Throwable[] getsuppressed() Suppressed

More information

PPBSalesDB.doc

PPBSalesDB.doc Pocket PowerBuilder SalesDB Pocket PowerBuilder PDA Pocket PowerBuilder Mobile Solution Pocket PowerBuilder Pocket PowerBuilder C:\Program Files\Sybase\Pocket PowerBuilder 1.0 %PPB% ASA 8.0.2 ASA 9 ASA

More information

中 文 摘 要 智 慧 型 手 機 由 於 有 強 大 的 功 能, 以 及 優 渥 的 便 利 性, 還 能 與 網 路 保 持 隨 時 的 鏈 結 與 同 步 更 新, 因 此 深 受 廣 大 消 費 者 喜 愛, 當 然, 手 機 遊 戲 也 成 為 現 代 人 不 可 或 缺 的 娛 樂 之

中 文 摘 要 智 慧 型 手 機 由 於 有 強 大 的 功 能, 以 及 優 渥 的 便 利 性, 還 能 與 網 路 保 持 隨 時 的 鏈 結 與 同 步 更 新, 因 此 深 受 廣 大 消 費 者 喜 愛, 當 然, 手 機 遊 戲 也 成 為 現 代 人 不 可 或 缺 的 娛 樂 之 臺 北 市 大 安 高 級 工 業 職 業 學 校 資 訊 科 一 百 零 一 學 年 度 專 題 製 作 報 告 ------ 以 Android 製 作 ------ ----- 連 線 塔 防 遊 戲 ------ Tower defense game using Internet technology 班 級 : 資 訊 三 甲 組 別 : A9 組 組 員 : 葉 冠 麟 (9906129)

More information

Microsoft Word - 第3章.doc

Microsoft Word - 第3章.doc 第 3 章 多个用户界面的程序设计 3.1 页面的切换与传递参数值 3.1.1 传递参数组件 Intent Intent 是 Android 系统的一种运行时的绑定机制, 在应用程序运行时连接两个不同组件 在 Android 的应用程序中不管是页面切换还是传递数据或是调用外部程序都可能要用到 Intent Intent 负责对应用中某次操作的动作 动作涉及的数据 附加数据进行描述, Android

More information

AL-M200 Series

AL-M200 Series NPD4754-00 TC ( ) Windows 7 1. [Start ( )] [Control Panel ()] [Network and Internet ( )] 2. [Network and Sharing Center ( )] 3. [Change adapter settings ( )] 4. 3 Windows XP 1. [Start ( )] [Control Panel

More information

目 錄 一 ANDROID 開發系統需求 作業系統 開發工具... 1 二 安裝 ANDROID 開發工具 安裝 JDK 使用 APT-GET 安裝 使用套件管理程式安裝... 9 三 ANDROID 程式撰寫... 1

目 錄 一 ANDROID 開發系統需求 作業系統 開發工具... 1 二 安裝 ANDROID 開發工具 安裝 JDK 使用 APT-GET 安裝 使用套件管理程式安裝... 9 三 ANDROID 程式撰寫... 1 Android On Linux 簡易安裝開發教學 Installing Google Android SDK 2.0.1 On Ubuntu 9.10 Desktop 目 錄 一 ANDROID 開發系統需求... 1 1. 作業系統... 1 2. 開發工具... 1 二 安裝 ANDROID 開發工具... 1 1. 安裝 JDK... 1 2. 使用 APT-GET 安裝... 2 3. 使用套件管理程式安裝...

More information

任務二 : 產生 20 個有炸彈的磚塊, 放在隨機的位置編輯 Block 類別的程式碼 import greenfoot.; // (World, Actor, GreenfootImage, Greenfoot and MouseInfo) Write a description of class

任務二 : 產生 20 個有炸彈的磚塊, 放在隨機的位置編輯 Block 類別的程式碼 import greenfoot.; // (World, Actor, GreenfootImage, Greenfoot and MouseInfo) Write a description of class 踩地雷遊戲 高慧君南港高中 開啟專案 MineSweep 任務一 : 產生 30X20 個磚塊編輯 Table 類別的程式碼 import greenfoot.; // (World, Actor, GreenfootImage, Greenfoot and MouseInfo) import java.util.arraylist; Write a description of class MyWorld

More information

基于UML建模的管理管理信息系统项目案例导航——VB篇

基于UML建模的管理管理信息系统项目案例导航——VB篇 PowerBuilder 8.0 PowerBuilder 8.0 12 PowerBuilder 8.0 PowerScript PowerBuilder CIP PowerBuilder 8.0 /. 2004 21 ISBN 7-03-014600-X.P.. -,PowerBuilder 8.0 - -.TP311.56 CIP 2004 117494 / / 16 100717 http://www.sciencep.com

More information

Microsoft Word - 01.DOC

Microsoft Word - 01.DOC 第 1 章 JavaScript 简 介 JavaScript 是 NetScape 公 司 为 Navigator 浏 览 器 开 发 的, 是 写 在 HTML 文 件 中 的 一 种 脚 本 语 言, 能 实 现 网 页 内 容 的 交 互 显 示 当 用 户 在 客 户 端 显 示 该 网 页 时, 浏 览 器 就 会 执 行 JavaScript 程 序, 用 户 通 过 交 互 式 的

More information

0511-Android程式之GPS應用_專題週記4

0511-Android程式之GPS應用_專題週記4 逢甲大學通訊工程學系專題研究 Android 程式之 GPS 應用 專題週記 0511 學生姓名 陳彥儒 D0035131 廖元譽 D0077791 指導老師 楊豐瑞老師繳交日期 2014.05.11 1 匯入 GoogleMap 1.1 取得授權步驟 目前進度 取得 Google 授權鑰匙 實作程式尚未成功 1.1.1 建立個人的 keystore 1.1.2 由個人的 keystore 查詢 SHA1

More information

Microsoft Word - 第3章.doc

Microsoft Word - 第3章.doc 第 章.1 Android UI 基本概念 用户界面 (User Interface,UI) 是用户与设备之间进行信息交流的直接媒介, 是决定用户体验最重要的部分 相比于早期的计算机的主要交互界面 批处理界面和命令行界面, 现在更为流行的是更简单直接的用户图形界面 (Graphical User Interface, GUI) GUI 简单易用, 受众面广, 直接推动了个人计算机的发展 目前, 主流大众的操作系统都采用了

More information

01 用 ActionScript 3.0 開始認識 Flash CS3 Flash 是應用在網路上非常流行且高互動性的多媒體技術, 由於擁有向量圖像體積小的優點, 而且 Flash Player 也很小巧精緻, 很快的有趣的 Flash 動畫透過設計師的創意紅遍了整個網際網路 雖然很多人都對 Fl

01 用 ActionScript 3.0 開始認識 Flash CS3 Flash 是應用在網路上非常流行且高互動性的多媒體技術, 由於擁有向量圖像體積小的優點, 而且 Flash Player 也很小巧精緻, 很快的有趣的 Flash 動畫透過設計師的創意紅遍了整個網際網路 雖然很多人都對 Fl 01 用 ActionScript 3.0 開始認識 Flash CS3 Flash 是應用在網路上非常流行且高互動性的多媒體技術, 由於擁有向量圖像體積小的優點, 而且 Flash Player 也很小巧精緻, 很快的有趣的 Flash 動畫透過設計師的創意紅遍了整個網際網路 雖然很多人都對 Flash 可以做精美的網路動畫並不陌生, 但是實際上 Flash 不僅如此, 只要搭配 ActionScript

More information

Microsoft PowerPoint - 05.Android 介面元件-RelativeLayout、Button、TextVeiw、EditText

Microsoft PowerPoint - 05.Android 介面元件-RelativeLayout、Button、TextVeiw、EditText 計劃名稱 : 104 年度教育部資通訊軟體創新人才推升推廣計畫跨校資源中心 : 雲端運算 ( 國立中山大學 ) 課程名稱 : 網路及平台服務 Part1- 課程教材 教材名稱 :Android 介面元件 -RelativeLayout Button TextVeiw EditText 國立高雄大學資訊工程學系張保榮教授 大綱 RelativeLayout 版面配置 Button 版面配置 TextView

More information

Database_001

Database_001 作者 : 林致宇日期 :2011/10/26 主要參考來源 : http://www.reigndesign.com/blog/using-your-own-sqlite-database-in-android-applicat ions/ 問題 : 如在存取一個已經建立好的資料庫? 解答 : 有一些應用程式會需要讀取已經建立好的資料庫, 例如一個試題測驗應用程式, 裡面的試題可能已經於電腦上, 使用任何的

More information

Autodesk Product Design Suite Standard 系統統需求 典型使用用者和工作流程 Autodesk Product Design Suite Standard 版本為為負責建立非凡凡產品的設計師師和工程師, 提供基本概念設計計和製圖工具, 以取得令人驚驚嘆

Autodesk Product Design Suite Standard 系統統需求 典型使用用者和工作流程 Autodesk Product Design Suite Standard 版本為為負責建立非凡凡產品的設計師師和工程師, 提供基本概念設計計和製圖工具, 以取得令人驚驚嘆 Autodesk Product Design Suite Standard 20122 系統統需求 典型使用用者和工作流程 Autodesk Product Design Suite Standard 版本為為負責建立非凡凡產品的設計師師和工程師, 提供基本概念設計計和製圖工具, 以取得令人驚驚嘆的產品設計計 Autodesk Product Design Suite Standard 版本中中包括以下軟體體產品

More information

Chapter 2

Chapter 2 Chapter 1 手機平台介紹 什麼是 Android? 什麼是 Android? 傳統以來, 手機一直被視為用來打電話的, 與電腦分屬於電信及網際網路兩個不同世界 而提供語音的電信服務在網際網路尚未興起前, 一直是一寡佔且封閉的產業, 早期的手機也只提供通話服務 什麼是 Android? 隨著手機與網際網路結合, 上網普及化之後, 使用者對手機的功能有截然不同的需求 透過網際網路, 各種新的服務與應用應運而生,

More information

RunPC2_.doc

RunPC2_.doc PowerBuilder 8 (5) PowerBuilder Client/Server Jaguar Server Jaguar Server Connection Cache Thin Client Internet Connection Pooling EAServer Connection Cache Connection Cache Connection Cache Connection

More information

PowerPoint 簡報

PowerPoint 簡報 UI 設計 Android 專案目錄架構 Android 專案建立後會自動產生 3 個主要目錄 src:java 程式檔案 res: 資源 ( 文字 圖形 聲音檔案等 ) 與 UI 設定有關的 layout 檔 此目錄內檔案名稱只能為小寫字母 數字 _. gen:r.java 根據 res 目錄內容自動產生 不要去修改 R.java Android 中所有的資源檔案 ( 圖片 XML 等 ) 命名都必須使用英文小寫,

More information

開發工具 使用 Android SDK 建立應用程式 使用 Java 語言 Java Platform, Standard Edition (Java SE)

開發工具 使用 Android SDK 建立應用程式 使用 Java 語言 Java Platform, Standard Edition (Java SE) Android 應用程式 開發概論 中華民國九十九年十二月二日星期四 開發工具 使用 Android SDK 建立應用程式 使用 Java 語言 Java Platform, Standard Edition (Java SE) 系統需求 項目版本要求說明 作業系統 Windows XP/Vista MacOS X 10.4.8+ Ubuntu (Drapper) 開發套件 JDK + Android

More information

ii Vue Bootstrap 4 ES 6 Vue Vue Bootstrap 4 ES 6 Vue 2 vue html vue html vue Vue HTML 5 CSS ES 6 HTML 5 CSS Visual Studio Code h

ii Vue Bootstrap 4 ES 6 Vue Vue Bootstrap 4 ES 6 Vue 2 vue html vue html vue Vue HTML 5 CSS ES 6 HTML 5 CSS Visual Studio Code h ii Vue Bootstrap 4 ES 6 Vue Vue Bootstrap 4 ES 6 Vue 2 vue010101.html vue010104.html vue0101 01 04 Vue HTML 5 CSS ES 6 HTML 5 CSS Visual Studio Code https://code.visualstudio.com/ Chrome XAMP Visual Studio

More information

untitled

untitled 1 行 行 行 行.NET 行 行 類 來 行 行 Thread 類 行 System.Threading 來 類 Thread 類 (1) public Thread(ThreadStart start ); Name 行 IsAlive 行 行狀 Start 行 行 Suspend 行 Resume 行 行 Thread 類 (2) Sleep 行 CurrentThread 行 ThreadStart

More information

题目

题目 开发 Android 应用 目的 : 帮助大家了解 Android 平台开发 作者 : 王威威 技术爱好 : linux,qt, 嵌入式开发 MSN : wangweiweicdma@hotmail.com Email : wang.weiwei1@ztenc.com.cn wangjiecdma@126.com 下载开发资源 1 下载最新的 Android SDK http://code.google.com/android/download.html

More information

1. 2. Flex Adobe 3.

1. 2. Flex Adobe 3. 1. 2. Flex Adobe 3. Flex Adobe Flex Flex Web Flex Flex Flex Adobe Flash Player 9 /rich Internet applications/ria Flex 1. 2. 3. 4. 5. 6. SWF Flash Player Flex 1. Flex framework Adobe Flex 2 framework RIA

More information

概述

概述 OPC Version 1.6 build 0910 KOSRDK Knight OPC Server Rapid Development Toolkits Knight Workgroup, eehoo Technology 2002-9 OPC 1...4 2 API...5 2.1...5 2.2...5 2.2.1 KOS_Init...5 2.2.2 KOS_InitB...5 2.2.3

More information

輕鬆學 Dreamweaver CS5 網頁設計..\Example\Ch0\ \.html..\example\ch0\ \mouse.txt..\example\ch0\ \ _Ok.html 學習重點 JavaScript 複製程式碼 mouse.txt Ctrl+C Ctrl+C 0-4

輕鬆學 Dreamweaver CS5 網頁設計..\Example\Ch0\ \.html..\example\ch0\ \mouse.txt..\example\ch0\ \ _Ok.html 學習重點 JavaScript 複製程式碼 mouse.txt Ctrl+C Ctrl+C 0-4 JAVA Extension 0..\Example\Ch0\ \ T.html..\Example\Ch0\ \ T.txt T.txt..\Example\Ch0\ \ T_Ok.html 提示 :. Marquee Marquee Font Color #FFFFFF BG Color #867bf Width 90 Height 50. T.txt Ctrl+C your scrolling

More information

實作SQLiteOpenHelper類別

實作SQLiteOpenHelper類別 SQLiteOpenHelper 類別存取 SQLite 建國科技大學資管系 饒瑞佶 2013/5 V1 Android 連結資料庫 MySQL SQL Server Web Service 遠端資料庫 Internet Intranet Android SQLite 單機資料庫 Android vs. SQLite 透過 SQLiteOpenHelper 類別來操作 建立資料庫 ( 建構子 ) 建立資料表

More information

人民邮电

人民邮电 第 2 章 布 局 布 局 是 所 有 带 界 面 的 Android 程 序 的 开 端 布 局 应 用 得 好 坏 直 接 决 定 了 程 序 的 用 户 体 验 虽 然 布 局 看 似 没 有 组 件 复 杂, 但 也 涉 及 到 了 很 多 技 巧 在 各 大 公 司 的 面 试 题 中 也 会 经 常 遇 到 关 于 布 局 的 一 些 问 题 通 过 这 些 问 题 可 以 考 查 应

More information

iziggi

iziggi iziggi 1 1 iziggi-hd 2 iziggi-hd 4 IPEVO iziggi-hd 6 iziggi-hd 8 iziggi-hd 9 Whiteboard App USB 10 iziggi-hd 11 iziggi-hd Live View WiFi 11 12 LED 12 iziggi-hd 13 Apple TV AirPlay 13 14 15 iziggi-hd *

More information

IBM Rational ClearQuest Client for Eclipse 1/ IBM Rational ClearQuest Client for Ecl

IBM Rational ClearQuest Client for Eclipse   1/ IBM Rational ClearQuest Client for Ecl 1/39 Balaji Krish,, IBM Nam LeIBM 2005 4 15 IBM Rational ClearQuest ClearQuest Eclipse Rational ClearQuest / Eclipse Clien Rational ClearQuest Rational ClearQuest Windows Web Rational ClearQuest Client

More information

ShareText

ShareText 作者 : 林致宇 日期 :2012/1/23 問題 : 如何分享分享文字資訊給其它的應用程式? 解答 : 有時候我們可能會希望 我們的應用程式的資訊 能夠讓使用者分享出去, 讓使用者能夠將此資訊傳送簡訊給其好友或寄電子郵件的方式寄給其好友, 這份文件將示範如何寫出這樣的應用程式 本文件將產出兩個 App, 第一個 App 是 分享資料的來源, 名為 CopyPaste_Source, 功能非常簡單,

More information

WebSphere Studio Application Developer IBM Portal Toolkit... 2/21 1. WebSphere Portal Portal WebSphere Application Server stopserver.bat -configfile..

WebSphere Studio Application Developer IBM Portal Toolkit... 2/21 1. WebSphere Portal Portal WebSphere Application Server stopserver.bat -configfile.. WebSphere Studio Application Developer IBM Portal Toolkit... 1/21 WebSphere Studio Application Developer IBM Portal Toolkit Portlet Doug Phillips (dougep@us.ibm.com),, IBM Developer Technical Support Center

More information

0 0 = 1 0 = 0 1 = = 1 1 = 0 0 = 1

0 0 = 1 0 = 0 1 = = 1 1 = 0 0 = 1 0 0 = 1 0 = 0 1 = 0 1 1 = 1 1 = 0 0 = 1 : = {0, 1} : 3 (,, ) = + (,, ) = + + (, ) = + (,,, ) = ( + )( + ) + ( + )( + ) + = + = = + + = + = ( + ) + = + ( + ) () = () ( + ) = + + = ( + )( + ) + = = + 0

More information

CC213

CC213 : (Ken-Yi Lee), E-mail: feis.tw@gmail.com 9 [P.11] : Dev C++ [P.12] : http://c.feis.tw [P.13] [P.14] [P.15] [P.17] [P.23] Dev C++ [P.24] [P.27] [P.34] C / C++ [P.35] 10 C / C++ C C++ C C++ C++ C ( ) C++

More information

1 4 1.1 4 1.2..4 2..4 2.1..4 3.4 3.1 Java.5 3.1.1..5 3.1.2 5 3.1.3 6 4.6 4.1 6 4.2.6 5 7 5.1..8 5.1.1 8 5.1.2..8 5.1.3..8 5.1.4..9 5.2..9 6.10 6.1.10

1 4 1.1 4 1.2..4 2..4 2.1..4 3.4 3.1 Java.5 3.1.1..5 3.1.2 5 3.1.3 6 4.6 4.1 6 4.2.6 5 7 5.1..8 5.1.1 8 5.1.2..8 5.1.3..8 5.1.4..9 5.2..9 6.10 6.1.10 Java V1.0.1 2007 4 10 1 4 1.1 4 1.2..4 2..4 2.1..4 3.4 3.1 Java.5 3.1.1..5 3.1.2 5 3.1.3 6 4.6 4.1 6 4.2.6 5 7 5.1..8 5.1.1 8 5.1.2..8 5.1.3..8 5.1.4..9 5.2..9 6.10 6.1.10 6.2.10 6.3..10 6.4 11 7.12 7.1

More information

ebook 86-15

ebook 86-15 15 G t k + d e l e t e _ e v e n t G n o m e G n o m e 15.1 GnomeDialog G t k + G n o m e D i a l o g 15.1.1 G n o m e D i a l o g g n o m e _ d i a l o g _ n e w ( ) G N O M E _ D I A L O G ( d i a l

More information

建立Android新專案

建立Android新專案 Android 智 慧 型 手 機 程 式 設 計 Android WebService 建 國 科 技 大 學 資 管 系 饒 瑞 佶 2012/4 V1 2012/8 V2 2013/5 V3 2014/10 v4 提 醒 這 節 的 內 容 針 對 的 是 MS 的 Web Service 或 是 使 用 SOAP(Simple Object Access Protocol) 標 準 建 立

More information

Oxford iSolution下載及安裝指南

Oxford iSolution下載及安裝指南 Oxford isolution 下載及安裝指南 Download and Installation Guide 系統要求 System Requirements... 2 Oxford isolution 安裝步驟 Windows 個人電腦 Oxford isolution Installation Steps For Windows PCs... 3 Oxford isolution 安裝步驟

More information

Chapter 10

Chapter 10 Chapter 10 多媒體程式開發 Widget Widget 簡介 android.widget 套件包含了許多視覺性的 UI 元素, 可用來將操作界面展示在應用程式畫面上 要熟悉 Android 多媒體程式的開發, 必須從 widget 套件著手, 因此本章所舉的範例, 便是以 android.widget 套件的應用為中心 Gallery 簡介 Gallery 是一個水平的清單, 移動清單時,

More information

CHAPTER VC#

CHAPTER VC# 1. 2. 3. 4. CHAPTER 2-1 2-2 2-3 2-4 VC# 2-5 2-6 2-7 2-8 Visual C# 2008 2-1 Visual C# 0~100 (-32768~+32767) 2 4 VC# (Overflow) 2-1 2-2 2-1 2-1.1 2-1 1 10 10!(1 10) 2-3 Visual C# 2008 10! 32767 short( )

More information

麻 省 理 工 學 院 是 在 西 元 2013 年 12 月 3 日 推 出 MIT App Inventor 2 網 站, 提 供 免 費 的 雲 端 服 務, 使 用 者 可 以 透 過 瀏 覽 器 來 開 發 Android 裝 置 應 用 程 式, 該 網 站 的 網 址 為 : http

麻 省 理 工 學 院 是 在 西 元 2013 年 12 月 3 日 推 出 MIT App Inventor 2 網 站, 提 供 免 費 的 雲 端 服 務, 使 用 者 可 以 透 過 瀏 覽 器 來 開 發 Android 裝 置 應 用 程 式, 該 網 站 的 網 址 為 : http 資 訊 學 科 中 心 6 月 份 電 子 報 用 MIT App Inventor2 程 式 拼 圖 來 開 發 Android 裝 置 應 用 程 式 李 啟 龍 學 習 Android 裝 置 程 式 設 計, 可 以 不 必 學 習 較 為 艱 澀 的 Java 語 法, 只 要 使 用 拼 圖 模 式 來 組 合 程 式, 就 可 以 完 成 Android 裝 置 的 應 用 程 式 MIT

More information

GoFlex Home UG Book.book

GoFlex Home UG Book.book FreeAgent GoFlex Home 用 户 指 南 FreeAgent GoFlex Home 用 户 指 南 2011 Seagate Technology LLC. 保 留 所 有 权 利 Seagate Seagate Technology Wave 徽 标 及 FreeAgent 是 Seagate Technology LLC 或 其 某 个 子 公 司 的 商 标 或 注 册 商

More information

untitled

untitled How to using M-Power Report API M-Power Report API 力 了 M-Power Report -- Java (Library) M-Power Report API 行 Java M-Power Report M-Power Report API ( 30 ) PDF/HTML/CSV/XLS JPEG/PNG/SVG 料 料 OutputStream

More information

untitled

untitled 1 Outline 數 料 數 數 列 亂數 練 數 數 數 來 數 數 來 數 料 利 料 來 數 A-Z a-z _ () 不 數 0-9 數 不 數 SCHOOL School school 數 讀 school_name schoolname 易 不 C# my name 7_eleven B&Q new C# (1) public protected private params override

More information

Chapter 2

Chapter 2 2 (Setup) ETAP PowerStation ETAP ETAP PowerStation PowerStation PowerPlot ODBC SQL Server Oracle SQL Server Oracle Windows SQL Server Oracle PowerStation PowerStation PowerStation PowerStation ETAP PowerStation

More information

ebook140-9

ebook140-9 9 VPN VPN Novell BorderManager Windows NT PPTP V P N L A V P N V N P I n t e r n e t V P N 9.1 V P N Windows 98 Windows PPTP VPN Novell BorderManager T M I P s e c Wi n d o w s I n t e r n e t I S P I

More information

投影片 1

投影片 1 軟體說明書繁體中文 RGB A 目錄 - CONTENTS 01 09 15 17 22 軟體主介面 巨集設定說明 主介面概觀 個人設定檔 (Profiles) 一般模式 / 遊戲模式 按鍵功能分配 巨集管理器概觀 巨集管理器 巨集錄製設定 巨集錄製時間列表 插入指令 閃移系統 - I.S.S (Instant Shift System) 燈光設定更新韌體 閃移系統啟動鈕設定說明 燈光設定介面 介面區域一

More information

PowerPoint 簡報

PowerPoint 簡報 Paint 繪圖板 JAVA 程式設計 指導老師 : 鄞宗賢 組員 : 4A3G0901 劉彥佐 4A3G0907 韓偉志 畫面預覽 匯入參數 package paint; import java.awt.*; import java.awt.event.*; import javax.swing.*; 主程式 public class paint{ public static void main(string[]

More information

使用手冊

使用手冊 使用手冊 版權所有 2013 年 Microtek International, Inc. 保留所有權利 商標 Microtek MII MiiNDT ScanWizard Microtek International, Inc. Windows Microsoft Corporation 重要須知 Microtek Microtek Windows Microsoft Windows I49-004528

More information

AL-MX200 Series

AL-MX200 Series PostScript Level3 Compatible NPD4760-00 TC Seiko Epson Corporation Seiko Epson Corporation ( ) Seiko Epson Corporation Seiko Epson Corporation Epson Seiko Epson Corporation Apple Bonjour ColorSync Macintosh

More information

untitled

untitled 1 Outline 料 類 說 Tang, Shih-Hsuan 2006/07/26 ~ 2006/09/02 六 PM 7:00 ~ 9:30 聯 ives.net@gmail.com www.csie.ntu.edu.tw/~r93057/aspnet134 度 C# 力 度 C# Web SQL 料 DataGrid DataList 參 ASP.NET 1.0 C# 例 ASP.NET 立

More information

詞 彙 表 編 號 詞 彙 描 述 1 預 約 人 資 料 中 文 姓 名 英 文 姓 名 身 份 證 字 號 預 約 人 電 話 性 別 2 付 款 資 料 信 用 卡 別 信 用 卡 號 信 用 卡 有 效 日 期 3 住 房 條 件 入 住 日 期 退 房 日 期 人 數 房 間 數 量 入

詞 彙 表 編 號 詞 彙 描 述 1 預 約 人 資 料 中 文 姓 名 英 文 姓 名 身 份 證 字 號 預 約 人 電 話 性 別 2 付 款 資 料 信 用 卡 別 信 用 卡 號 信 用 卡 有 效 日 期 3 住 房 條 件 入 住 日 期 退 房 日 期 人 數 房 間 數 量 入 100 年 特 種 考 試 地 方 政 府 公 務 人 員 考 試 試 題 等 別 : 三 等 考 試 類 科 : 資 訊 處 理 科 目 : 系 統 分 析 與 設 計 一 請 參 考 下 列 旅 館 管 理 系 統 的 使 用 案 例 圖 (Use Case Diagram) 撰 寫 預 約 房 間 的 使 用 案 例 規 格 書 (Use Case Specification), 繪 出 入

More information