天天看點

《Android UI基礎教程》——1.3節 Android UI基礎

本節書摘來自異步社群《android ui基礎教程》一書中的第1章,第1.3節 android ui基礎,作者 【美】jason ostrander,更多章節内容可以通路雲栖社群“異步社群”公衆号檢視

1.3 android ui基礎

android ui基礎教程

使用者界面(ui)是應用程式和使用者之間聯系的橋梁。事實上,對于使用者來說,ui就是應用程式。android 的ui架構足夠強大,能夠建立複雜的帶有圖形和動畫的 ui,同時它也足夠靈活,能夠從小螢幕的手持裝置擴充到平闆電腦以及電視。本節介紹android ui開發的基礎知識,通過本節的學習,你就可以開始為自己的應用程式建立出色的ui了。

1.3.1 主螢幕和通知欄

要建立android應用程式,首先你應該了解基本的android os 本身的使用者界面。一個android使用者遇到的第一個螢幕是主螢幕(圖1.8)。主螢幕由包含應用啟動圖示以及小部件的滑動頁面組成。你可以點選啟動圖示來啟動對應的應用程式。小部件就像迷你的、包含小塊資料的應用程式,例如天氣或者未讀郵件數目。在螢幕的底部是打開電話撥号器或者郵件用戶端的快速啟動圖示。這同樣也包含應用程式抽屜的啟動項。應用程式抽屜中用網格狀的形式包含使用者安裝的所有應用程式。

《Android UI基礎教程》——1.3節 Android UI基礎

android ui的一個關鍵組成部分是通知托盤(圖1.9)。你可以通過觸摸螢幕頂部的狀态欄并向下滑動來通路通知托盤。android在通知托盤中以清單的形式展示所有的通知:新郵件通知、目前播放的音樂、系統狀态資訊以及任何長時間運作的比如下載下傳之類的任務。點選清單中的通知就會打開生成該通知的應用程式。

《Android UI基礎教程》——1.3節 Android UI基礎

注意: 你需要知道使用者可能會用另一個主螢幕替換android的主螢幕。一般來說,這些替代品都會如android主螢幕一樣遵循相同的ui規範。但是,有少數替代品的主螢幕使用完全不同的ui規範,是以在應用程式中不依賴于任何特定的主螢幕功能是個好的主意。

1.3.2 xml 布局

android使用xml布局檔案與java代碼來共同定義使用者界面。你可以使用java來指定所有的布局,但是通常來說更好的方法是使用xml來更好地利用android的自動資源選擇特性。這可以讓你為不同配置的硬體聲明布局,android系統将會自動選擇最合适的布局。

下面是hello world應用程式的main.xml檔案的代碼:

第一行是基本的xml樣闆,列出了版本和編碼形式。這一行始終如一并且一定要包括在每一個布局檔案的開頭。下一行定義了android的基本容器類型之一—linearlayout。這種視圖線性地排列其子視圖。在下一章中你将會更多地了解linearlayout。

注意: xmlns:android屬性是必要的并且必須在xml的頂層聲明。這個屬性一直都要有,否則你的資源将不會被建構。

linearlayout是以線性形式展示多個子視圖的簡單容器。例如,一系列的項目可能在linearlayout中以清單形式展現。android:orientation屬性聲明了子視圖排列的方向。在本例中,布局采用了按垂直方向排列,并且所有的子視圖也将按照垂直排列。最後,聲明了布局的width和hight屬性,這是為了能夠填滿整個父視圖(之後會有更多關于這個的講解)。

在linearlayout裡面隻有一個textview(文本框)。顧名思義,這個視圖是被用來向使用者展示文本内容的。textview的text屬性聲明了要展示在其中的文本内容。在本例中,它引用了一個定義在strings.xml檔案中的字元串。android使用@符号來引用其他資源。你也可以在這裡聲明一個字元串,但是把所有使用者可見的字元串定義在strings.xml檔案中是更好的方式,這樣有助于之後的應用程式本地化。此外,你可以通過java代碼動态地修改文本。

布局中的每個元素都是一個視圖。展示在螢幕上的任何東西都被稱作視圖。每一個文本字段、清單項、web視圖、地圖、多彩的轉輪或者按鈕等,都可以用視圖來表示。android架構為你提供了許多視圖,例如listview(清單框)和textview(文本框),但是想要建立更多包含動畫以及特定行為的複雜的視圖,開發者們需要自己開發。

提示: 即便你打算在代碼中設定textview的文本,聲明一個預設字元串仍然不失為一個好的方法。這樣,你就能看到有全部文本時布局是什麼樣子。

1.3.3 activity類

讓我們來看看src/com/example/exampleactivity.java檔案中的hello world應用的源代碼。在manifest中,你聲明了這個活動并把它設定為應用運作時的主要活動。activity類是android應用程式的主要構造子產品,它代表該應用的一屏。你的應用程式的每一屏都包括它代表的一個活動。在某些情況下,一個活動中包括的内容可能會被交換而不改變該活動(當使用fragments時,這個之後會了解)。對于高效android開發來說,了解activity類的生命周期至關重要,因為它對于使用者體驗有最為直接的效果。

android活動在建立ui 事件時使用回調結構。該架構在活動的建立或銷毀過程中調用适當的重載方法。在示例的活動中,隻實作了一個方法:oncreate。在一個活動被第一次建立時會調用這個方法。通常,這時會對活動進行設定。這裡你可以建立視圖并建立你所需要加載資料的擴充卡。除了oncreate之外,重載任何活動的方法都不是絕對必要的。

剛才的例子中為活動設定了視圖。它是通過調用setcontentview(r.layout.main)做到這一點的。這引用了android開發者工具中為你建構的r.java檔案。在這種情況下,它告訴系統從多個布局目錄中選擇一個并加載main.xml檔案。android 執行環境選擇最合适的main.xml檔案(在這種情況下,隻有一個),并且加載它。

提示: 所有的android回調在主線程、ui線程上發生。記住不要阻止該程序,這很重要。在不同的線程上執行長時間的操作需要小心,否則ui可能會不響應操作。

《Android UI基礎教程》——1.3節 Android UI基礎

r.java檔案允許你去引用存放在檔案夾中的資源生成的id。要引用布局檔案,使用r.layout.file_name``;要引用字元串,使用r.string.string_name;諸如此類。

活動是生命周期較短的對象。它們頻繁地被建立和銷毀。每當使用者旋轉自己的手機,目前展示的活動就會被銷毀并且重新建立。此外,android系統可能會因為裝置缺乏記憶體或資源而銷毀一個活動。設計你的活動時,需要明白它們随時可能會被關掉,這一點很重要。

要注意儲存任何使用者可能會看重的狀态。如果活動被銷毀,你肯定不想讓使用者重新輸入文本而使他們失望。在下一章中你将會了解更多關于如何儲存活動狀态的知識。

1.3.4 硬體按鈕

3.0版本之前的android裝置有四個硬體按鈕:home鍵、back鍵、menu鍵和search鍵。android版本3.0及以上的硬體按鈕是可選的。在那些裝置上,android呈現在螢幕上的軟體按鈕擁有硬體按鍵的功能(圖1.10)。

點選home鍵則進入到手機的主螢幕。一般來說應用程式都用不到這個按鍵,除非該應用程式是主螢幕的替代品。

點選back按鍵意味着android活動的出棧。這允許使用者可以很容易地進入一個應用并且随後迅速地傳回之前的界面。

提示: 為了確定應用程式是一個很好的android公民,如果他們突然進入應用的話,總是要允許使用者傳回到先前的應用程式(例如,通過點選一個通知或者處理另一個應用程式建立的意圖時)。不要強迫使用者在傳回他們先前任務之前備份應用上的許多界面。

menu按鍵顯示上下文相關的選項清單(圖1.11)。使用選項菜單來展示應用中并不常用的選項。對于運作3.0或者更高版本的android平闆電腦和手機來說,這個按鍵不可用,選項放在活動欄展示。在後面的章節中你将會了解android 4.0裝置與之前android版本的差別。

《Android UI基礎教程》——1.3節 Android UI基礎

提示: 通常來說,使用者難以發現藏在menu按鍵裡的功能。仔細考慮應用程式的需求,在布局中為所有使用者常用的操作提供空間。

最後,search按鍵的存在提供了在android上運作一個搜尋的快速接口。并非所有的應用程式都使用此按鍵,在許多應用中,點選這個按鍵不起任何作用。

另外,在一些硬體按鍵上執行其他的功能也是可能的。這些動作通常是通過長按某按鈕觸發。例如,長按menu鍵就會激活軟體鍵盤。應用程式可以利用這個功能在清單中提供過濾功能。

注意: 并不是所有的android裝置都有所有的這些按鍵。特别是,android 4.0裝置省略了“搜尋”按鍵,這使得使用者在應用之内進行搜尋變得不可能。慎重仔細地評估在應用内搜尋的必要性,如果搜尋是一個必不可少的功能,那麼在ui中提供一個按鈕。

繼續閱讀