4

如文档所述,您可以通过android:elevation. 这适用于我遇到的所有元素。

但是,如果我想为我在 a 上绘制的形状获得相同(或几乎相同)的行为Canvas怎么办?- 目前我正在玩Paint.setShadowLayer(),但与本机实现相比,结果远非“材料”风格。

是否有任何库或方法可以达到相同的效果?最好通过添加海拔高度?

4

1 回答 1

3

Android Lollipop用于渲染阴影的方法非常简单:

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

您可以将此方法应用于您的形状。我已经在我的库中实现了这些步骤,能够在所有最近的 Android 设备上绘制实时阴影,直至纸杯蛋糕。你可以在这里找到它: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

于 2015-02-16T10:46:29.010 回答