【问题标题】:How to add material-style shadow to canvas drawn elements?如何为画布绘制的元素添加材质风格的阴影?
【发布时间】:2015-02-13 10:01:36
【问题描述】:

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

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

是否有任何库或方法可以实现相同的效果?最好加上高程?

【问题讨论】:

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


    【解决方案1】:

    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

    【讨论】:

    猜你喜欢
    • 2019-11-21
    • 2020-03-16
    • 1970-01-01
    • 2016-04-15
    • 2022-01-10
    • 1970-01-01
    • 1970-01-01
    • 2020-09-14
    • 2012-12-07
    相关资源
    最近更新 更多