1page.title=Điều hướng bằng Quay lại và Lên trên
2page.tags="navigation","activity","task","up navigation","back navigation"
3page.image=/design/media/navigation_between_siblings_gmail.png
4@jd:body
5
6<a class="notice-developers" href="{@docRoot}training/implementing-navigation/index.html">
7  <div>
8    <h3>Tài liệu cho Nhà phát triển</h3>
9    <p>Triển khai Điều hướng Hiệu quả</p>
10  </div>
11</a>
12
13<p itemprop="description">Điều hướng nhất quán là một thành phần thiết yếu trong trải nghiệm người dùng nói chung. Một vài điều nhỏ bé lại khiến
14người dùng khó chịu hơn so với điều hướng cơ bản chính là hành xử không nhất quán và không như kỳ vọng. Android 3.0
15đã giới thiệu những thay đổi đáng kể về hành vi điều hướng toàn cục. Tuân thủ kỹ lưỡng các hướng dẫn
16về Quay lại và Lên trên sẽ giúp việc điều hướng trên ứng dụng của bạn trở nên dễ đoán và đáng tin cậy cho người dùng của bạn.</p>
17<p>Phiên bản Android 2.3 và mới hơn dựa vào nút <em>Quay lại</em> của hệ thống để hỗ trợ điều hướng trong một
18ứng dụng. Với việc giới thiệu thanh hành động trong Android 3.0, một cơ chế điều hướng thứ hai đã xuất hiện:
19nút <em>Lên trên</em>, bao gồm biểu tượng ứng dụng và dấu nháy lùi trái.</p>
20
21<img src="{@docRoot}design/media/navigation_with_back_and_up.png">
22
23<h2 id="up-vs-back">Lên trên so với Quay lại</h2>
24
25<p>Nút Lên trên được sử dụng để điều hướng bên trong một ứng dụng dựa trên mối quan hệ thứ bậc
26giữa các màn hình. Ví dụ, nếu màn hình A hiển thị một danh sách các mục và việc chọn một mục sẽ dẫn đến
27màn hình B (trình bày chi tiết hơn về mục đó), khi đó B sẽ đưa ra nút Lên trên để
28quay lại màn hình A.</p>
29<p>Nếu một màn hình đang ở trên cùng trong một ứng dụng (cụ thể là trang chủ của ứng dụng), thì nó sẽ xuất hiện nút
30Lên trên.</p>
31
32<p>Nút Quay lại của hệ thống được sử dụng để điều hướng ngược theo thứ tự thời gian, qua lịch sử các màn hình
33mà người dùng mới thao tác qua. Nó thường được dựa trên mối quan hệ thời gian
34giữa các màn hình thay vì thứ bậc của ứng dụng.</p>
35
36<p>Khi màn hình xem trước đó cũng đồng thời là màn hình mẹ theo thứ bậc của màn hình hiện tại, nhấn nút
37Quay lại sẽ có cùng kết quả như khi nhấn nút Lên trên&mdash;điều này thường hay
38xảy ra. Tuy nhiên, không như nút Lên trên đảm bảo người dùng vẫn còn trong ứng dụng của bạn,
39nút Quay lại có thể trả người dùng về màn hình Trang chủ hoặc thậm chí sang một ứng dụng khác.</p>
40
41<img src="{@docRoot}design/media/navigation_up_vs_back_gmail.png">
42
43<p>Nút Quay lại cũng hỗ trợ một vài hành vi không trực tiếp gắn với điều hướng giữa các màn hình:
44</p>
45<ul>
46<li>Bỏ qua cửa sổ nổi (hộp thoại, cửa sổ bật lên)</li>
47<li>Bỏ qua thanh hành động ngữ cảnh và bỏ tô sáng khỏi mục đã chọn</li>
48<li>Ẩn bàn phím trên màn hình (IME)</li>
49</ul>
50<h2 id="within-app">Điều hướng trong Ứng dụng của Bạn</h2>
51
52<h4>Điều hướng tới màn hình với nhiều điểm bắt đầu</h4>
53<p>Đôi khi một màn hình không chỉ có một vị trí cố định trong thứ bậc của ứng dụng và bạn có thể truy cập nó
54từ nhiều điểm bắt đầu&mdash;ví dụ như màn hình cài đặt có thể được truy cập từ bất cứ màn hình
55nào khác trong ứng dụng của bạn. Trong trường hợp này, nút Lên trên sẽ chọn quay lại màn hình đã chuyển đến, có tác dụng
56giống như Quay lại.</p>
57<h4>Thay đổi dạng xem bên trong một màn hình</h4>
58<p>Thay đổi tùy chọn dạng xem cho một màn hình không làm thay đổi hành vi Lên trên hay Quay lại: màn hình vẫn
59ở cùng một chỗ trong thứ bậc của ứng dụng và không tạo thêm lịch sử điều hướng mới nào.</p>
60<p>Ví dụ về thay đổi dạng xem gồm:</p>
61<ul>
62<li>Chuyển dạng xem bằng tab và/hoặc trượt nhanh trái phải</li>
63<li>Chuyển dạng xem bằng danh sách thả xuống (còn gọi là tab thu gọn)</li>
64<li>Lọc một danh sách</li>
65<li>Sắp xếp một danh sách</li>
66<li>Thay đổi đặc tính hiển thị (như thu phóng)</li>
67</ul>
68<h4>Điều hướng giữa các màn hình anh em</h4>
69<p>Khi ứng dụng của bạn hỗ trợ điều hướng từ một danh mục tới một dạng xem chi tiết của một trong những mục đó, thường
70nó ưu tiên hỗ trợ điều hướng theo hướng từ mục đó tới một mục khác ở phía trước hoặc
71phía sau nó trong danh sách. Ví dụ, trong Gmail, bạn có thể dễ dàng trượt nhanh sang trái hoặc phải từ một hội thoại
72để xem hội thoại mới hơn hoặc cũ hơn trong cùng Hộp thư đến. Như khi thay đổi dạng xem trong một màn hình,
73điều hướng đó không làm thay đổi hành vi Lên trên hoặc Quay lại.</p>
74
75<img src="{@docRoot}design/media/navigation_between_siblings_gmail.png">
76
77<p>Tuy nhiên, có một trường hợp ngoại lệ đáng chú ý đó là khi duyệt giữa các dạng xem chi tiết có liên quan, không
78ràng buộc với nhau bởi danh sách chuyển đến&mdash;ví dụ như khi duyệt trong Play Store giữa các ứng dụng từ
79cùng một nhà phát triển hoặc giữa các album bởi cùng một nghệ sĩ. Trong các trường hợp này, truy cập vào từng liên kết không tạo ra
80lịch sử, khiến nút Quay lại đi qua từng màn hình được xem trước đó. Thao tác Lên trên sẽ tiếp tục
81bỏ qua những màn hình liên quan này và điều hướng tới màn hình bộ chứa được xem gần đây nhất.</p>
82
83<img src="{@docRoot}design/media/navigation_between_siblings_market1.png">
84
85<p>Bạn có khả năng thiết kế để hành vi Lên trên thông minh hơn dựa trên hiểu biết của mình về dạng xem
86chi tiết. Suy rộng từ ví dụ về Play Store bên trên, tưởng tượng người dùng đã điều hướng từ
87Cuốn sách xem gần nhất tới chi tiết chuyển thể Phim. Trong trường hợp đó, thao tác Lên trên có thể trả về một bộ chứa
88(Phim) mà trước đó người dùng chưa điều hướng qua.</p>
89
90<img src="{@docRoot}design/media/navigation_between_siblings_market2.png">
91
92<h2 id="into-your-app">Điều hướng tới Ứng dụng của Bạn thông qua Widget và Thông báo trên Màn hình Trang chủ</h2>
93
94<p>Bạn có thể sử dụng widget hoặc thông báo trên màn hình Trang chủ để giúp người dùng của mình điều hướng trực tiếp tới màn hình
95nằm sâu trong thứ bậc ứng dụng của bạn. Ví dụ, widget Hộp thư đến của Gmail và thông báo thư mới có thể
96vừa bỏ qua màn hình Hộp thư đến, vừa đưa người dùng trực tiếp tới dạng xem hội thoại.</p>
97
98<p>Trong cả hai trường hợp này, hãy điều khiển nút Lên trên như sau:</p>
99
100<ul>
101<li><em>Nếu màn hình đích thường được truy cập từ một màn hình cụ thể trong ứng dụng
102của bạn</em>, thao tác Lên trên sẽ điều hướng tới màn hình đó.</li>
103<li><em>Nếu không</em>, thao tác Lên trên sẽ điều hướng tới màn hình trên cùng ("Trang chủ") của ứng dụng của bạn.</li>
104</ul>
105
106<p>Trong trường hợp nút Quay lại, bạn nên thiết kế để việc điều hướng dễ đoán hơn bằng cách chèn vào ngăn xếp
107của tác vụ toàn bộ đường dẫn điều hướng lên trên tới màn hình trên cùng của ứng dụng. Làm vậy sẽ cho phép những người dùng nào
108quên cách họ vào ứng dụng của bạn sẽ điều hướng tới màn hình trên cùng của ứng dụng trước khi
109thoát.</p>
110
111<p>Ví dụ, widget màn hình Trang chủ của Gmail có một nút để đi trực tiếp vào màn hình
112soạn email của nó. Lên hoặc Quay lại từ màn hình soạn thư sẽ đưa người dùng tới Hộp thư đến, và từ đó
113nút Quay lại tiếp tục đưa về Trang chủ.</p>
114
115<img src="{@docRoot}design/media/navigation_from_outside_back.png">
116
117<h4>Thông báo gián tiếp</h4>
118
119<p>Khi ứng dụng của bạn cần trình bày thông tin về nhiều sự kiện đồng thời, nó có thể sử dụng
120thông báo duy nhất để chuyển hướng người dùng tới một màn hình xen kẽ. Màn hình này tổng hợp những sự kiện
121này và cung cấp đường dẫn cho người dùng đi sâu vào ứng dụng. Thông báo kiểu này được gọi
122là <em>thông báo gián tiếp</em>.</p>
123
124<p>Không như thông báo tiêu chuẩn (trực tiếp), nhấn Quay lại từ màn hình xen kẽ của một thông báo gián tiếp
125sẽ trả người dùng về điểm mà từ đó thông báo đó được kích hoạt&mdash;không có
126màn hình bổ sung nào được chèn vào ngăn xếp. Sau khi người dùng tiến vào ứng dụng từ màn hình xen kẽ
127, thao tác Lên trên và Quay lại có tác dụng như với thông báo tiêu chuẩn, như được mô tả ở trên:
128điều hướng bên trong ứng dụng thay vì quay lại màn hình xen kẽ.</p>
129
130<p>Ví dụ, giả sử một người dùng trong Gmail nhận được một thông báo gián tiếp từ Lịch. Chạm
131vào thông báo này để mở ra màn hình xen kẽ, trong đó hiển thị nhắc nhở cho một vài sự kiện
132khác nhau. Chạm vào Quay lại từ màn hình xen kẽ sẽ trả người dùng về Gmail. Chạm vào một sự kiện
133cụ thể sẽ đưa người dùng ra khỏi màn hình xen kẽ và vào ứng dụng Lịch để hiển thị chi tiết về
134sự kiện. Từ chi tiết sự kiện, Lên trên và Quay lại sẽ điều hướng tới dạng xem trên cùng của Lịch.</p>
135
136<img src="{@docRoot}design/media/navigation_indirect_notification.png">
137
138<h4>Thông báo bật lên</h4>
139
140<p><em>Thông báo bật lên</em> sẽ bỏ qua ngăn thông báo thay vì xuất hiện trực tiếp phía
141trước người dùng. Chúng hiếm khi được sử dụng và <strong>nên được để dành cho những dịp khi cần
142phản ứng kịp thời và việc gián đoạn ngữ cảnh của người dùng là cần thiết</strong>. Ví dụ,
143Talk sử dụng kiểu này để cảnh báo người dùng về lời mời từ một người bạn để tham gia trò chuyện video, bởi
144lời mời này sẽ tự động hết hạn sau một vài giây.</p>
145
146<p>Xét về hành vi điều hướng, thông báo bật lên bám sát chặt chẽ hành vi của màn hình xen kẽ
147trong thông báo gián tiếp. Quay lại sẽ bỏ qua thông báo bật lên. Nếu người dùng điều hướng
148từ màn hình bật lên vào ứng dụng thông báo, hành vi Lên trên và Quay lại sẽ bám sát quy tắc áp dụng với thông báo tiêu chuẩn,
149điều hướng bên trong ứng dụng.</p>
150
151<img src="{@docRoot}design/media/navigation_popup_notification.png">
152
153<h2 id="between-apps">Điều hướng giữa các Ứng dụng</h2>
154
155<p>Một trong những thế mạnh cơ bản của hệ thống Android đó là khả năng các ứng dụng kích hoạt
156lẫn nhau, giúp người dùng có thể điều hướng trực tiếp từ ứng dụng này sang ứng dụng khác. Ví dụ, một ứng dụng
157cần chụp ảnh có thể kích hoạt ứng dụng Camera, ứng dụng này sẽ trả
158ảnh về ứng dụng chuyển đến. Điều này đặc biệt có ích đối với cả nhà phát triển, những người có thể dễ dàng tận dụng
159đoạn mã từ các ứng dụng khác, lẫn người dùng, những người thích có một trải nghiệm nhất quán đối với những hành động
160được thực hiện thường xuyên.</p>
161
162<p>Để hiểu rõ điều hướng giữa các ứng dụng, quan trọng là phải hiểu được hành vi bộ khung Android
163được đề cập dưới đây.</p>
164
165<h4>Hoạt động, tác vụ và ý định</h4>
166
167<p>Trong Android, <strong>hoạt động</strong> là một thành phần ứng dụng định nghĩa một màn hình
168thông tin và tất cả hành động liên kết mà người dùng có thể thực hiện. Ứng dụng của bạn là tập hợp
169của nhiều hoạt động, bao gồm cả hoạt động do bạn tạo và hoạt động mà bạn sử dụng lại từ các ứng dụng khác.</p>
170
171<p><strong>Tác vụ</strong> là trình tự các hoạt động mà một người dùng tuân theo để hoàn thành một mục tiêu.
172Tác vụ đơn có thể sử dụng các hoạt động từ chỉ một ứng dụng, hoặc có thể dựa trên hoạt động từ nhiều
173ứng dụng khác nhau.</p>
174
175<p><strong>Ý định</strong> là một cơ chế để một ứng dụng báo hiệu rằng nó muốn sự trợ giúp
176của một ứng dụng khác khi thực hiện một hành động. Các hoạt động của một ứng dụng có thể biểu thị những ý định
177mà chúng có thể phản hồi. Đối với những ý định thường gặp như "Chia sẻ", người dùng có thể cài đặt nhiều ứng dụng
178có khả năng thực hiện yêu cầu đó.</p>
179
180<h4>Ví dụ: điều hướng giữa các ứng dụng để hỗ trợ chia sẻ</h4>
181
182<p>Để hiểu những hoạt động, tác vụ và ý định này vận hành với nhau như thế nào, hãy xem cách một ứng dụng cho phép người dùng
183chia sẻ nội dung bằng cách dùng một ứng dụng khác. Ví dụ, khởi chạy ứng dụng Play Store từ Trang chủ sẽ bắt đầu
184Tác vụ A mới (xem hình bên dưới). Sau khi điều hướng qua Play Store và chạm vào một cuốn sách được quảng cáo
185để xem chi tiết của sách, người dùng vẫn ở trong cùng một tác vụ, mở rộng nó bằng cách thêm vào các hoạt động. Kích hoạt
186hành động Chia sẻ sẽ nhắc người dùng bằng một hộp thoại liệt kê từng hoạt động một (từ các ứng dụng khác nhau)
187mà đã đăng ký xử lý ý định Chia sẻ đó.</p>
188
189<img src="{@docRoot}design/media/navigation_between_apps_inward.png">
190
191<p>Khi người dùng chọn chia sẻ qua Gmail, hoạt động soạn email của Gmail sẽ được thêm làm hoạt động tiếp tục
192Tác vụ A&mdash;không có tác vụ mới nào được tạo thêm. Nếu Gmail có tác vụ riêng đang chạy nền, nó sẽ
193không bị ảnh hưởng.</p>
194
195<p>Từ hoạt động soạn email, gửi thư hoặc chạm vào nút Quay lại sẽ trả người dùng về
196hoạ̣t động chi tiết về cuốn sách. Những lần chạm sau đó vào Quay lại sẽ tiếp tục điều hướng quay lại qua
197Store và cuối cùng về lại Trang chủ.</p>
198
199<img src="{@docRoot}design/media/navigation_between_apps_back.png">
200
201<p>Tuy nhiên, nếu chạm vào Lên trên từ hoạt động soạn email, người dùng biểu thị mong muốn vẫn ở nguyên trong
202Gmail. Hoạt động danh sách hội thoại của Gmail xuất hiện và Tác vụ B mới sẽ được tạo cho nó. Các tác vụ mới
203sẽ luôn được liên kết gốc với Trang chủ, vì thế chạm vào Quay lại từ danh sách hội thoại sẽ quay lại đó.</p>
204
205<img src="{@docRoot}design/media/navigation_between_apps_up.png">
206
207<p>Tác vụ A duy trì chạy nền và người dùng có thể quay lại nó sau (ví dụ, thông qua
208màn hình Gần đây). Nếu Gmail đã có tác vụ riêng đang chạy nền, nó sẽ được thay thế
209bằng Tác vụ B&mdash;ngữ cảnh trước đó sẽ bị bỏ đi phục vụ cho mục đích mới của người dùng.</p>
210
211<p>Khi ứng dụng của bạn đăng ký điều khiển ý định bằng một hoạt động nằm sâu trong thứ bậc của ứng dụng,
212hãy tham khảo phần <a href="#into-your-app">Điều hướng tới Ứng dụng của Bạn thông qua Widget và Thông báo trên
213Màn hình Trang chủ</a> để xem hướng dẫn về cách quy định điều hướng Lên trên.</p>
214