+3

Áp dụng DarkTheme vào ứng dụng Android

Làm thế nào để thay đổi darktheme mà không cần khởi tạo lại app?

Đầu tiên bạn phải thêm configChanges mode vào activity trong file Manifest

Dòng code này sẽ ngăn việc khởi tạo lại ứng dụng khi áp dụng darktheme theo cách thủ công hoặc từ thanh thông báo, vì vậy nếu bạn đã sử dụng color-night.xml, nó sẽ bị bỏ qua vì ứng dụng của bạn không được tạo lại.

Vậy nếu chỉnh màu bằng tay thì sao?

Ở đây mình sẽ tạo thêm các màu với tên "Night" ở cuối để phân biệt ở file colors.xml

Sau đó, vào Activity và override lại hàm onConfigurationChanged và áp dụng màu dựa trên nightModeFlags

onConfigurationChanged sẽ được gọi khi trạng thái DayNight thay đổi. VD: Khi bạn bật/ tắt chế độ darkmode trên notification bar hay thực thi bằng code

Vậy khi fragments nằm trong Activity thì làm sao để bắt sự kiện thay đổi?

Dễ thôi, mình chỉ cần tạo một interface và các fragment sẽ kế thừa nếu muốn áp dụng darkmode

Và fragment kế thừa interface đó

Và bạn phải notify Fragments sự kiện đó ở Activity, mỗi khi configuration thay đổi, fragment cũng sẽ nhận được trạng thái DayNight

Sử dụng bằng cách sau:

Và thành quả cuối cùng


All rights reserved

Viblo
Hãy đăng ký một tài khoản Viblo để nhận được nhiều bài viết thú vị hơn.
Đăng kí