5

我想要一些像 CSS 渐变这样的效果

-webkit-gradient(linear, left top, left bottom, color-stop(0%,#f0b7a1), color-stop(50%,#8c3310), color-stop(51%,#752201), color-stop(100%,#bf6e4e));

我的 android xml 可绘制代码如下:

<?xml version="1.0" encoding="utf-8"?>
<shape xmlns:android="http://schemas.android.com/apk/res/android"
        android:shape="rectangle">
    <gradient
        android:startColor="@color/transparent"
        android:centerColor="#33b5e5"
        android:endColor="@color/transparent"
        android:angle="90"/>
</shape>

所以我想要实现的是添加这样的百分比:

<gradient
    android:startColor="@color/transparent"
    android:25%="#09c"
    android:centerColor="#33b5e5"
    android:75%="#09c"
    android:endColor="@color/transparent"
    android:angle="90"/>

有什么方法可以做到这一点吗?

4

1 回答 1

0

无法使用百分比来实现,但您可以使用重叠渐变来实现结果。

您需要稍微调整一下scaleY和 颜色以使其与您的示例相匹配,但方法应该很简单。您正在使用垂直偏移将多个透明 -> 颜色 -> 透明渐变分层。

这是它的一个例子,我还添加了一个空白的白色基础层: 重叠的android渐变

这是 XML

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

    <item><shape>
        <gradient
            android:startColor="@android:color/holo_purple"
            android:centerColor="@android:color/transparent"
            android:endColor="@android:color/transparent"
            android:centerY="0.4"
            />
    </shape></item>

    <item><shape>
        <gradient
            android:startColor="@android:color/transparent"
            android:centerColor="@android:color/holo_orange_light"
            android:endColor="@android:color/transparent"
            android:centerY="0.4"
            />
    </shape></item>

    <item><shape>
        <gradient
            android:startColor="@android:color/transparent"
            android:centerColor="@android:color/holo_blue_light"
            android:endColor="@android:color/transparent"
            android:centerY="0.7"
            />
    </shape></item>

    <item><shape>
        <gradient
            android:startColor="@android:color/transparent"
            android:centerColor="@android:color/transparent"
            android:endColor="@android:color/holo_green_dark"
            />
    </shape></item>
</layer-list>
于 2020-07-29T21:13:47.880 回答