Định dạng hình ảnh Ultra HDR cho phép hình ảnh lưu trữ nhiều thông tin hơn về cường độ ánh sáng, nhờ đó tạo ra vùng sáng và vùng tối chi tiết hơn, cũng như màu sắc sống động hơn. Android hỗ trợ hình ảnh Ultra HDR kể từ Android 14 (API cấp 34). Nếu ứng dụng của bạn đang chạy trên những phiên bản đó, thì bạn cần định cấu hình ứng dụng để hiển thị những hình ảnh này đúng cách. Mặt khác, nếu ứng dụng của bạn không hiển thị hình ảnh Ultra HDR, bạn có thể tiết kiệm tài nguyên thiết bị bằng cách không bật màn hình Ultra HDR. Trang này giải thích cách kiểm tra xem đồ hoạ có hỗ trợ Ultra HDR hay không và cách hiển thị đồ hoạ đúng cách.
Kiểm tra sự hiện diện của bản đồ khuếch đại
Hình ảnh Ultra HDR chứa một bản đồ hệ số khuếch đại. Bản đồ tăng sáng được dùng để xác định độ sáng tăng lên của từng pixel trong hình ảnh. Để xác minh xem một hình ảnh có ở định dạng Ultra HDR hay không, hãy chuyển đổi hình ảnh hoặc đối tượng có thể vẽ thành Bitmap
rồi gọi Bitmap.hasGainMap()
(có từ Android 14) để kiểm tra xem hình ảnh đó có bản đồ độ khuếch đại hay không.
Định cấu hình cửa sổ để hiển thị nội dung Ultra HDR
Để hiển thị hình ảnh Ultra HDR với dải tương phản động đầy đủ, hãy đặt chế độ màu của cửa sổ thành ActivityInfo.COLOR_MODE_HDR
. Thực hiện việc này bằng cách gọi phương thức setColorMode()
của cửa sổ. (Các API này có sẵn từ Android 8; tuy nhiên, hình ảnh sẽ không hiển thị ở chế độ Ultra HDR trừ phi thiết bị đang chạy Android 14 trở lên.)
Kết hợp kiến thức đã học
Đoạn mã sau đây cho biết toàn bộ quy trình trông như thế nào. Mã này giả định rằng một hình ảnh được tải vào Bitmap và kiểm tra xem hình ảnh đó có bản đồ tăng sáng hay không. Nếu có, mã sẽ chuyển chế độ màu của cửa sổ thành COLOR_MODE_HDR
. Nếu hình ảnh không có bản đồ tăng độ sáng, mã sẽ chuyển cửa sổ sang chế độ màu mặc định.
Kotlin
val bitmap = /* Get Bitmap from Image Resource */ binding.imageContainer.setImageBitmap(bitmap) // Set color mode of the activity to the correct color mode. requireActivity().window.colorMode = if (bitmap.hasGainmap()) ActivityInfo.COLOR_MODE_HDR else ActivityInfo.COLOR_MODE_DEFAULT
Java
final Bitmap bitmap = /* Get Bitmap from Image Resource */ binding.imageContainer.setImageBitmap(bitmap); // Set color mode of the activity to the correct color mode. int colorMode = ActivityInfo.COLOR_MODE_DEFAULT; if (bitmap.hasGainmap()) colorMode = ActivityInfo.COLOR_MODE_HDR; requireActivity().getWindow().setColorMode(colorMode);
Tài nguyên khác
Để tìm hiểu thêm về hình ảnh Ultra HDR, hãy xem các tài nguyên bổ sung sau đây:
- Video: Tạo trải nghiệm đa phương tiện chất lượng cao trên Android
- Ứng dụng mẫu: Hiển thị Ultra HDR
- Thông số kỹ thuật về định dạng hình ảnh Ultra HDR
- Video: Câu chuyện về nhà phát triển Android: Việc Instagram sớm áp dụng Ultra HDR đã thay đổi trải nghiệm người dùng chỉ trong 3 tháng