如何设置形状的不透明度?

lom*_*mza 77 graphics android

我已经知道如何设置背景图像的不透明度,但我需要设置形状对象的不透明度.

在我的Android应用中,我喜欢这样: 在此输入图像描述

我希望这个黑色区域有点透明,就像这里一样,例如我可以通过这个"欢迎......"看到圆圈:

在此输入图像描述

这是我的形状代码:

<?xml version="1.0" encoding="UTF-8"?>
<shape xmlns:android="http://schemas.android.com/apk/res/android"
    android:id="@+id/shape_my"">
    <stroke android:width="4dp" android:color="#636161" />
    <padding android:left="20dp"
        android:top="20dp"
        android:right="20dp"
        android:bottom="20dp" />
    <corners android:radius="24dp" />
</shape>
Run Code Online (Sandbox Code Playgroud)

我怎样才能做到这一点?

Oct*_*ean 186

通常,您只需在创建形状时定义略微透明的颜色.

您可以通过设置颜色alpha通道来实现这一点.

#FF000000会给你一个坚实的黑色,而#00000000你会得到一个100%透明的黑色(显然它不是黑色).

颜色方案是这样的,#AARRGGBB其中A代表alpha通道,R代表红色,G代表绿色,B代表蓝色.

如果您在Java中设置颜色,则同样适用.它只会看起来像0xFF000000.

UPDATE

在您的情况下,您必须添加一个solid节点.如下.

<?xml version="1.0" encoding="UTF-8"?>
<shape xmlns:android="http://schemas.android.com/apk/res/android"
    android:id="@+id/shape_my"">
    <stroke android:width="4dp" android:color="#636161" />
    <padding android:left="20dp"
        android:top="20dp"
        android:right="20dp"
        android:bottom="20dp" />
    <corners android:radius="24dp" />
    <solid android:color="#88000000" />
</shape>
Run Code Online (Sandbox Code Playgroud)

这里的颜色是半透明的黑色.

  • 在我看来,不透明度只能设置为视图或图像......因为当我在我的LinearLayout中编写android:background ="#88000000"而不是android:background ="@ drawable/shape"时,它的工作原理. (3认同)
  • 它也适用于形状.你试过我上面发布的内容了吗? (2认同)

Pha*_*inh 17

除了将 alpha 转换为十六进制值之外,我们还可以使用颜色状态列表来定义 alpha。

资源/值/colors.xml

<color name="colorPrimary">#0000FF</color>
Run Code Online (Sandbox Code Playgroud)

资源/颜色/color_primary_20.xml

<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android">
    <item android:alpha="0.2" android:color="?attr/colorPrimary" />
</selector>
Run Code Online (Sandbox Code Playgroud)

res/drawable/a_shape.xml

<?xml version="1.0" encoding="utf-8"?>
<shape xmlns:android="http://schemas.android.com/apk/res/android"
    android:shape="oval">
    <stroke
        android:width="2dp"
        android:color="@color/color_primary_20" />
</shape>
Run Code Online (Sandbox Code Playgroud)