Giảm độ sáng các thanh hệ thống

Bài học này mô tả cách làm mờ thanh hệ thống (tức là trạng thái và thanh điều hướng) trên Android 4.0 (API cấp 14) trở lên. Android không cung cấp cách tích hợp sẵn để làm mờ thanh hệ thống trên các phiên bản cũ.

Khi bạn sử dụng phương pháp này, nội dung sẽ không đổi kích thước, nhưng các biểu tượng trên thanh hệ thống sẽ thu gọn lại. Ngay khi người dùng nhấn vào thanh trạng thái hoặc vùng thanh điều hướng của màn hình, cả hai thanh đều hiển thị đầy đủ. Ưu điểm của phương pháp này là các thanh vẫn hiện diện nhưng thông tin chi tiết của các thanh đó bị che khuất, do đó, tạo ra trải nghiệm sống động mà vẫn đảm bảo khả năng truy cập dễ dàng vào các thanh.

Làm mờ thanh trạng thái và thanh điều hướng

Bạn có thể làm mờ thanh trạng thái và thanh điều hướng bằng cờ SYSTEM_UI_FLAG_LOW_PROFILE như sau:

Kotlin

// This example uses decor view, but you can use any visible view.
activity?.window?.decorView?.apply {
    systemUiVisibility = View.SYSTEM_UI_FLAG_LOW_PROFILE
}

Java

// This example uses decor view, but you can use any visible view.
View decorView = getActivity().getWindow().getDecorView();
int uiOptions = View.SYSTEM_UI_FLAG_LOW_PROFILE;
decorView.setSystemUiVisibility(uiOptions);

Ngay khi người dùng chạm vào trạng thái hoặc thanh điều hướng, cờ sẽ bị xoá, khiến các thanh đó không hiển thị. Sau khi cờ bị xoá, ứng dụng của bạn cần đặt lại nếu bạn muốn giảm độ sáng của các thanh một lần nữa.

Hình 1 cho thấy hình ảnh thư viện trong đó thanh điều hướng bị làm mờ (lưu ý rằng ứng dụng Thư viện ẩn hoàn toàn thanh trạng thái chứ không làm mờ thanh trạng thái). Lưu ý rằng thanh điều hướng (bên phải của hình ảnh) có các chấm màu trắng mờ trên đó để biểu thị các nút điều khiển điều hướng:

thanh hệ thống

Hình 1. Các thanh hệ thống được làm mờ.

Hình 2 cho thấy cùng một hình ảnh thư viện, nhưng hiển thị các thanh hệ thống:

thanh hệ thống

Hình 2. Thanh hệ thống hiển thị.

Hiển thị thanh trạng thái và thanh điều hướng

Nếu muốn xoá cờ được đặt bằng setSystemUiVisibility() theo phương thức lập trình, bạn có thể làm như sau:

Kotlin

activity?.window?.decorView?.apply {
    // Calling setSystemUiVisibility() with a value of 0 clears
    // all flags.
    systemUiVisibility = 0
}

Java

View decorView = getActivity().getWindow().getDecorView();
// Calling setSystemUiVisibility() with a value of 0 clears
// all flags.
decorView.setSystemUiVisibility(0);