【问题标题】:Material Design and devices restrictions材料设计和设备限制
【发布时间】:2015-08-22 16:58:59
【问题描述】:

我一直想知道 Material Design 在 Android 应用上的使用以及它所暗示的设备限制。

我已经为 Android 进行了开发,但此时主题的使用似乎真的很混乱(appcompat 之类的,我从来没有真正了解过)

但显然上届谷歌 i/o 带来了一些工具来帮助在 Android 应用中使用 Material Design。

那么,我的问题是,如何正确使用 Material Design 元素而不将您的应用限制在很多设备上?

(我希望我说得够清楚)

【问题讨论】:

  • @slanecek 我已经看过了。我似乎没有回答我的问题。我想知道 Material Design 是否会限制用户的旧设备。还是谢谢
  • 如果您只需要棒棒糖前设备中材料设计主题的外观,您可以使用支持库中的 appCompat 主题,如 <style name="AppTheme.Base" parent="Theme.AppCompat.NoActionBar"> <item name="colorPrimary">@color/primary</item> <item name="colorPrimaryDark">@color/primary_dark</item> <item name="colorAccent">@color/accent</item> </style> 或者您可以使用托管在 github 中的库之一,如果你想要像涟漪效应https://github.com/ZieIony/Carbon 这样的功能,看看这个库
  • 感谢@sony,但我只想使用谷歌的库。这是否意味着棒棒糖之前的设备将无法运行我的应用程序?
  • 可能是的,谷歌提供的支持旧版本的唯一方法是使用 AppCompact 库。

标签: android material-design


【解决方案1】:

使用Design Appcompat 库实现一些Material 功能以在Lollypop 之前的设备上工作,在Lollypop+ 上使用真实的Material 样式和组件。

这是通过使用资源限定符 (-v21) 提供替代资源 (styles | themes.xml, layouts etc.) 来完成的。

在values-v21/themes.xml你放

<style name="MyAppBaseTheme" parent="android:Theme.Material">
    <item name="android:colorPrimary">@color/primary</item>
    ...

在values/themes.xml你放

<style name=”MyAppBaseTheme” parent=”Theme.AppCompat”>
    <item name=”colorPrimary”>@color/primary</item>
    ...
<style name=”MyAppTheme” parent=”MyAppBaseTheme”>  
    <!-- here you put the version-independent stuff -->

通过这种方式,您可以巧妙地利用主题覆盖,只需交换与材质相关的部分并一次性定义其他所有内容。

注意非 Appcompat 版本中正确的 android: 前缀。这是因为在 5+ 中,这些属性是 sdk 的一部分,而在 Appcompat 中,它们是自定义的,与您定义的任何样式相同的类公民。

阅读guide on maintaining compatibility,它将告诉您有关提供替代样式资源以及为 5.0 后和前 5.0 拆分代码库的信息

UPD关于你在 cmets 中的问题,他们也能展示材料设计吗?

Here is a breakdown of support library version and flavours,v* 表示运行上述库所需的最低 Android 版本。例如。通用 v7 支持库将为您提供对[a subset of] Material 组件和设备样式的支持,一直到 android 2.1

【讨论】:

  • 好的,谢谢。嗯,这有点复杂!不应该更容易吗? :( 所以,再次,如果我得到了这个,我需要根据不同用户的操作系统版本来了解我的应用程序的代码..
  • 是的,你这样做了 :) 这就是向后兼容的代价。这并不复杂。或者你可以放弃对 pre-5.0 操作系统的支持,等到它成为主流版本。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-02-05
  • 1970-01-01
  • 1970-01-01
  • 2016-01-31
  • 2015-04-17
  • 1970-01-01
相关资源
最近更新 更多