Android學習路線(二十五)全面理解Android Navigation邏輯

來源:互聯網
上載者:User

標籤:android navigation   back鍵   actionbar up   

轉載請註明出處:Android學習路線(二十五)全面理解Android Navigation邏輯

應用導航的一致性是整體使用者體驗的重要組成部分,如果app的導航方式不一樣,使用者不能很快理解,那麼這個應用會讓使用者有很大的挫敗感,大大地影響了使用者體驗。

Android 3.0後,系統像大家介紹了其在全域導航表現上的重大改變。全面地理解“Back”以及“Up”的導航效果以及意義,能夠大大地減少使用者的學習時間,使用者在使用過程中很快能夠學習如何在應用的各個介面間的切換。

Android 2.3以及它之前的系統都是通過“Back”按鈕來為app導航的。在Android 3.0後出現的Actionbar則帶來了另一種一致性的導航方式:“Up”,它位於Actionbar的最左邊,通常由應用的Icon以及Title組成。

分別展示了“Back”和“Up”的樣本:


Up vs. BackUp的導航邏輯是根據介面的階層決定的。例如A介面有一個列表,點擊列表的Item進入B介面,這個時候,在B介面應該要提供一個Up按鈕,點擊Up則應該返回到A介面。

如果一個介面是app的主介面,則這個介面是不需要提供Up按鈕的,而Back按鈕在所有的介面都會起作用。

在應用中,Back的作用是返回到上一個介面中。如果把一個一個開啟介面看成是入棧,那麼點擊Back按鈕無疑代表著出棧,使用者應該總是能夠通過back操作找到上一個介面。

如果當前介面的上一個介面正好也是當前介面的父級介面,那麼Back和Up的效果是同樣的。但是,Up主要是在app內部使用,而Back則能夠讓使用者回到手機的主介面,甚至能夠回到其他的app中。

舉個簡單的例子:



在手機的主介面點擊Gmail應用,進入到Gmail主介面中,主介面包含郵件的會話列表,點擊其中一個會話會進入會話的詳情介面。在會話詳情頁上,上一個介面和該介面的上級介面都是會話列表介面,因此點擊Back和Up的效果是相同的,都會回到會話列表介面。可以發現,會話列表式Gmail的主介面,所以這個介面上是沒有Up按鈕的,這個時候則可以通過點擊Back回到手機的主介面上。

Back除了能夠處理這些介面間的切換,同時它還能處理一些統一介面上的導航邏輯,例如:

點擊Back能夠讓當前介面的對話方塊消失,還能解除當前介面的文字高亮,同時它還能隱藏輸入鍵盤等。

單個應用內部導航

當一個介面有很多入口時,在這個介面點擊Up按鈕應該回到進入到這個介面的相關介面,這樣的效果和Back回到上一個介面的效果是相同的。例如設定介面,應用中可能有很多地方能夠進入設定介面,此時點擊Up和Back都會返回它的上一個介面。

如果在一個介面內切換視圖,例如一個介面包含ViewPager,雖然左右滑動導致介面上的視圖更改,但是此介面在app的介面層級並沒有改變,同時也沒有建立新的導航曆史,因此這樣的操作時不會引起Up和Back有新 的行為的。

例如:


在會話列表介面點擊了其中一條會話,進入詳情,在詳情頁左右滑動查看前後會話詳情內容;但是此操作並沒有切換介面(在app介面中的層級),因此這樣並不能影響Back和Up的效果。

然而,如果在詳情頁點擊了某個按鈕進入了另一個詳情介面,並且此時建立了導航曆史。這樣的話,點擊Back會回到該詳情頁的上一個介面,而點擊Up則會回到該介面在app中層級的上一級介面。

例如:


我們還可以讓導航更加智能,比如我們在某個種類的列表介面點擊Item進入詳情頁跳轉到另一種類型的詳情頁,這時點擊Back介面會轉到上一個詳情頁,而點擊Up則會返回到這種類型的列表頁;如所示:


上過上面的講解,我們可以大致瞭解Back和Up的不同作用與目的。使用者進入到App,切換不同的介面,每個介面都會被加入到一個棧裡,通常情況下Back的作用是返回到棧中的上一個介面;而Up與這個棧沒有直接關係,除了應用主介面,其他介面都會有一個父級介面,Up的作用正是返回到當前介面的父級介面。


然而,有些情況為了讓Back的效果有更好的可預測性,我們應到手動向Back的介面棧中添加介面,這樣使用者就能更清楚是如何進入到當前介面的。例如,當點擊Android案頭上的Widgets進入到一個非app主介面中,如果沒有向介面棧中手動插入app的主介面,點擊返回就直接退到了手機Home介面,這樣的體驗不太好;因此我們會做手動向棧中插入介面的操作。詳情如所示:


跨應用導航

在同一個App中Back和Up各司其職,有相同的地方也有不同的地方;而在誇應用的情況下,Back和Up有更多的不同之處。

要知道Back和Up跨App的導航效果,首先要知道下面三個概念:

Activities:我們都知道,一個Activity是一個展示資訊介面與使用者互動的應用組件,而一個app可以看成包含多個activities的集合;而這些activities可以是app自身定義的也可以是對其他app中activity的重用;

Task:Task表示使用者一次完整操作的流程。例如使用者開啟某個應用,在應用的某個介面中點擊分享內容,選擇通過郵件方式分享;這樣的一個過程稱為task,可以看到這個過程是跨app的,這次task包含多個activities;

Intent:Intent表示介面跳轉的意圖,可以指定介面跳轉,也可以根據介面支援的action跳轉。例如系統中“Share”這個Intent,它會列出系統中所有支援分享的app;

瞭解了上面的概念後我們來看看這個例子:


使用者在某個介面點擊分享,跳轉到Gmail中分享內容,這個過程是一個task,此時如果點擊Back,則會返回到之前的app中;而如果點擊Up,則會留在Gmail中,並且跳轉到Gmail的主介面(當前介面的父級介面),這個過程是一個新的task。這個新的task會把老的task給覆蓋掉,點擊Back則返回系統Home介面。


縱觀全文,我們瞭解到了系統推薦的導航準則。我們可以按照規範來,但是在我們的app中,我們也可以具體情況具體分析,總之一個原則就是讓使用者更快地學習使用app,讓介面的導航有更好的可預測性。

本文大致解釋了新版Android系統推薦的導航機制,想瞭解更加細緻的內容請參考:Navigation with Back and Up 。本人也會在後續的文章中介紹ActionBar如何?Up導航。



Android學習路線(二十五)全面理解Android Navigation邏輯

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.