获取imageView颜色并设置补色

Get imageView color and set complementary color

我做了Viewpager,只有ImageView。

来自服务器的图像。所以可以亮也可以暗。

还有像这样通知当前页/总页的布局。

现在我想使图像变亮,注意布局变暗。

如果图像较暗,请注意布局变亮。

所以。 我的问题是

  1. 如何知道当前图像是亮的还是暗的?
  2. 以及如何从图像中制作 complementary color

Android 支持库 r21 及更高版本包含调色板 class,可让您从图像中提取突出的颜色。要提取这些颜色,请将位图对象传递给加载图像的后台线程中的 Palette.generate() 静态方法。如果您不能使用该线程,请调用 Palette.generateAsync() 方法并提供一个侦听器。

要在您的项目中使用 Palette class,请将以下 Gradle 依赖项添加到您应用的模块中:

implementation 'androidx.palette:palette:$version'

从图像中获取颜色:

    Palette.generateAsync(bitmap, new Palette.PaletteAsyncListener() {
        public void onGenerated(Palette palette) {
            // Do something with colors...
        }
});

调色板库尝试提取以下六种颜色配置文件:

轻盈充满活力, 充满活力, 黑暗充满活力, 灯光静音, 静音和 黑暗静音。

在 RGB 模型中寻找补色非常简单。对于任何给定的颜色,例如红色 (#FF0000),您需要找到与红色相加后生成白色 (0xFFFFFF) 的颜色。当然,您需要做的就是从白色中减去红色并得到青色 (0xFFFFFF - 0xFF0000 = 0x00FFFF)。