如何将 material 样式的阴影添加到 canvas 绘制的元素?
How to add material-style shadow to canvas drawn elements?
如文档所述,您可以通过 android:elevation
添加和自定义 material 设计阴影样式。这适用于我遇到的所有元素。
但是如果我想获得与我在 Canvas
上绘制的形状相同(或几乎相同)的行为怎么办? - 目前我正在使用 Paint.setShadowLayer()
,但与本机实现相比,结果远非 'material' 风格。
是否有任何库或方法可以达到相同的效果?最好通过添加海拔级别?
棒棒糖使用渲染阴影的方法Android非常简单:
- 绘制黑色的视图形状
- 使用 ScriptIntrisincBlur 对其进行模糊处理
- 将其绘制在视图下方
您可以将此方法应用于您的形状。我已经在我的库中实施了这些步骤,能够在所有最近的 Android 上绘制实时阴影,直至纸杯蛋糕。您可以在这里找到它:https://github.com/ZieIony/Carbon/blob/master/carbon/src/main/java/carbon/widget/FrameLayout.java#L207
编辑:link 至 Android 阴影绘图代码:
https://github.com/android/platform_frameworks_base/blob/4d9ffdf95237c4ee59514c678fea6ff157e0eee3/libs/hwui/OpenGLRenderer.cpp#L2507
如文档所述,您可以通过 android:elevation
添加和自定义 material 设计阴影样式。这适用于我遇到的所有元素。
但是如果我想获得与我在 Canvas
上绘制的形状相同(或几乎相同)的行为怎么办? - 目前我正在使用 Paint.setShadowLayer()
,但与本机实现相比,结果远非 'material' 风格。
是否有任何库或方法可以达到相同的效果?最好通过添加海拔级别?
棒棒糖使用渲染阴影的方法Android非常简单:
- 绘制黑色的视图形状
- 使用 ScriptIntrisincBlur 对其进行模糊处理
- 将其绘制在视图下方
您可以将此方法应用于您的形状。我已经在我的库中实施了这些步骤,能够在所有最近的 Android 上绘制实时阴影,直至纸杯蛋糕。您可以在这里找到它:https://github.com/ZieIony/Carbon/blob/master/carbon/src/main/java/carbon/widget/FrameLayout.java#L207
编辑:link 至 Android 阴影绘图代码: https://github.com/android/platform_frameworks_base/blob/4d9ffdf95237c4ee59514c678fea6ff157e0eee3/libs/hwui/OpenGLRenderer.cpp#L2507