我知道我可以通过添加十六进制的 alpha 通道 (#AARRGGBB) 来设置不透明度,但如果我想使用 color.xml 中的值,而我不想添加不透明度,该怎么办?
例如,我在 color.xml 中使用深蓝色 #074EB2,如下所示:
<color name="DarkBlue">#074EB2</color>
Run Code Online (Sandbox Code Playgroud)
现在,我有一个带有边框的自定义按钮背景。我希望边框使用这种深蓝色,但添加了不透明度。该按钮看起来像这样:
<?xml version="1.0" encoding="utf-8"?>
<shape xmlns:android="http://schemas.android.com/apk/res/android"
android:shape="rectangle">
<stroke android:width="1dp" android:color="@color/DarkBlue"/>
<corners android:radius="2dp"/>
</shape>
Run Code Online (Sandbox Code Playgroud)
如何添加不透明度?我需要向 color.xml 添加不透明度的新值吗?IE,<color name="DarkBlueTransparent">#80074EB2</color>?我看到的问题是它不可扩展 - 如果我有其他地方需要这种颜色 80% 不透明度怎么办?90%?我的 color.xml 文件会根据我想要的透明程度而爆炸出不同的值。
您无法在 xml 中执行动态不透明度。但是你可以在java端动态应用alpha。
使用此方法将 Alpha 应用于您的颜色。
public static int getColorWithAlpha(int yourColor, int alpha) {
int red = Color.red(yourColor);
int blue = Color.blue(yourColor);
int green = Color.green(yourColor);
return Color.argb(alpha, red, green, blue);
}
Run Code Online (Sandbox Code Playgroud)
现在通过调用该方法获取带有 alpha 的颜色
blueWithAlpha = getColorWithAlpha(darkBlue, 120);
Run Code Online (Sandbox Code Playgroud)
120 是你的 alpha 级别
Alpha 级别必须在 0 到 225 之间
现在将颜色应用到按钮上
mButton.setBackgroundColor(blueWithAlpha);
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
1606 次 |
| 最近记录: |