19

我需要在 ImageView 的边缘创建一个 alpha 渐变。最好只使用 XML。

以图片为例

4

4 回答 4

26

这里的解决方案

图像如下图所示

在此处输入图像描述

代码

  • 准备可绘制的形状

res/drawable/gradient_shape.xml:

<?xml version="1.0" encoding="utf-8"?>
<shape xmlns:android="http://schemas.android.com/apk/res/android">
    <gradient
            android:startColor="#00FFFFFF"
            android:endColor="#FFFFFFFF"
            android:type="linear" />
</shape>

定义布局:activity_main.xml:

<ImageView
    android:id="@+id/photo"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:background="@drawable/photo"
    android:src="@drawable/gradient_shape" />

这里 drawable/photo 只是 drawables 文件夹中的 jpeg

编辑 以获取更多信息,请参阅本教程

于 2013-01-15T20:07:07.637 回答
4
<?xml version="1.0" encoding="utf-8"?>
    <shape xmlns:android="http://schemas.android.com/apk/res/android">
        <gradient
                android:startColor="#00FFFFFF"
                android:endColor="#FFFFFFFF"
                android:type="linear" />
    </shape>

完美的透明性。确保渐变下方的视图实际上在下方,而不仅仅是触摸渐变形状视图。

如果你有主要的 RelativeLayout、 ListViewView(Background:Gradient)

确保渐变视图位于 ListView 的顶部,而不是一侧。如果您的渐变放在一边,它将通过RelativeLayout背景颜色而不是ListView透明。

我希望你明白我想说什么。

于 2014-10-23T14:17:32.200 回答
2

对于透明度:

android:startColor="@null"

或者您可以使用这样的 8 位十六进制颜色:

android:startColor="#FF000000"

前两个 FF 用于颜色的 alpha,00 是完全透明的,FF 是不透明的

于 2019-06-19T09:45:15.847 回答
1

如果您想要无色透明,则需要编写自定义 ImageView。

如果您的背景是静态颜色,这是我首选的解决方法:

<?xml version="1.0" encoding="utf-8"?>
<layer-list xmlns:android="http://schemas.android.com/apk/res/android">
    <item android:drawable="@drawable/your_image"/>

    <item>
        <shape android:shape="rectangle">
            <gradient android:startColor="#00efefef"
                android:endColor="#ffefefef"
                android:angle="270"
                android:type="linear"/>
        </shape>
    </item>
</layer-list>
于 2020-08-07T08:12:08.617 回答