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


86

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

在我的Android应用中,我的代码是这样的: 在此处输入图片说明

并且我想使这个黑色区域有点透明,例如这里,例如,我可以通过“ Welcome ...”看到圆圈:

在此处输入图片说明

这是我的形状代码:

<?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>

我怎样才能做到这一点?


2
形状对象代码在这里会有所帮助。
Octavian A. Damiean 2011年

Answers:


201

通常,创建形状时只需要定义稍微透明的颜色即可。

您可以通过设置颜色Alpha通道来实现。

#FF000000将为您带来纯黑色,而为#00000000您带来100%透明的黑色(显然,它不再是黑色了)。

配色方案如下:#AARRGGBBA代表alpha通道,R代表红色,G代表绿色,B代表蓝色。

如果在Java中设置颜色,则同样适用。那里只会看起来像0xFF000000

更新

在您的情况下,您必须添加一个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>

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


codeviewer.org/view/code:1974 - shape.xml。codeviewer.org/view/code:1975 - layout.xml。codeviewer.org/view/code:1976-.java setOpacity不适用于形状。我尝试将android:background =“#00000000”添加到shape.xml,但没有任何反应。
lomza 2011年

这很奇怪...设置颜色值无关紧要,我的形状完全透明=(
lomza 2011年

3
在我看来,不透明度只能设置为视图或图像...因为当我在LinearLayout中编写android:background =“#88000000”而不是android:background =“ @ drawable / shape”时,它可以工作。
lomza 2011年

2
它也适用于形状。您是否尝试过我上面发布的内容?
Octavian A. Damiean 2011年

1
是的,但是它不起作用。您是否在计算机上尝试了所有这些代码?
lomza 2011年

4

使用下面的代码作为progress.xml:

<layer-list xmlns:android="http://schemas.android.com/apk/res/android">

    <item android:id="@android:id/background">
        <shape>
            <corners android:radius="5dip" />
            <gradient
                    android:startColor="#ff9d9e9d"
                    android:centerColor="#ff5a5d5a"
                    android:centerY="0.75"
                    android:endColor="#ff747674"
                    android:angle="270"
            />
        </shape>
    </item>

    <item android:id="@android:id/secondaryProgress">
        <clip>
            <shape>
                <solid android:color="#00000000" />
            </shape>
        </clip>
    </item>

    <item android:id="@android:id/progress">
        <clip>
            <shape>
                <solid android:color="#00000000" />
            </shape>
        </clip>
    </item>

</layer-list>

哪里:

  • “进度”是拇指之前的当前进度,“ secondaryProgress”是拇指之后的进度。
  • color =“#00000000”是完美的透明度
  • 注意:以上文件来自默认的android res,适用于2.3.7,可在android上找到该文件,位于:frameworks / base / core / res / res / drawable / progress_horizo​​ntal.xml。对于较新的版本,您必须找到与您的android版本相对应的搜索栏的默认可绘制文件。

之后,在包含xml的布局中使用它:

<SeekBar
    android:id="@+id/myseekbar"
    ...
    android:progressDrawable="@drawable/progress"
    />

您还可以通过使用自定义图标seek_thumb.png来自定义拇指:

android:thumb="@drawable/seek_thumb"

1

使用这个,我已经把它写到了我的应用程序中,

<?xml version="1.0" encoding="utf-8"?>
<!--  res/drawable/rounded_edittext.xml -->
<shape xmlns:android="http://schemas.android.com/apk/res/android"
    android:shape="rectangle" android:padding="10dp">
    <solid android:color="#882C383E"/>
    <corners
        android:bottomRightRadius="5dp"
        android:bottomLeftRadius="5dp"
        android:topLeftRadius="5dp"
        android:topRightRadius="5dp"/>
</shape>
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.