Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/visual-studio-2008/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Android 提取背景颜色的材质设计API_Android_Android Layout - Fatal编程技术网

Android 提取背景颜色的材质设计API

Android 提取背景颜色的材质设计API,android,android-layout,Android,Android Layout,有没有Android的API可以让你提取主要的背景色来创建一个透明的覆盖层,这样我就可以在上面写文本了 例如,如果4幅图像的主色为棕色,则覆盖层为透明棕色 我希望创建类似下图的内容,以便在图片顶部添加信息。这是从谷歌播放音乐 谢谢您可以使用alpha来实现这样的透明度。因此,定义颜色时,通常使用#RRGGBB(红-绿-蓝),但也可以使用#AARRGGBB,在这里还可以指定alpha。 #00RRGGBB是完全透明的,而#80RRGGBB就像是半透明的。您可以选择这样的颜色并将其用作背景。可能有

有没有Android的API可以让你提取主要的背景色来创建一个透明的覆盖层,这样我就可以在上面写文本了

例如,如果4幅图像的主色为棕色,则覆盖层为透明棕色

我希望创建类似下图的内容,以便在图片顶部添加信息。这是从谷歌播放音乐


谢谢

您可以使用alpha来实现这样的透明度。因此,定义颜色时,通常使用#RRGGBB(红-绿-蓝),但也可以使用#AARRGGBB,在这里还可以指定alpha。

#00RRGGBB
是完全透明的,而
#80RRGGBB
就像是半透明的。您可以选择这样的颜色并将其用作背景。

可能有一种解决方案:

我假设您将4个imageview放在一个RelativeLayout(称为parentLyt)中

现在,您可以获得4幅图像的位图:

Bitmap bitmap = view.getDrawingCache();
并在此位图上使用调色板API:

Palette colorPalette = Palette.generateAsync(bitmap, new Palette.PaletteAsyncListener() {
     public void onGenerated(Palette palette) {
         int color = palette.getLightVibrantSwatch().getRgb();
         // Do something with colors...just for example : 
         // Convert to hex format and add 88 alpha channel "#88RRGGBB"
         String transparentColor = String.format("#88%06X", 0xFFFFFF & intColor);
         // Convert back to Color object aka int
         int finalColor = Color.parseColor(transparentColor);
     }
});

我知道alpha透明度,但我想问的是一个函数,用于检索构成背景的图像的主色。然后将该颜色用作图像的透明前景。很抱歉,如果问题不清楚,我会更新它。好的,'主要'有区别:)你应该看看新的,这是这个API功能的总结谢谢!!这正是我想要的:)我创建了一个答案,这是一个简单的例子,说明如何使用它来解决你的pb;)
Palette colorPalette = Palette.generateAsync(bitmap, new Palette.PaletteAsyncListener() {
     public void onGenerated(Palette palette) {
         int color = palette.getLightVibrantSwatch().getRgb();
         // Do something with colors...just for example : 
         // Convert to hex format and add 88 alpha channel "#88RRGGBB"
         String transparentColor = String.format("#88%06X", 0xFFFFFF & intColor);
         // Convert back to Color object aka int
         int finalColor = Color.parseColor(transparentColor);
     }
});