当前位置: 首页 > 科技观察

Android开发者和设计师必须了解的关于颜色的知识

时间:2023-03-14 20:12:56 科技观察

在最近发布的Oreo版本中,Android开始获得对颜色管理的支持,这有助于在不同设备上校准颜色。通过此更新,Android设备现在可以显示sRGB色域之外的颜色。简而言之,色彩管理可确保色彩在不同显示器上看起来一致。例如,#ff0000颜色(我们的读者应该立即知道它是红色)在采用不同技术的显示器上显示时可能会以不同的方式出现在观众面前——一些屏幕可能会显示出更饱和或更强烈的颜色。根据sRGB表示法,#ff0000代表特定的红色(在sRGB颜色空间中),因此颜色显示管理可以准确地产生观众期望的颜色。在这篇文章中,我们想概述Android应用程序设计人员和开发人员需要如何理解这些变化。显示广色域图像图像可以嵌入颜色配置文件,声明其颜色信息所属的颜色空间。同样,许多相机能够捕捉宽色域并嵌入适当的颜色配置文件以显示超出标准sRGB色域的颜色。要在您的应用程序中显示具有宽色域的图像,您需要在每个Activity中声明它们。为此,在清单中的活动公告中设置colorMode属性:您也可以在代码中设置它,但需要在创建Window之前在onCreate中进行。广色域支持是可选的,因为它需要更多的系统资源(这可能会导致应用程序性能下降),事实上我们在开发人员文档中强调了这一点:“启用广色域模式时,Windowed活动使用更多内存和GPU处理powerforframecomposition.在启用广色域模式之前,你应该仔细考虑活动是否真的可以从中受益。例如,全屏照片活动适用于广色域模式,但不适合显示缩略图的界面”请注意,如果您使用的是单活动架构,则将广色域图像显示分解为新活动可能是有意义的。下面是两个屏幕的示例,显示相同的广色域测试图像(嵌入了DisplayP3颜色配置文件的PNG文件),屏幕上半部分的Activity声明广色域颜色模式,而Activity在屏幕的下半部分未声明。△如果你的屏幕支持的话,你应该可以在上部看到一个安卓小机器人,但在下部看不到。颜色准确渲染许多Android设备长期以来都具有能够显示宽色域的屏幕。在Android8.0的颜色管理之前,一切都被假定为sRGB,但广色域显示器会将颜色值重新解释为它们的工作色域,并有效地“缩放”颜色值(通常使红色更红,绿色更红)更绿色),从而产生更饱和的成像效果。但是,这种拉伸是不精确的,事实上并没有这样的“转换”算法可以预测出你想要的颜色,所以这样渲染出来的颜色是不准确的。很多应用都对图片等资源进行了处理,比如降低一些饱和度来补色。因此,在具有校准显示器的设备上显示时,颜色可能会显得柔和。也就是说,在具有准确色彩渲染的设备(例如Pixel2)上,去饱和的图像资产不会像在显示不准确的设备上那样完整。当颜色精确渲染变得广泛可用时,应用程序开发人员最终可以消除自己处理资源颜色的需要,同时确保其内容按预期显示。然而,在此之前,您可以采取一些措施来确保您的内容在色彩准确的显示器和非色彩管理设备上看起来都很棒。Android8.0添加了一个新的widecg资源限定符,您可以使用它在具有支持广色域渲染的宽色域屏幕的设备上更改颜色(noidecg则相反)。请注意,广色域支持不同于当前活动是否在wideColorGamut颜色模式下运行。如果设备支持颜色精确渲染,则此限定符适用,无论活动是否在广色域模式下运行。例如,一个应用程序可以在res/values/colors.xml中声明一个基色的调色板:并在res/values-widecg/colors.xml中声明另一组设置△如上代码所示,可以显示准确的颜色设备(左侧)和旧设备提供不同的颜色将应用程序大小加倍,因此可能不值得。如果必须,请考虑切换到可动态着色的矢量图形。更广泛的支持即将到来虽然我们最近宣布计划添加一个新的“饱和”色彩模式,让用户可以选择不使用色彩精确渲染(就像nowidecg设备所做的那样),但我们仍然认为这对那些有色彩的人来说是个好主意managed设备更新应用程序的功能非常重要。如果您更新您的应用程序以更好地支持颜色准确的渲染,那么选择退出此模式的用户就会减少,因为每个人都喜欢颜色准确的渲染。我们计划继续投资于广色域支持;在未来的版本中添加更多API接口来处理宽色域(例如,更新的PaintAPI和CanvasAPI已经可以接受更高位精度的颜色)。今天,当频繁使用现代显示设备时,设计师和开发人员现在需要了解色彩空间、色彩管理以及如何在他们的应用程序中实施它们。随着越来越多的设备开始提供广色域显示和色彩准确的渲染,保持领先一步、更新您的应用程序并为您的用户提供最佳体验势在必行。我们认为这是为您的用户提供出色体验的唯一方法——确保他们看到您希望他们出现的颜色。【本文为专栏组织“GoogleDevelopers”原创稿件,转载请联系原作者转载(微信公众号:Google_Developers)】点此查看该作者更多好文