Trải nghiệm tốt nhất một số nội dung ở chế độ toàn màn hình mà không có bất kỳ chỉ báo nào trên thanh trạng thái hoặc thanh điều hướng. Một số ví dụ là video, trò chơi, hình ảnh thư viện, sách và trang trình bày trong bản trình bày. Đây được gọi là chế độ chìm. Trang này cho biết cách bạn có thể tương tác sâu hơn với người dùng thông qua nội dung ở chế độ toàn màn hình.
![](https://developer.android.google.cn/static/design/media/fullscreen_landing.png?authuser=19&hl=vi)
Chế độ hiển thị tối đa giúp người dùng tránh vô tình thoát trong khi chơi và mang lại trải nghiệm sống động để thưởng thức hình ảnh, video và sách. Tuy nhiên, hãy để ý đến tần suất người dùng truy cập và rời khỏi ứng dụng để kiểm tra thông báo, để tiến hành tìm kiếm ngẫu nhiên hoặc thực hiện hành động khác. Vì chế độ hiển thị tối đa khiến người dùng mất khả năng truy cập dễ dàng vào phần điều hướng trên hệ thống, chỉ dùng chế độ hiển thị tối đa khi lợi ích đối với trải nghiệm người dùng không chỉ dừng lại ở việc sử dụng thêm màn hình .
Sử dụng WindowInsetsControllerCompat.hide()
để ẩn thanh hệ thống và WindowInsetsControllerCompat.show()
để đưa họ trở lại.
Đoạn mã sau đây cho thấy ví dụ về cách định cấu hình một nút để ẩn và hiển thị các thanh hệ thống.
Kotlin
override fun onCreate(savedInstanceState: Bundle?) { ... val windowInsetsController = WindowCompat.getInsetsController(window, window.decorView) // Configure the behavior of the hidden system bars. windowInsetsController.systemBarsBehavior = WindowInsetsControllerCompat.BEHAVIOR_SHOW_TRANSIENT_BARS_BY_SWIPE // Add a listener to update the behavior of the toggle fullscreen button when // the system bars are hidden or revealed. ViewCompat.setOnApplyWindowInsetsListener(window.decorView) { view, windowInsets -> // You can hide the caption bar even when the other system bars are visible. // To account for this, explicitly check the visibility of navigationBars() // and statusBars() rather than checking the visibility of systemBars(). if (windowInsets.isVisible(WindowInsetsCompat.Type.navigationBars()) || windowInsets.isVisible(WindowInsetsCompat.Type.statusBars())) { binding.toggleFullscreenButton.setOnClickListener { // Hide both the status bar and the navigation bar. windowInsetsController.hide(WindowInsetsCompat.Type.systemBars()) } } else { binding.toggleFullscreenButton.setOnClickListener { // Show both the status bar and the navigation bar. windowInsetsController.show(WindowInsetsCompat.Type.systemBars()) } } ViewCompat.onApplyWindowInsets(view, windowInsets) } }
Java
@Override protected void onCreate(Bundle savedInstanceState) { ... WindowInsetsControllerCompat windowInsetsController = WindowCompat.getInsetsController(getWindow(), getWindow().getDecorView()); // Configure the behavior of the hidden system bars. windowInsetsController.setSystemBarsBehavior( WindowInsetsControllerCompat.BEHAVIOR_SHOW_TRANSIENT_BARS_BY_SWIPE ); // Add a listener to update the behavior of the toggle fullscreen button when // the system bars are hidden or revealed. ViewCompat.setOnApplyWindowInsetsListener( getWindow().getDecorView(), (view, windowInsets) -> { // You can hide the caption bar even when the other system bars are visible. // To account for this, explicitly check the visibility of navigationBars() // and statusBars() rather than checking the visibility of systemBars(). if (windowInsets.isVisible(WindowInsetsCompat.Type.navigationBars()) || windowInsets.isVisible(WindowInsetsCompat.Type.statusBars())) { binding.toggleFullscreenButton.setOnClickListener(v -> { // Hide both the status bar and the navigation bar. windowInsetsController.hide(WindowInsetsCompat.Type.systemBars()); }); } else { binding.toggleFullscreenButton.setOnClickListener(v -> { // Show both the status bar and the navigation bar. windowInsetsController.show(WindowInsetsCompat.Type.systemBars()); }); } return ViewCompat.onApplyWindowInsets(view, windowInsets); }); }
Nếu muốn, bạn có thể chỉ định loại thanh hệ thống để ẩn và xác định hành vi của chúng khi người dùng tương tác với chúng.
Chỉ định thanh hệ thống cần ẩn
Để chỉ định loại thanh hệ thống cần ẩn, hãy truyền một trong các tham số sau
thành WindowInsetsControllerCompat.hide()
.
Sử dụng
WindowInsetsCompat.Type.systemBars()
để ẩn cả hai thanh hệ thống.Sử dụng
WindowInsetsCompat.Type.statusBars()
để chỉ ẩn thanh trạng thái.Sử dụng
WindowInsetsCompat.Type.navigationBars()
để chỉ ẩn thanh điều hướng.
Chỉ định hoạt động của các thanh hệ thống bị ẩn
Sử dụng WindowInsetsControllerCompat.setSystemBarsBehavior()
để chỉ định cách hoạt động của các thanh hệ thống ẩn khi người dùng tương tác với các thanh đó.
Sử dụng
WindowInsetsControllerCompat.BEHAVIOR_SHOW_BARS_BY_TOUCH
để hiển thị thanh hệ thống ẩn trên bất kỳ tương tác nào của người dùng trên các ứng dụng màn hình.Sử dụng
WindowInsetsControllerCompat.BEHAVIOR_SHOW_BARS_BY_SWIPE
để hiển thị thanh hệ thống ẩn trên bất kỳ cử chỉ hệ thống nào, chẳng hạn như vuốt từ cạnh màn hình nơi thanh bị ẩn.Sử dụng
WindowInsetsControllerCompat.BEHAVIOR_SHOW_TRANSIENT_BARS_BY_SWIPE
để tạm thời hiển thị các thanh hệ thống ẩn bằng các cử chỉ hệ thống, chẳng hạn như vuốt từ cạnh của màn hình, nơi thanh bị ẩn. Các thanh hệ thống tạm thời phủ lên nội dung của ứng dụng, có thể ở mức độ nào đó trong suốt và tự động bị ẩn sau một thời gian chờ ngắn.