我们如何将系统渲染的阴影应用于视图

时间:2015-04-14 12:06:47

标签: android drawable material-design xml-drawable

我正在尝试为我的观点实现阴影。我给出了一个描述我想要的样本图像,我需要一个谷歌标准方法来实现阴影,我尝试过可绘制的图像但是你知道哪个不是标准方法。 sample image

4 个答案:

答案 0 :(得分:0)

你的意思是这样吗?

定义阴影和剪切视图

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

答案 1 :(得分:0)

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

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

其中app名称空间为:xmlns:app="http://schemas.android.com/apk/res-auto"

答案 2 :(得分:0)

一般情况下,使用 API21 ,您可以使用view.setElevation() method

如果您使用ViewCompat.setElevation() method,则更好。

请注意,它仅在具有API21 +的设备中创建阴影。

如果您想为api <21的设备创建其他视图的高程,则必须使用自定义drawable。

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

答案 3 :(得分:0)

我猜你正在考虑旧设备。

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

  1. 将视图绘制为黑色形状到屏幕外位图。
  2. 使用ScriptIntrisincBlur
  3. 模糊该位图
  4. 使用alpha
  5. 绘制该位图
  6. 在该影子的顶部绘制原始视图。
  7. 您必须根据视图的高程指定模糊半径。您也可以稍微偏移阴影。有关实施细节,请参阅:

    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

相关问题