【问题标题】:Color overlay on drawable Android可绘制 Android 上的颜色叠加
【发布时间】:2017-01-04 05:57:13
【问题描述】:

我一直在这里 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 位于RelativeLayout 的背景属性中。我试图在 2 个独立的 ImageView 中制作它,一个用于背景图像,一个用于颜色叠加,但这并不能正确应用对角线样式。

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

【问题讨论】:

    标签: android xml android-layout view android-drawable


    【解决方案1】:
    Drawable background = relativeLayout.getBackground();
    background.setColorFilter(getResources().getColor(R.color.colorAccent), PorterDuff.Mode.SRC_IN);
    

    您也可以尝试SRC_ATOPMULTIPLY,具体取决于您想要的效果。

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

    好的,我想我现在更好地理解了您的要求。起初并不完全清楚。

    您不是在询问颜色叠加层,或者更确切地说,这不是您的问题所在。您的问题在于您对 alpha 属性的依赖。

    执行此操作,我已重新排序您的元素,以便彩色形状位于图像顶部,而不是使图像透明,我们使彩色形状的颜色具有指定的 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>
    

    这就是果冻豆中的样子。

    【讨论】:

    • 我已经尝试过你的解决方案,当应用了颜色叠加效果时,事实证明白色的对角线切割也被着色了,一切看起来像一个巨大的 colorAccent 矩形
    • @IvanAlberto 我已经更新了你的答案。我已经测试过了,它会工作。只需将我的图像和颜色替换为您的图像和颜色即可。
    • 太棒了!这就是我在看棒棒糖之前的效果,有趣的方法也很灵活!遗憾的是,我无法对答案投赞成票,但非常感谢!
    猜你喜欢
    • 1970-01-01
    • 2022-07-08
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-10-14
    • 2015-10-27
    相关资源
    最近更新 更多