Android应用开发学习笔记——目录索引
参考android官网:
使用广色域内容增强图形效果 | Android 开发者 | Android Developers
ColorSpace | Android Developers
Wide Color Photos Are Coming to Android: Things You Need to Know to be Prepared
Android 现已迎来新一轮的图像革新, Android 8.0(API 级别 26)或更高的 Android 版本上,应用可为 Activity 启用广色域颜色模式,色域更宽的画面意味着,能给用户呈现更加实景的丰富的色彩。
切入正题之前,让我先解答一下大家的疑惑: 为什么要支持广色域呢?实际上,移动设备的屏幕与摄像头传感器每年都在更新换代,越来越多的新机型即将搭载校准显示面板,其中部分还会提供广色域支持。现代摄像头感应器能够捕捉到 sRGB 范围以外的颜色,然后生成广色域图片。屏幕与传感器的双重升级将带给用户端到端的摄影体验,让他们用更鲜明的色彩留影真实世界。
从技术层面来说,这意味着应用需要处理的图片与之前不同了。图片内嵌的 ICC 配置文件将不再采用 sRGB 色彩空间,而是转用其它色域更加丰富的格式,如 Display P3 和 Adobe RGB。对于消费者而言,广色域能让照片看上去更加真实。
如果是debug,可以使用adb shell dumpsys SurfaceFlinger --wide-color
使用xiaomi 13 Ultra(android 13 API 级别 33)运行命令输出如下:
Device has wide color built-in display: 1
Device uses color management: 1
DisplayColorSetting: Unknown 258
Display 4630947006070067843 color modes:
ColorMode::NATIVE (0)
ColorMode::SRGB (7)
ColorMode::DISPLAY_P3 (9) // 有这个表示支持wcg(WideColorGamut)
Current color mode: ColorMode::SRGB (7)
使用MIX 2S(android API 级别 29)运行命令输出如下:
Device has wide color built-in display: 1
Device uses color management: 1
DisplayColorSetting: Managed
Display 19260591652815745 color modes:
ColorMode::NATIVE (0)
ColorMode::SRGB (7)
Current color mode: ColorMode::NATIVE (0)
显示屏是否支持广色域,请调用 isWideColorGamut()
方法。
应用还可以调用 isScreenWideColorGamut()
mDisplay = getWindowManager().getDefaultDisplay();
Log.d(TAG, "isWideColorGamut(): " + mDisplay.isWideColorGamut());
boolean isWcgSupport =
getResources().getConfiguration().isScreenWideColorGamut();
Log.d(TAG, "isScreenWideColorGamut(): " + isWcgSupport);
使用xiaomi 13 Ultra(android 13 API 级别 33)log打印:
07-31 00:21:49.959 13998 13998 D lzl-test: isWideColorGamut(): true
07-31 00:21:49.959 13998 13998 D lzl-test: isScreenWideColorGamut(): true
使用MIX 2S(android API 级别 29)log打印:
07-31 00:17:49.405 13998 13998 D lzl-test: isWideColorGamut(): false
07-31 00:17:49.405 13998 13998 D lzl-test: isScreenWideColorGamut(): false
为了妥善处理图片,除上述必要check之外,如果是一个图像类应用,可用通过如下方式启用广色域模式,来实现图片的全彩色域显示:
AndroidManifest.xml 在 activity 文件中的 colorMode 属性设定为 wideColorGamut
调用API setColorMode(ActivityInfo.COLOR_MODE_WIDE_COLOR_GAMUT);
,例如在清单文件中启用广域模式或创建一个 Display P3 surface,来实现图片的全彩色域显示。
如需在 activity 中启用广色域,请将 AndroidManifest.xml 文件中的 colorMode 属性设定为 wideColorGamut。请注意,您需要为每一个启用广色域模式的 activity 重复以上设置。
百度网盘链接:百度网盘 请输入提取码 提取码:test
github下载地址:
GitHub - liuzhengliang1102/AndroidStudio-LearnAppDevelopment
DisplayColorModeTest目录
运行log:
百度网盘链接:百度网盘 请输入提取码 提取码:test
github下载地址:
GitHub - liuzhengliang1102/AndroidStudio-LearnAppDevelopment
ActivityTest目录
点此查看Android应用开发学习笔记的完整目录