在 java/android 中更改 int 颜色不透明度
Change int color opacity in java/android
我正在尝试使用下一个代码更改主题颜色的不透明度:
TypedValue typedValueDrawerSelected = new TypedValue();
getTheme().resolveAttribute(R.attr.colorPrimary, typedValueDrawerSelected, true);
int colorDrawerItemSelected = typedValueDrawerSelected.data;
我希望 colorDrawerItemSelected
保持相同的颜色,但其 alpha 应为 25%。
我找到了一些从 imageView 获取 rgb 颜色的解决方案,但我没有 imageView。
感谢您的宝贵时间。
int[] attrs = new int[] { android.R.attr.colorPrimary };
TypedArray a = obtainStyledAttributes(attrs);
int colorPrimary = a.getColor(0, 0);
a.recycle();
现在您可以通过更新最高 8 位来更改 colorPrimary
的不透明度:
//set new color
int newColor = (colorPrimary & 0x00FFFFFF) | (0x40 << 24);
这还不够吗?
colorDrawerItemSelected = (colorDrawerItemSelected & 0x00FFFFFF) | 0x40000000;
它保存颜色值并将 alpha 设置为最大值的 25%。
color int 中的第一个字节负责透明度:0 - 完全透明,255 (0xFF) - 不透明。在第一部分(“&”操作)中,我们将第一个字节设置为 0 并保持其他字节不变。在第二部分中,我们将第一个字节设置为 0x40,即 0xFF 的 25%(255 / 4 ≈ 64)。
我在我的应用程序中使用了这种方法:
private int getTransparentColor(int color){
int alpha = Color.alpha(color);
int red = Color.red(color);
int green = Color.green(color);
int blue = Color.blue(color);
// Set alpha based on your logic, here I'm making it 25% of it's initial value.
alpha *= 0.25;
return Color.argb(alpha, red, green, blue);
}
您还可以使用支持库中的 ColorUtils.alphaComponent(color, alpha)。
使用 ColorUtils.setAlphaComponent(color, alpha) 将 alpha 值设置为简单的颜色。 ColorUtils class 在 android 支持库中。
我正在尝试使用下一个代码更改主题颜色的不透明度:
TypedValue typedValueDrawerSelected = new TypedValue();
getTheme().resolveAttribute(R.attr.colorPrimary, typedValueDrawerSelected, true);
int colorDrawerItemSelected = typedValueDrawerSelected.data;
我希望 colorDrawerItemSelected
保持相同的颜色,但其 alpha 应为 25%。
我找到了一些从 imageView 获取 rgb 颜色的解决方案,但我没有 imageView。
感谢您的宝贵时间。
int[] attrs = new int[] { android.R.attr.colorPrimary };
TypedArray a = obtainStyledAttributes(attrs);
int colorPrimary = a.getColor(0, 0);
a.recycle();
现在您可以通过更新最高 8 位来更改 colorPrimary
的不透明度:
//set new color
int newColor = (colorPrimary & 0x00FFFFFF) | (0x40 << 24);
这还不够吗?
colorDrawerItemSelected = (colorDrawerItemSelected & 0x00FFFFFF) | 0x40000000;
它保存颜色值并将 alpha 设置为最大值的 25%。
color int 中的第一个字节负责透明度:0 - 完全透明,255 (0xFF) - 不透明。在第一部分(“&”操作)中,我们将第一个字节设置为 0 并保持其他字节不变。在第二部分中,我们将第一个字节设置为 0x40,即 0xFF 的 25%(255 / 4 ≈ 64)。
我在我的应用程序中使用了这种方法:
private int getTransparentColor(int color){
int alpha = Color.alpha(color);
int red = Color.red(color);
int green = Color.green(color);
int blue = Color.blue(color);
// Set alpha based on your logic, here I'm making it 25% of it's initial value.
alpha *= 0.25;
return Color.argb(alpha, red, green, blue);
}
您还可以使用支持库中的 ColorUtils.alphaComponent(color, alpha)。
使用 ColorUtils.setAlphaComponent(color, alpha) 将 alpha 值设置为简单的颜色。 ColorUtils class 在 android 支持库中。