可绘制对象上的颜色叠加 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_ATOP
或MULTIPLY
。
=========编辑========================
好的,我想我现在更明白你在问什么了。一开始不是很清楚。
您并不是在询问每个人的颜色叠加层,或者更确切地说,这不是您的问题所在。你的问题出在你对 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>
这就是果冻豆中的样子。
我一直在关注本教程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_ATOP
或MULTIPLY
。
=========编辑========================
好的,我想我现在更明白你在问什么了。一开始不是很清楚。
您并不是在询问每个人的颜色叠加层,或者更确切地说,这不是您的问题所在。你的问题出在你对 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>
这就是果冻豆中的样子。