前棒棒糖的材料设计

时间:2015-12-11 18:10:41

标签: android material-design elevation

我正在使用材料设计,我遇到了无法解决的问题。这是关于阴影/海拔。

  1. 在这里,我们可以阅读Material Design中的阴影和高程
  2. https://developer.android.com/training/material/shadows-clipping.html#Shadows

    但我们只能在棒棒糖和更高级别使用这些功能。 那么前棒棒糖设备呢?如果我想创建可以在棒棒糖前设备上使用的应用程序,那么我就不能使用,例如

    机器人:海拔= “2DP”

    我是对的吗?

    1. 如果是这样,那么我所能做的就是 - 它正在使用已包含阴影的设计绘图。 这是另一个我无法得到的问题。
    2. 例如,设计师给了我psd一些设计。想象一下它看起来像这样

      enter image description here

      如您所见,面板的上边距为448像素。我们可以使用Photoshop轻松获得此边距值。

      但是当我用它的阴影提取这个面板时,我发现阴影本身在面板顶部需要10 px

      enter image description here

      448px的上边距不计算影子。

      显然,我不能只将panel.png放在我的some_layout.xml上,并将边距顶部设置为448px(298.67dp),因为这个drawable包含阴影。我似乎应该考虑阴影长度,我应该从上边距中扣除这个长度(448-10 = 438px = 292dp)。

      这种推理是否正确?我简直不敢相信。这种方式似乎太复杂了。也许存在更有效的实践?

2 个答案:

答案 0 :(得分:1)

根据Pre Lollipop设备中的shadow

  

对于Android 5.0及更高版本:AppBarLayout会自动提供/给出   布局中的阴影。你也可以增加高程   AppBarLayout由android:elevation =“4dp”

     

对于Pre-Lollipop:您可以使用以下链接:   http://blog.grafixartist.com/add-a-toolbar-elevation-on-pre-lollipop/

     

注意:工具栏也支持使用提升   机器人:海拔= “4DP”

了解详情:Add elevation/shadow on toolbar for pre-lollipop devices

根据Pre Lollipop设备中的elevation

  

你无法用官方方法模仿前Lollipop上的高度。

     

您可以使用一些drawable来在组件中制作阴影。   例如,Google在CardView中使用这种方式。

     

ViewCompat.setElevation(View, int)目前正在创建阴影   仅限API21 +。如果检查后面的代码,则此方法调用:

     

API 21 +:

  @Override
    public void setElevation(View view, float elevation) {
        ViewCompatLollipop.setElevation(view, elevation);
    }
     

API< 21

@Override
public void setElevation(View view, float elevation) {

}

了解详情:How to implement the Material-design Elevation for Pre-lollipop

编辑:正如@ geek90建议访问此回购:http://github.com/navasmdc/MaterialDesignLibrary

答案 1 :(得分:1)

它也使我感到沮丧。我不喜欢用渐变制作阴影。我深入研究文档,发现Lollipop的实现是如何完成的,并从头开始为旧设备编码。

我的实现叫做Carbon。这是一个Material Design实现,支持动态自动阴影。无需添加任何类型的边距或渐变 - 只需指定视图的高程并在所有SDK上获得阴影。

https://github.com/ZieIony/Carbon

在此处详细了解该方法:How to implement the Material-design Elevation for Pre-lollipop