從 Android SDK 3.0 開始增加了 2 個新的類別: Fragment 與 Action Bar 。 Fragment 提供不同佈局畫面的另一種用法,但 設計更有彈性,更能針對螢幕大小變化,採用 最合適的設計,例如對較大螢幕的平板裝置, 它可以在一個活動的畫面同時顯示 2 個 Fragment.

Slides:



Advertisements
Similar presentations
高一七班 研究性学习小组 当我们正为寻找什么课 题而烦恼时,忽见一 精光从我面前闪过。 艾玛,原来是我同桌 眼镜反射,自此 “ 眼镜 ” 这课题被我付诸行动。 我们为此进行了研究 讨论学习 下图为组员在查阅资料.
Advertisements

昆明机场. 目录  机场历史 机场历史  建设状况 建设状况  运行状况 运行状况  航线 航线.
Android ADT + Android SDK Eclipse Eclipse 編輯器 JAVA JAVA 開發工具.
第十四章 人口(二) 高中地理(一). 第一節 人口成長 第二節 人口組成 第三節 人口問題 第十四章 人口(二)
中國歷史 社會主義文化大革命 我們的報告是關於中國著名的革命 —— 文化大革命。你可會立即想到它何時發 生、怎麼會發生等等。我們將會介紹文 化大革命,希望你細心欣賞。
中國大陸教育 督導制度探究 凌林煌教授/博士 講授 國立中山大學共同科歷史學程
Android开发入门 -----第一个Android程序 主讲:李晓蕾
第2章  Android应用的界面编程.
課程地圖 (104年入學-日間部) 校通識核心 專業課程 必修與選修 與管理模組 網路技術 App設計與應用模組 學院通識核心 學院專業核心
让我们走进秋天.
我国政府受人民的监督 权力的行使:需要监督.
第13章 繪圖與多媒體 13-1 顯示圖檔-行動相簿 13-2 音樂播放-音樂播放器 13-3 影片播放-視訊播放器
第一章 Android简介与环境搭建 QQ号: QQ群: (Android编程入门) 网络资源:
99年成語200題庫(21-40).
實驗五:多媒體播放器選單介面.
广东省教育厅教研室 黄志红 ,     研究改进行动     反思促使成长 广东省教育厅教研室  黄志红 ,
位置與地圖應用 此投影片為講解Android如何取得定位經緯度和使用Google Map地圖.
ArrayAdapter & Spinner
使用Android Studio 開發Android App 靜宜大學資管系 楊子青
建立Android新專案 建國科技大學 資管系 饒瑞佶 2010/10.
厦门大学数据库实验室 报告人:谢荣东 导师:林子雨 2014年8月30日
實驗四:單位轉換程式.
第2章 建立Android應用程式 2-1 Java語言、XML文件與Android 2-2 建立第一個Android應用程式
CH3 Eclipse.
Chapter 13 Android 實戰演練.
行動研究就是一種行動性的研究,由行動者來進行研究,而不是由外於行動領域的學者與與科學家來進行,研究的問題也取自行動。
實驗十三:顯示目前經緯度位置.
其他視窗.
Ch06 再談選單元件 物件導向系統實務.
使用Android控制Arduino 史先强
第一个Android程序 本讲大纲: 1、创建Android应用程序 2、Android项目结构说明 3、运行Android应用程序
Chapter 6 Advanced UI Design.
Ch5 Android應用程式的主要組成.
Chapter 7 Android應用元件 Android應用元件可以幫助我們獲得系統資源訊息(ActivityManager)、提供系統服務(Service)、搜尋系統服務(SearchManager)、監聽Intent訊息(Broadcast Receiver)以及資料共享(ContentProvider和ContentResolver)。
Android介面設計 Android智慧型手機程式設計 建國科技大學 資管系 饒瑞佶 2012/4 V1 2012/8 V2
CH10 對話框與分頁.
Chapter 6 進階UI設計.
第4章 Android生命周期.
ContentProvider與資料共享
第9章 使用意圖啟動活動與內建應用程式 9-1 意圖的基礎 9-2 使用意圖啟動活動
ANDROID PROGRAMMING2.
CH7 佈局、按鈕與文字編輯元件.
Android + Service 建國科技大學 資管系 饒瑞佶.
專題報告 組員:吳家齊,江弘喻.
實驗十四:顯示與控制地圖.
第13章 学院介绍 --选项卡切换效果 授课老师:高成珍 QQ号: QQ群: 、
第2讲 移动应用开发基础知识(二) 宋婕
建立Android新專案 Android智慧型手機程式設計 程式設計與應用班 建國科技大學 資管系 饒瑞佶 2012/4 V1
第6章 建立Android使用介面 6-1 介面元件的基礎 6-2 Android的事件處理 6-3 按鈕元件 6-4 文字元件
實驗十一:待辦事項程式 (儲存在手機上).
主编:钟元生 赵圣鲁.
Android 开发入门.
Android Studio介面設計 建國科技大學資管系 饒瑞佶 2016/3 V1.
Chapter 5 Basic UI Design.
主编:钟元生 赵圣鲁.
實驗九:延續實驗八, 製作一個完整音樂播放器
Location Based Services - LBS
進階UI元件:Spinner與接合器 靜宜大學資管系 楊子青
107年7月新修訂轉診支付標準 及電子轉診平台簡介
Android視窗介面 建國科技大學 資管系 饒瑞佶 2010/10.
95年度高屏醫療網 以病人為中心之醫療照護— 以弱勢族群為重點 期末報告
聚合型第一種:隱沒帶、島弧 例子:臺灣東方的琉球海溝、南美洲智利海溝. 聚合型第一種:隱沒帶、島弧 例子:臺灣東方的琉球海溝、南美洲智利海溝.
實驗十六:匯出APK安裝檔與軟體上架.
RecyclerView and CardView
Android藍芽聊天室 SDK內的範例程式
用Intent啟動程式中的其他Activity、運用WebView顯示網頁 靜宜大學資管系 楊子青
第6章 Android客户端模块实现 QQ群(App开发案例教程--清华) :
控制UI界面 本讲大纲: 1、使用XML布局文件控制UI界面 2、在代码中控制UI界面 3、使用XML和Java代码混合控制UI界面
進階UI元件:Spinner與接合器 靜宜大學資管系 楊子青
Presentation transcript:

從 Android SDK 3.0 開始增加了 2 個新的類別: Fragment 與 Action Bar 。 Fragment 提供不同佈局畫面的另一種用法,但 設計更有彈性,更能針對螢幕大小變化,採用 最合適的設計,例如對較大螢幕的平板裝置, 它可以在一個活動的畫面同時顯示 2 個 Fragment ,讓使用者操作起來更加方便。 Action Bar 的作用則有些類似視窗程式中工具列 的用途,可以將應用程式常用的功能項目以 Action Item 形式加入 Action Bar ,讓使用者更容 易找到他們所要執行的功能。

Fragment 類別可以看成是介於視圖與活動之 間的模組,它像視圖一樣可以加到視圖階 層中的 ViewGroup 中,它又像 Activity 般有自 己的生命循環及事件處理機制,但是它的 生命循環會受到擁有它的活動的生命循環 影響。 一個活動可以合併多個 Fragment 到它的佈局 中,也可以動態的用程式碼新增或移除 Fragment ;同一個 Fragment 也可以提供給不 同的活動使用。

+ 因為 Fragment 有自己的佈局、行為與生命循 環,因此應該設計成可以使用的模組,且 Fragment 之間應該互相獨立,這樣的設計對 不同尺寸螢幕會更適合,因為 Fragment 之間 互相獨立,所以可以任意調配活動佈局架 構中的 Fragment 。 + Fragment 提供以下延伸類別: – ListFragment  此類 Fragment 預設包含一個受適應器 (Adapter) 管理 的 ListView 視圖元件,並提供類似 onListItemClick() 的 事件處理機制操作顯示的清單。 onListItemClick()

– DialogFragment  此類 Fragment 在其所屬的活動上顯示一個對話框, 它比直接使用對話框視圖元件方便的地方是,對已 經關閉的 DialogFragment ,可以透過返回堆疊 (Back Stack) 與 Back 鈕,讓它再度出現。 – PreferenceFragment  此類 Fragment 以清單方式顯示階層式喜好物件,非 常適合用於需要提供使用者設定的應用程式。

Fragment 一定要附屬在活動上,它的生命循環 直接受此活動影響,也就是說當一活動停止, 它的所有 Fragment 一定停止。 當活動處於活躍狀態,你可以單獨對它的 Fragment 作任何操作 ( 使它活躍、暫停或移除 等 ) 。 Fragment 在它的整個生命循環中也會執行一些 不同的方法,說明如下: – onAttach() :當 Fragment 加入到一活動時呼叫此方 法。

– onCreate() :當 Fragment 建立時呼叫此方法。 – onCreateView() :呼叫此方法回傳 Fragment 的使 用者介面。 – onActivityCreated() :在 Fragement 所屬活動建立 後呼叫此方法。 – onStart() :當 Fragment 的視圖成為可見時呼叫此 方法。 – onResume() :呼叫此方法後 Fragment 進入活躍 狀態,能與使用者直接互動;這方法在 Fragment 整個生命循環中,一般會呼叫許多次 ( 例如從暫停或停止狀態回到活躍狀態時都會呼 叫 ) 。

– onPause() :當 Fragment 進入暫停狀態,不再能 與使用者互動時呼叫此方法。 – onStop() :當 Fragment 進入停止狀態時呼叫此方 法,執行後此 Fragment 成為不可見。 – onDestroyView() :當 Fragment 的視圖被破壞時 呼叫此方法。 – onDestroy() :當 Fragment 被終止時呼叫此方法。 – onDetach() :當 Fragment 從其所屬活動中移除時 呼叫此方法。

+ Fragment 在其整個生命循環中只能停留在以 下狀態: – 活躍狀態:在執行的活動中是目前顯示的介面。 – 暫停狀態:另一個活動在前景執行,但執行的 活動並未完全遮蔽此 Fragment 所屬活動。 – 停止狀態:此 Fragment 已不可見,有可能是所 屬活動進入停止狀態,或此 Fragment 從所屬活 動中移除但加入到返回堆疊中。

要建立一個 Fragment ,應採取以下步驟: – 建立一個延伸自 Fragment 的子類別,在這子類別 的定義中建議最好實作以下 3 個生命循環的方法: onCreate() :一般利用這個方法對一些重要元件進行初始 化動作,尤其是那些在進入暫停或停止狀態時需要保留 的資訊。 onCreateView() :當 Fragment 第一次建立它使用者介面時 呼叫此方法;要建立 Fragment 的使用者介面,必須從此 方法回傳 Fragment 佈局的根視圖 ( 即最上層視圖 ) ,如果沒 有使用者介面,則回傳 null 。 onPause() :一般在這個方法中儲存 Fragment 目前的狀態 與資料,以便將來此 Fragment 再回到活躍時能繼續之前 的處理。

– 增加使用者介面 要提供 Fragment 佈局,必須實作 onCreatView() 方法,在 這方法中利用 LayoutInflater 物件的 inflate() 方法,從專案 資源資料夾 (/res/layout/) 取得佈局 XML 定義檔。 inflate() 方法需要 3 個參數,第 1 個指定 Fragment 要使用的 佈局 XML 定義檔,第 2 個是此 Fragment 所屬活動佈局的 ViewGroup ,第 3 個為布林值, false 表示將 Fragment 佈局 根視圖加至第 2 個參數的 ViewGroup 中。 如果建立的是繼承自 ListFragment 的 Fragment ,預設的 onCreateView() 方法已經回傳 ListView 視圖,因此不必再實 作此方法。 – 將 Fragment 加至活動佈局,有 2 個方法可以將 Fragment 加到活動佈局中,一是在活動佈局定義檔 中用 標籤設定 Fragment ,這種方式能像 加入其他視圖元件般設定 Fragment 的屬性,另一種 方法是透過 Java 程式,將 Fragment 加到現存的 ViewGroup 中。

+ Frag1 Test 範例詳細內容請參考原書。

Android SDK 為了讓程式具有管理 Fragment 的能 力,另外設計了 2 個類別:「 FragmentManager 」 與「 FragmentTransaction 」。 Android 系統將 Fragment 的改變視為是一種交易, 這交易以 FragmentTransaction 物件負責;但要 交易必須由 FragmentManager 物件以 「 beginTransaction() 」方法開啟,且設定好交 易內容之後,必須由 FragmentTransaction 物件 的「 commit() 」方法確認交易成立。

+ FragmentTransaction 提供的交易內容 ( 即執行 的方法 ) 主要有 3 個,分述如下: – add() :將 Fragment 加入指定的視圖容器;此方 法需要 2 個參數,第 1 個是此容器的識別碼 (id) , 第 2 個是要加入的 Fragment 。 – replace() :以指定的 Fragment 取代目前的 Fragment ;此方法同樣也需要容器識別碼 (id) 與 要加入的 Fragment 。 – emove() :將指定的 Fragment 從佈局中移除,這 方法需提供要移除 Fragment 的標籤。

DynamicFragment Test 範例 – 活動佈局原只有 2 個按鈕:「 Show Fragment 」 與「 Change Fragment 」。 – 當使用者敲「 Show Fragment 」鈕,會將 「 FragmentClass1 」加入活動佈局,此 Fragment 以 TextView 元件顯示「 I am Fragment No.1 」訊 息。 – 當使用者敲「 Change Fragment 」鈕,則以 「 FragmentClass2 」取代活動佈局中的 「 FragmentClass1 」,此 Fragment 則以 TextView 元件顯示「 I am Fragment No.2 」訊息。 – 範例詳細內容請參考原書。

+ 在一個活動中包含多個 Fragment 設計方式與 單 Fragment 設計差別並不大,主要是記得在 Fragment 的程式碼中,要取得自己 Fragment 內的視圖元件時需要使用 「 getView().findViewById(int) 」方法,而要 取得其他 Fragment 內的視圖元件時則必須使 用「 getActivity().findViewById(int) 」方法。

DualFragment Test 範例 – 設計一個含有 2 個 Fragment 的活動,第一個 Fragment 繼承自 ListFragment 類別,用以顯示員 工姓名清單。 – 為了能與清單內容產生互動,因此實作了 OnItemClickListener 與 onItemClick() 事件處理方 法。 – 在 onItemClick() 事件處理中,取得被敲項目的索 引值,然後用此索引值取得此員工對應的資料, 並用 – \ 範例詳細內容請參考原書。 – 另一個 Fragment 顯示。

Action Bar( 行動列 ) 是位於裝置螢幕頂端的介 面元件,是 Android SDK 3.0(Honeycomb , API 11) 才釋出的元件,它最左端顯示目前在 前景執行的應用程式圖示或標誌,最右端 為「溢流選單」。 Action Bar 主要的目的如下: – 提供專用空間顯示應用程式圖示或標誌,讓使 用者很容易瞭解它目前操作的對象。 – 提供不同應用程式相同的操作與導覽介面。

– 使活動的一些關鍵動作更加顯著,並提供符合 使用者預期的操作方式。 + 控制與設定 Action Bar – Action Bar 是否出現在活動畫面上可以經由 AndroidManifest.xml 檔案或在活動程式碼中設 定,但二者不一樣。 – 在 AndroidManifest.xml 檔案中,可以在 標籤內用 「 oActionBar" 」抑制 Action Bar 出現,但設定之後 就無法再讓 Action Bar 出現。

– 在活動程式碼中也可以建立 ActionBar 實體物件,並 透過此物件的方法設定 Action Bar 的屬性。在活動 程式碼中的 onCreate(Bundle) 方法增加以下程式碼, 則 Action Bar 會隱藏起來。 ActionBar actionBar=getActionBar(); actionBar.hide(); – 也會經常進行以下的設定: 在 Action Bar 上恢復顯示應用程式圖示 actionBar.setDisplayUseLogoEnabled(false); 取消 Action Bar 顯示應用程式標題 actionBar.setDisplayShowTitleEnabled(false); 設定 Action Bar 背景圖形或顏色 actionBar.setBackgroundDrawable( new ColorDrawable(0x555500));

在 Action Bar 上增加 Action Item – 在 Action Bar 上一般會有 Action Item( 行動項目 ) 、 Action View( 行動視圖 ) 等,甚至可以設計有分頁標 籤。 – Action Item 是來自活動選項選單 ( 以裝置的「 Menu 」 鍵開啟 ) 中的選項,要將選項移成 Action Bar 上的 Action Item( 移動後選項選單中將無此選項 ) ,可以 直接在選項選單 XML 定義檔中 ( 位於「 /res/menu/ 」 目錄 ) ,選項標籤 內設定 「 android:showAsAction=”ifRoom|withText 」。 – 其中第 1 個值「 ifRoom 」是表示如果 Action Bar 還有 空間,則將此選項移到 Action Bar ,如果空間不足 就不要移動。

– 也可以利用活動的程式碼將選項從選單移到 Action Bar 。在活動類別定義中,是在 「 onCreateOptionsMenu(Menu) 」方法中,透過 MenuInflater 物件的 inflate() 方法,從指定選單的 XML 定義檔實作選項選單;因此如果有需要, 也應該在這個方法內用選項物件「 MenuItem 」 的「 setShowAsAction() 」方法,建議是否能將 此選項移到 Action Bar 。 menuItem.setShowAsAction (MenuItem.SHOW_AS_ACTION_IF_ROOM| MenuItem.SHOW_AS_ACTION_WITH_TEXT);

– ActionItem Test 範例  在選單 XML 定義檔中增加了一些選項,並於定義檔 中將一個選項移到 Action Bar 。  另於活動類別定義檔的 onCreateOptionsMenu(Menu) 方法中,再將 2 個選項移到 Action Bar 。  範例詳細內容請參考原書。 – 對移到 Action Bar 的 Action Item ,它在使用者點 選之後,同樣還是會呼叫 「 onOptionsItemSelected(Menu) 」方法。 + 在 Action Bar 上增加 Action View – 要為 Action Bar 增加 Action View ,請依以下步驟 進行:

 建立一個佈局檔含有需要的視圖元件,此檔應位於 「 /res/layout/ 」目錄。  將此佈局加入選項選單 (main.xml) 成為一個選項;除 了在 標籤內要設定 「 佈局檔名 " 」以外, 與其它選項的設定相同。  設定屬性 「 android:showAsAction=”ifRoom|withText 」,就能 將它移到 Action Bar 。

+ 在 Action Bar 上設計分頁功能主要是透過 Fragment ,每一頁都是一個獨立的 Fragment , 這些 Fragment 可以加入活動佈局中的視圖容 器,或直接加到活動程式內。 + 要讓 Action Bar 具有分頁功能,首先需將 Action Bar 設為分頁導覽模式,設定方式如 下: actionBar.setNavigationMode (ActionBar.NAVIGATION_MODE_TABS);

+ 接著再用 Action Bar 的「 newTab() 」方法建 立新頁,並將此頁用 Action Bar 的 「 addTab(Tab) 」方法加到 Action Bar 中。 + 因為每一頁是一個獨立的 Fragment ,因此換 頁就是進行 Fragment 的交易 (FragmentTransaction) ,為了處理 Fragment 交易,我們需要自己實體化 「 ActionBar.TabListener 」介面,這介面擁有 頁面被選取與取消選擇的抽象方法,透過 實作這些方法,就能處理頁面更換的事宜。

建立 Action Bar 分頁功能步驟如下: – 建立各頁需要的 Fragment 類別與佈局。 – 實作「 ActionBar.TabListener 」介面及其所含的抽象 方法,包括建構函式、 onTabSelected(Tab, FragmentTransaction) 、 onTabUnselected(Tab, FragmentTransaction) 、 onTabReselected(Tab, FragmentTransaction) 等方法,這個偵聽器類別主要 處理 Fragment 的交易,但要注意在此類別中不能執 行交易的「 commit() 」方法,因為系統會自動執行。 – 在活動類別定義檔內,用 ActionBar 建立新的頁面, 設定此頁面標籤與設定換頁偵聽器。 ActionBarTab Test 範例詳細內容請參考原書。