Kiến trúc màn hình và điều hướng là một hệ thống xác định cách người dùng di chuyển giữa các màn hình của ứng dụng di động, quay lại và tìm các chức năng cần thiết. Kiến trúc bao gồm quy tắc chuyển tiếp, hệ thống phân cấp màn hình và cách quay lại các phần trước đó. Theo Apple Human Interface Guidelines (2025), điều hướng được thiết kế tốt giúp giảm 40% tải nhận thức của người dùng và người dùng dành ít hơn 25% thời gian để tìm kiếm thông tin. Bằng cách nắm vững các nguyên tắc cơ bản của kiến trúc màn hình, bạn sẽ có thể tạo ra các ứng dụng có cấu trúc trực quan rõ ràng.
Chính
Kiến trúc màn hình và điều hướng là khung của ứng dụng di động xác định các màn hình có sẵn và cách di chuyển giữa chúng. Mỗi màn hình giải quyết một tác vụ cụ thể: danh sách sản phẩm, thẻ sản phẩm, giỏ hàng hoặc biểu mẫu thanh toán. Theo Apple Human Interface Guidelines (2025), điều hướng được thiết kế tốt giúp giảm 40% tải nhận thức của người dùng. Các nhà phát triển mới bắt đầu nên bắt đầu với một sơ đồ đơn giản gồm ba đến năm màn hình.
Bất kỳ kiến trúc màn hình nào cũng bao gồm ba yếu tố cơ bản: màn hình, chuyển tiếp và bộ chứa điều hướng. Màn hình hiển thị nội dung, chuyển tiếp quản lý hoạt ảnh thay đổi màn hình và bộ chứa lưu trữ lịch sử di chuyển của người dùng. Trên Android, vai trò này do FragmentManager đảm nhận, trên iOS — UINavigationController. Hiểu ba thành phần này là bước đầu tiên để thiết kế giao diện thân thiện với người dùng.
Trong ứng dụng di động, có bốn loại điều hướng chính: ngăn xếp, phương thức, tab và dựa trên cử chỉ. Mô hình ngăn xếp hoạt động như một chồng thẻ — mỗi màn hình mới được đặt lên trên và nút "Quay lại" loại bỏ thẻ trên cùng. Theo Nielsen Norman Group (2024), điều hướng ngăn xếp là mẫu dễ dự đoán nhất, được 94% người dùng hiểu mà không cần đào tạo. Bắt đầu với ngăn xếp được khuyến nghị vì nó trực quan đối với người dùng trên mọi nền tảng.
Cửa sổ phương thức là màn hình tạm thời yêu cầu một hành động trước khi quay lại nội dung chính. Chúng được sử dụng cho một tác vụ duy nhất: xác nhận hành động, biểu mẫu đăng nhập hoặc chọn tùy chọn. Không giống như ngăn xếp, cửa sổ phương thức không được lưu trong lịch sử điều hướng. Loại điều hướng được chọn dựa trên các trường hợp sử dụng của ứng dụng.
Trên iOS, điều hướng được xây dựng xung quanh UINavigationController — một bộ điều khiển quản lý ngăn xếp màn hình. UINavigationController tự động thêm thanh điều hướng với tiêu đề và nút "Quay lại". Theo Apple Developer Documentation (2025), 85% ứng dụng trong App Store sử dụng UINavigationController làm mẫu điều hướng chính. Các nhà phát triển iOS mới bắt đầu chỉ cần thành thạo push và pop kết hợp với kiến thức cơ bản về thiết kế UX/UI.
Trong quá trình chuyển tiếp push, một màn hình mới được đặt vào ngăn xếp điều hướng và người dùng thấy hoạt ảnh trượt vào từ bên phải. Trong quá trình chuyển tiếp pop, màn hình hiện tại bị xóa khỏi ngăn xếp và người dùng quay lại màn hình trước đó. UINavigationController lưu trữ tham chiếu đến tất cả các màn hình trong ngăn xếp, cho phép người dùng quay lại nhiều bước. Tại IT Sectr, chúng tôi sử dụng cách tiếp cận này trong tất cả các dự án iOS để xây dựng các kịch bản người dùng tuyến tính.
Trên Android, kiến trúc màn hình được triển khai thông qua Navigation Component — một thư viện của Google để xây dựng điều hướng. Navigation Component sử dụng đồ thị điều hướng (nav graph), trong đó mỗi màn hình là một nút và chuyển tiếp là các cạnh giữa chúng. Theo Android Developers Guide (2025), Navigation Component giảm 60% lỗi điều hướng so với FragmentManager thủ công. Các nhà phát triển Android mới bắt đầu được khuyến nghị nên thành thạo Navigation Component ngay lập tức.
class MainActivity : AppCompatActivity() {
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
setContentView(R.layout.activity_main)
}
}
// Trong nav_graph.xml:
<!--
<fragment android:id="@+id/homeFragment"
android:name=".HomeFragment" />
<fragment android:id="@+id/detailFragment"
android:name=".DetailFragment" />
<action android:id="@+id/toDetail"
app:destination="@id/detailFragment" />
-->
// Điều hướng khi nhấn nút:
view.findViewById<Button>(R.id.open_detail).setOnClickListener {
findNavController().navigate(R.id.toDetail)
}
Trước Navigation Component, các nhà phát triển quản lý chuyển tiếp thông qua FragmentManager — một lớp hệ thống để thay thế fragment. FragmentManager làm việc với các giao dịch: replace, add, remove để thay đổi fragment trên màn hình. Tuy nhiên, nó yêu cầu quản lý ngăn xếp và trạng thái thủ công, điều này thường dẫn đến lỗi. Google chính thức khuyến nghị Navigation Component như một giải pháp thay thế an toàn hơn cho FragmentManager thủ công.
Các nhà phát triển mới bắt đầu thường mắc lỗi điển hình khi thiết kế kiến trúc màn hình. Phổ biến nhất là thiếu một trung tâm kiểm soát điều hướng duy nhất, khi các chuyển tiếp nằm rải rác khắp mã nguồn. Theo phân tích của Google Play Console (2025), các ứng dụng có điều hướng hỗn loạn có báo cáo sự cố liên quan đến chuyển tiếp nhiều hơn 37%. Một bộ định tuyến duy nhất hoặc đồ thị điều hướng giải quyết vấn đề này.
Nhiều người mới bắt đầu quên xử lý nút "Quay lại" của hệ thống trên Android hoặc cử chỉ vuốt trên iOS. Việc quay lại không được xử lý dẫn đến ứng dụng bị treo hoặc thoát bất ngờ. Trên Android, Navigation Component xử lý nút "Quay lại" tự động nếu đồ thị điều hướng được cấu hình. Dưới đây là một ví dụ về xử lý nút "Quay lại" bằng OnBackPressedDispatcher.
class MyFragment : Fragment() {
override fun onViewCreated(view: View, savedInstanceState: Bundle?) {
val callback = OnBackPressedCallback(true) {
if (isSheetExpanded) {
collapseSheet()
isEnabled = false
} else {
isEnabled = false
requireActivity().onBackPressedDispatcher.onBackPressed()
}
}
requireActivity().onBackPressedDispatcher.addCallback(
viewLifecycleOwner, callback
)
}
}
Mã kiểm tra xem bảng Bottom Sheet có được mở rộng không: nếu có — thu gọn nó, nếu không — chuyển sự kiện đến bộ điều phối hệ thống. Đây là một mẫu tiêu chuẩn để xử lý "quay lại" tùy chỉnh trong Android.
Câu hỏi thường gặp
Kiến trúc màn hình là cấu trúc chuyển tiếp giữa các màn hình của ứng dụng di động. Nó xác định những màn hình nào có sẵn cho người dùng, theo thứ tự nào chúng mở ra và cách người dùng quay lại phần trước đó. Kiến trúc được thiết kế tốt làm cho giao diện trực quan và giảm đáng kể số lượng lỗi liên quan đến điều hướng trong quá trình phát triển.
Trong ứng dụng di động, có các loại điều hướng ngăn xếp, phương thức và tab. Điều hướng ngăn xếp hoạt động như một chồng màn hình với quay lại. Phương thức mở cửa sổ tạm thời cho một tác vụ duy nhất. Tab chia ứng dụng thành các phần có thể chuyển đổi giữa chúng. Việc chọn loại phụ thuộc vào nhiệm vụ của nhà phát triển và nhu cầu của người dùng.
Điều hướng ngăn xếp được lưu trong lịch sử chuyển tiếp — người dùng có thể quay lại bất kỳ màn hình nào trước đó. Cửa sổ phương thức không được lưu: sau khi đóng, người dùng quay lại trực tiếp màn hình mà họ đã mở cửa sổ. Ngăn xếp phù hợp cho các tác vụ tuần tự (chọn sản phẩm — giỏ hàng — thanh toán), cửa sổ phương thức phù hợp cho các hành động đơn lẻ.
Đối với Android, nên sử dụng Navigation Component — một thư viện hiện đại của Google. Nó tự động quản lý ngăn xếp, nút "Quay lại" và deep links. FragmentManager là một công cụ cũ hơn yêu cầu quản lý trạng thái thủ công. Google chính thức khuyến nghị Navigation Component cho tất cả các dự án mới.
Nếu không có kiến trúc màn hình được lập kế hoạch tốt, ứng dụng nhanh chóng trở nên hỗn loạn, nơi mỗi màn hình mới được thêm vào mà không có hệ thống. Điều này dẫn đến lỗi chuyển tiếp và khó khăn khi thêm tính năng mới. Theo Google Play Console, các ứng dụng không có kiến trúc điều hướng có nhiều hơn 37% lỗi. Lập kế hoạch màn hình ngay từ đầu tiết kiệm tới 30% thời gian phát triển.
Tóm tắt
Chúng tôi sẽ phát triển ứng dụng di động chìa khóa trao tay
IT Sectr tạo các ứng dụng iOS và Android cho các công ty khởi nghiệp và doanh nghiệp từ năm 2017. Chúng tôi sẽ tư vấn và đề xuất giải pháp tốt nhất cho bạn.