Android应用开发(25)(待继续编辑)

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。对于消费者而言,广色域能让照片看上去更加真实。

一、check广色域支持情况

如果是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之外,如果是一个图像类应用,可用通过如下方式启用广色域模式,来实现图片的全彩色域显示:

  1.  AndroidManifest.xml 在 activity 文件中的 colorMode 属性设定为 wideColorGamut

  2. 调用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应用开发学习笔记的完整目录

你可能感兴趣的:(Android应用开发学习笔记,android,android,studio)