我正在使用材料设计,我遇到了无法解决的问题。这是关于阴影/海拔。
https://developer.android.com/training/material/shadows-clipping.html#Shadows
但我们只能在棒棒糖和更高级别使用这些功能。 那么前棒棒糖设备呢?如果我想创建可以在棒棒糖前设备上使用的应用程序,那么我就不能使用,例如
机器人:海拔= “2DP”
我是对的吗?
例如,设计师给了我psd一些设计。想象一下它看起来像这样
如您所见,面板的上边距为448像素。我们可以使用Photoshop轻松获得此边距值。
但是当我用它的阴影提取这个面板时,我发现阴影本身在面板顶部需要10 px
448px的上边距不计算影子。
显然,我不能只将panel.png放在我的some_layout.xml上,并将边距顶部设置为448px(298.67dp),因为这个drawable包含阴影。我似乎应该考虑阴影长度,我应该从上边距中扣除这个长度(448-10 = 438px = 292dp)。
这种推理是否正确?我简直不敢相信。这种方式似乎太复杂了。也许存在更有效的实践?
答案 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