如何在画布绘制元素中添加材质风格的阴影?

时间:2015-02-13 10:01:37

标签: android canvas material-design shadow android-elevation

正如文档所述,您可以按android:elevation添加和自定义材质设计阴影样式。这适用于我遇到的所有元素。

但是如果我想在Canvas上绘制的形状获得相同(或几乎相同)的行为呢? - 目前我正在玩Paint.setShadowLayer(),但与原生实施相比,结果远非“材料”式。

是否有任何库或方法可以达到同样的效果?最好通过增加高程水平?

1 个答案:

答案 0 :(得分:3)

方法 Android Lollipop正在使用渲染阴影非常简单:

  • 绘制视图的黑色形状
  • 使用ScriptIntrisincBlur
  • 模糊它
  • 在视图下方绘制

您可以将此方法应用于形状。我已经在我的库中实现了这些步骤,能够将所有最近的Androids上的实时阴影绘制到蛋糕上。您可以在此处找到它:https://github.com/ZieIony/Carbon/blob/master/carbon/src/main/java/carbon/widget/FrameLayout.java#L207

编辑:链接到Android阴影绘图代码: https://github.com/android/platform_frameworks_base/blob/4d9ffdf95237c4ee59514c678fea6ff157e0eee3/libs/hwui/OpenGLRenderer.cpp#L2507