android - 如何将 2 个 imageViews 放在另一个之上,将它们混合在一起?

标签 android android-imageview blending

背景

我有 2 个 imageView,一个在另一个之上,它们一起有一个动画。在此动画期间,我需要使用“相乘”效果将它们相互融合。

类似于 this question 的内容这是关于颜色的,但与图像有关(在我的例子中是 VectorDrawable,但如果需要我可以使用 PNG 代替)。

这里有一个草图来演示我想做什么:

enter image description here

请注意,重叠的图像部分比箭头的原始颜色更暗。

问题

目前我还没有找到解决办法。我当然知道如何将一个 View 放在另一个 View 之上,但是我找不到根据另一个更改位图的一部分颜色的方法。

我发现了什么

我尝试使用:

imageView.getDrawable().setColorFilter(..., PorterDuff.Mode.MULTIPLY)

对于两个 ImageView,但它似乎不起作用。它所做的实际上是改变 imageView 的整个颜色,与我作为参数提供的颜色合并。

这是有道理的,因为它只是一个colorFilter,类似于tint。

我还为每个 ImageView 尝试了 alpha,但这也意味着 ImageView 的一部分(不重叠的部分)将具有半透明颜色。

理论上我可以得到它们每个的位​​图,然后对结果执行过滤,但这不切实际,因为我需要在两者之间的动画中显示它。

问题

如何混合 2 个 ImageView ?

最佳答案

既然您使用的是 VectorDrawable,您是否考虑过为可绘制对象而不是 View 设置动画?

https://developer.android.com/reference/android/graphics/drawable/AnimatedVectorDrawable.html

关于android - 如何将 2 个 imageViews 放在另一个之上,将它们混合在一起?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43208290/

相关文章:

android - 将两个图像与乘法和 % 不透明度混合在一起

algorithm - 是否有一种颜色混合算法可以像混合真实颜色一样工作?

c++ - 无法进行混合工作

android - 如何在mysql数据库中上传图片链接的android中显示图片

android - 拖动到另一侧时翻转 RelativeLayout 内容

android - setVisibility 在 android 中为 null

android - 防止 ImageView 在父布局范围之外绘制

Android - 在 list 中声明小部件

android - 从 MainActivity 刷新 fragment View

java - android.app.RemoteServiceException : at android. app.ActivityThread$H.handleMessage 发送通知时