如何将透明度值添加到调色板的样本中?就像我将颜色(swatch.getRGB())添加到线性布局一样,它显示纯色。而且我不想使用alpha,因为它会使布局中的其他项目也变得透明。
我的代码段:
Palette palette = Palette.from(myBitmap).generate();
Palette.Swatch swatch1 = palette.getDarkVibrantSwatch();
int color = swatch1.getRgb();
thatLayout.setBackgroundColor(color)
答案 0 :(得分:5)
使用android支持实用程序类:
thatLayout.setBackgroundColor(ColorUtils.setAlphaComponent(swatch.getRgb(), alpha));
答案 1 :(得分:3)
这就是我得到透明RGB整数值的方法
Bitmap myDisplayBitmap = BitmapFactory.decodeResource(getResources(), R.drawable.ic_pic);
if (myDisplayBitmap != null && !myDisplayBitmap.isRecycled())
{
Palette palette = Palette.from(myDisplayBitmap).generate();
Palette.Swatch vibrantSwatch = palette.getDarkVibrantSwatch();
/*If vibrantSwatch is null then return 0 otherwise :-) */
int opaqueDarkVibrantColor = vibrantSwatch != null ? vibrantSwatch.getRgb() : 0;
/*Call the method that returns alpha color */
int transparentRGBInt = getColorWithAplha(opaqueDarkVibrantColor, 0.5f)
yourLayout.setBackgroundColor(transparentRGBInt);
// prints something like -2146428888
Log.i("info", String.valueOf(transparentRGBInt));
}
这里是返回alpha值的方法,你需要传递两个params int RGB颜色值和透明度比。
/**
* @param color opaque RGB integer color for ex: -11517920
* @param ratio ratio of transparency for ex: 0.5f
* @return transparent RGB integer color
*/
private int getColorWithAplha(int color, float ratio)
{
int transColor = 0;
int alpha = Math.round(Color.alpha(color) * ratio);
int r = Color.red(color);
int g = Color.green(color);
int b = Color.blue(color);
transColor = Color.argb(alpha, r, g, b);
return transColor ;
}
修改强>
使用此方法从int RGB值
获取Hex值String opHexColor = String.format("#%06X", (0xFFFFFF & opaqueDarkVibrantColor));
答案 2 :(得分:0)
我还没有对此进行过测试,但这样的事情应该可行
private int setAlpha(int color, int alpha) {
alpha = (alpha << 24) & 0xFF000000;
return alpha | color;
}