RippleDrawable遮罩颜色,它有什么作用?

21

当提及Android L的RippleDrawable时,https://developer.android.com/reference/android/graphics/drawable/RippleDrawable.html,有一种方法可以通过蒙版将涟漪效果限制在视图内。蒙版是这样实现的:

<ripple android:color="#ff0000ff">
    <item android:drawable="@drawable/white" />
</ripple>

我们还可以使用掩码来隐藏它

<ripple android:color="#ff0000ff">
    <item android:drawable="@drawable/black" />
</ripple>

正如文档所述,蒙版层并不会在屏幕上被绘制出来,它只是将水波纹效果蒙住。我很好奇,为什么我们要在那里设置一个颜色(白色或黑色或任何颜色)?设置蒙版的颜色是否有重要意义,或者任何值都可以?

希望有人能启发一下...谢谢!

1个回答

12

在为您的掩码使用不透明颜色时--无论是@android:color/white#ff000000还是#ff123456都可以--意味着您正在对与您的可绘制对象相同大小的完全不透明矩形进行遮罩处理。这是涟漪掩码最有效的渲染路径。


谢谢 @alanv。 我也尝试了 #00000000,但遮罩仍然有效。似乎不透明到透明会改变遮罩效果。 - Elye
可能是快速路径中的一个错误(或更可能是ColorDrawable.getOpacity()中的错误)。您在哪个版本上看到这种行为?您尝试过M预览版吗?假设您没有单独的@android:id/mask层,使用透明内容层应该会导致不可见的涟漪效果,因为它被掩蔽在一个空位图上。 - alanv
那么你的意思是颜色不重要,只有透明度很重要? - ATP

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接