Android 如果“标高”属性在棒棒糖制作前的设备上不可用,如何创建一致的材质设计UI

Android 如果“标高”属性在棒棒糖制作前的设备上不可用,如何创建一致的材质设计UI,android,material-design,shadow,Android,Material Design,Shadow,许多材质设计UI(如果不是全部的话)都依赖于放置阴影。但遗憾的是,提升属性只出现在棒棒糖设备上。那么,如果像drop shadows这样简单的东西在棒棒糖之前的构建版本中不可用,那么如何为您的应用程序创建一个统一的UI呢 当然也有一些解决方法,例如创建每个布局的两个版本、使用九个补丁绘图、使用CardView等。但它们都存在某些问题: 如果您不想在受支持的设备上使用棒棒糖API,则需要为每个布局创建两个版本 对于具有不同形状的自定义视图很难实现 每个视图都需要单独的drawables,从而使dr

许多材质设计UI(如果不是全部的话)都依赖于放置阴影。但遗憾的是,提升属性只出现在棒棒糖设备上。那么,如果像drop shadows这样简单的东西在棒棒糖之前的构建版本中不可用,那么如何为您的应用程序创建一个统一的UI呢

当然也有一些解决方法,例如创建每个布局的两个版本、使用九个补丁绘图、使用CardView等。但它们都存在某些问题:

  • 如果您不想在受支持的设备上使用棒棒糖API,则需要为每个布局创建两个版本
  • 对于具有不同形状的自定义视图很难实现
  • 每个视图都需要单独的drawables,从而使drawables文件夹变得杂乱无章
  • 阴影被视为视图本身的一部分,因此具有相同高程的并排放置视图需要使用负边距

  • 那么,创建既适用于棒棒糖又适用于棒棒糖制作前设备的材料设计UI的解决方案是什么呢?

    这可能不是理想的解决方案,但对我来说,在所有Android版本中使用兼容性库都非常有效。我拥有一个带有Android姜饼的Galaxy S,所以它非常古老,当然不支持阴影和涟漪。所以我写了一个库,把我需要的所有东西都备份了。由于Cupcake(或Froyo-我不确定),可以为任意形状渲染实时阴影。涟漪很容易实现。所以是这样的:

  • 每个布局的一个版本
  • 支持任何形状
  • 没有额外的提款权
  • 阴影由布局绘制,而不是阴影投射器
  • 其中一个问题是没有新的渲染线程,因此例如,当活动更改时,ripple动画会延迟

    如果您想了解更多关于我的方法,请查看我的博客和github。
    利用android支持库


    据我所知,支持库不提供高程属性。在本例中,高程工作正常。支持的api级别高于7。CardView标高与正常标高不同。仔细阅读我的问题。我已经列出了将CardView用于立面的问题(第2点和第4点)。