【问题标题】:how we can apply system rendered shadows to a view我们如何将系统渲染的阴影应用到视图
【发布时间】:2015-04-14 12:06:46
【问题描述】:

我正在尝试为我的视图实现阴影。我已经给出了一个描述我想要的示例图像,我需要一个用于实现阴影的谷歌标准方法,我尝试过使用可绘制图像,但你知道这不是标准方法。

【问题讨论】:

  • 什么是“系统渲染阴影”?

标签: android drawable material-design xml-drawable


【解决方案1】:

你的意思是这样的?

定义阴影和剪切视图

https://developer.android.com/training/material/shadows-clipping.html

【讨论】:

    【解决方案2】:

    您必须使用CardView 作为视图容器(在官方支持库中)并设置属性:

        app:cardElevation="4dp" // shadow
        app:cardUseCompatPadding="true">
    

    app 命名空间在哪里:xmlns:app="http://schemas.android.com/apk/res-auto"

    【讨论】:

      【解决方案3】:

      我猜您正在考虑使用旧设备。

      您可以使用 RenderScript 模糊和图层合成来渲染阴影。此方法从 Android Froyo 开始可用。从头开始创建这样的阴影非常容易。你必须:

      1. 将视图绘制为黑色形状到屏幕外位图。
      2. 使用 ScriptIntrisincBlur 模糊该位图
      3. 使用 alpha 绘制该位图
      4. 在该阴影之上绘制原始视图。

      您必须根据 View 的高度指定模糊半径。你也可以稍微抵消一下阴影。实现细节见:

      https://github.com/ZieIony/Carbon/blob/master/carbon/src/main/java/carbon/shadow/ShadowGenerator.java

      和

      https://github.com/ZieIony/Carbon/blob/master/carbon/src/main/java/carbon/widget/LinearLayout.java#L128

      【讨论】:

        【解决方案4】:

        通常,通过 API21,您可以使用view.setElevation() 方法。
        最好使用ViewCompat.setElevation() 方法。

        注意,它只会在 API21+ 的设备中创建阴影。
        如果您想使用 api

        目前在所有设备中支持提升的唯一标准视图是CardView。 在这种情况下,您可以使用setCardElevation() 方法。

        【讨论】:

          猜你喜欢
          • 2015-06-02
          • 1970-01-01
          • 1970-01-01
          • 2013-07-06
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多