可绘制对象上的颜色叠加 Android

Color overlay on drawable Android

我一直在关注本教程Medium - Diagonal Cut View以获得对角线视图效果

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

<item android:drawable="@color/colorPrimary"  />

<item>
    <bitmap
        android:src="@drawable/bebe"
        android:gravity="center"
        android:alpha="0.1" />
</item>

<item android:top="260dp"
    android:bottom="-100dp"
    android:left="0dp"
    android:right="-260dp">
    <rotate
        android:fromDegrees="-10"
        android:pivotX="0%"
        android:pivotY="100%">
        <shape
            android:shape="rectangle">
            <solid
                android:color="@android:color/white"/>
        </shape>
    </rotate>
</item>
</layer-list>

到目前为止,代码几乎是一样的,也实现了效果,但只适用于 Lollipop+,我搜索过但找不到如何在可绘制对象上叠加颜色来实现同样的效果,所有我的尝试是徒劳的。

可绘制对象进入 RelativeLayout 的背景 属性。我试图在 2 个单独的 ImageView 中制作它,一个用于背景图像,一个用于颜色叠加层,但这并没有正确应用对角线样式。

棒棒糖之前的版本如何实现这种效果?

Drawable background = relativeLayout.getBackground();
background.setColorFilter(getResources().getColor(R.color.colorAccent), PorterDuff.Mode.SRC_IN);

您也可以根据需要的效果尝试SRC_ATOPMULTIPLY

=========编辑========================

好的,我想我现在更明白你在问什么了。一开始不是很清楚。

您并不是在询问每个人的颜色叠加层,或者更确切地说,这不是您的问题所在。你的问题出在你对 alpha 属性的依赖上。

执行此操作,我已对您的元素重新排序,以便彩色形状位于图像顶部,而不是使图像透明,我们使彩色形状的颜色具有指定的 alpha 字节。您可以根据需要更改颜色和透明度。

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

    <item>
        <bitmap
            android:gravity="center"
            android:src="@drawable/muse15fence_750"/>
    </item>
    
    <item>
        <shape android:shape="rectangle">
            <solid android:color="#cc3F51B5"/>
        </shape>
    </item>



    <item
        android:bottom="-100dp"
        android:left="0dp"
        android:right="-260dp"
        android:top="260dp">
        <rotate
            android:fromDegrees="-10"
            android:pivotX="0%"
            android:pivotY="100%">
            <shape
                android:shape="rectangle">
                <solid
                    android:color="@android:color/white"/>
            </shape>
        </rotate>
    </item>
</layer-list>

这就是果冻豆中的样子。