نمایش تصاویر Ultra HDR

قالب تصویر Ultra HDR به تصاویر امکان می‌دهد اطلاعات بیشتری درباره شدت نور ذخیره کنند، که منجر به جزئیات بیشتر در نواحی پرنور و سایه‌ها و رنگ‌های شدیدتر می‌شود. ‫Android از Android 14 (سطح میانای برنامه‌سازی کاربردی ۳۴) از تصاویر Ultra HDR پشتیبانی می‌کند. اگر برنامه‌تان در این نسخه‌ها اجرا می‌شود، مهم است که برنامه‌تان را برای نمایش درست این تصاویر پیکربندی کنید. ازسوی دیگر، اگر برنامه‌تان تصاویر Ultra HDR را نمایش نمی‌دهد، می‌توانید با فعال نکردن نمایش Ultra HDR، در منابع دستگاه صرفه‌جویی کنید. این صفحه توضیح می‌دهد که چگونه بررسی کنید آیا گرافیک از Ultra HDR پشتیبانی می‌کند یا نه، و چگونه آن‌ها را به‌درستی نمایش دهید.

بررسی وجود نقشه بهره

تصاویر Ultra HDR حاوی نقشه بهره هستند. از نقشه بهره برای تعیین افزایش روشنایی هر پیکسل در تصویر استفاده می‌شود. برای تأیید اینکه تصویر در قالب Ultra HDR است، تصویر یا drawable را به Bitmap تبدیل کنید و Bitmap.hasGainMap() (از Android 14 دردسترس است) را فراخوانی کنید تا بررسی شود که آیا نقشه بهره دارد یا نه.

پنجره‌تان را برای نمایش Ultra HDR پیکربندی کنید

برای نمایش تصاویر Ultra HDR با دامنه پویای کامل، حالت رنگ پنجره را روی ActivityInfo.COLOR_MODE_HDR تنظیم کنید. این کار را با فراخوانی روش setColorMode() پنجره انجام دهید. (این میاناهای برنامه‌سازی کاربردی از Android 8 دردسترس هستند؛ بااین‌حال، تصاویر در Ultra HDR نمایش داده نمی‌شوند مگراینکه دستگاه Android 14 یا بالاتر داشته باشد.)

درحال سرهم کردن

کد زیر نشان می‌دهد کل فرایند چگونه است. این کد فرض می‌کند که تصویری در Bitmap بار شده است و بررسی می‌کند که آیا تصویر نقشه بهره دارد یا نه. اگر این‌طور باشد، کد حالت رنگ پنجره را به COLOR_MODE_HDR تغییر می‌دهد. اگر تصویر نقشه بهره نداشته باشد، کد پنجره را به حالت رنگ پیش‌فرض تغییر می‌دهد.

کاتلین

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

جاوا

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);

منابع بیشتر

برای کسب اطلاعات بیشتر درباره تصاویر Ultra HDR، منابع اضافی زیر را ببینید: