Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/231.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

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/svn/5.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
在java/android中更改int颜色不透明度_Java_Android_Int_Transparency_Alpha - Fatal编程技术网

在java/android中更改int颜色不透明度

在java/android中更改int颜色不透明度,java,android,int,transparency,alpha,Java,Android,Int,Transparency,Alpha,我正在尝试使用下一个代码更改主题颜色的不透明度: TypedValue typedValueDrawerSelected = new TypedValue(); getTheme().resolveAttribute(R.attr.colorPrimary, typedValueDrawerSelected, true); int colorDrawerItemSelected = typedValueDrawerSelected.data; 我希望选中的颜色保持相同的颜色,但其alpha值应

我正在尝试使用下一个代码更改主题颜色的不透明度:

TypedValue typedValueDrawerSelected = new TypedValue();
getTheme().resolveAttribute(R.attr.colorPrimary, typedValueDrawerSelected, true);
int colorDrawerItemSelected = typedValueDrawerSelected.data;
我希望选中的
颜色保持相同的颜色,但其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);
//设置新颜色

int newColor=(colorPrimary&0x00FFFFFF)|(0x40这还不够吗

colorDrawerItemSelected = (colorDrawerItemSelected & 0x00FFFFFF) | 0x40000000;
它保存颜色值并将alpha设置为最大值的25%


颜色int中的第一个字节负责透明度:0-完全透明,255(0xFF)-不透明。在第一部分(&)操作中,我们将第一个字节设置为0,其他字节保持不变。在第二部分中,我们将第一个字节设置为0x40,即0xFF(255/4)的25%≈ 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.setAlphaComponent(color,alpha)将alpha值设置为易于使用的颜色。ColorUtils类位于android支持库中。

也谢谢:)但我使用了Sergey的代码,因为它更简单。您能给我一个链接,说明如何使用“&”和“|”的组合吗。我是Android的新手,我想知道如何理解它(我以前也看到过这种符号)。@Dahnark这是位操作“&”-位和。“|”-按位或。@Dahnark很有可能。它只是ColorUtils.setalphacomponent谢谢!这应该是目前公认的答案。