首页 文章

可绘制Android上的颜色叠加

提问于
浏览
3

我一直在这里按照这个教程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,我已经搜索过但无法找到如何在drawable上面进行颜色叠加以实现同样的效果并且我的所有尝试都在徒劳的 .

drawable位于RelativeLayout的background属性中 . 我试图在2个分离的ImageView中创建它,一个用于背景图像,一个用于颜色叠加,但是这不适用于对角线样式 .

如何才能为棒棒糖前版本实现这种效果?

1 回答

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

    这就是Jelly Bean的样子 .

    Tested Example

相关问题