【问题标题】:If my Android project only has v21 layouts, will it support older devices?如果我的 Android 项目只有 v21 布局,它会支持旧设备吗?
【发布时间】:2017-05-26 08:20:06
【问题描述】:

假设我的 Android 项目中有以下布局资源文件:

activity_create_group.xml (v21)
activity_create_group.xml (large-v21)
activity_create_group.xml (small-v21)
activity_create_group.xml (xlarge-v21)
activity_create_group.xml (xlarge-land-v21)

这是否意味着低于 API 21 的设备会崩溃?或者通过自动删除某些特定于 API 的功能,例如 android:elevation="4dp" (v21) 和 android:fontFamily="sans-serif-light" (v16),此文件是否仍会支持旧设备?

对此有何判决?

如果我有这些附加功能,并且还想支持旧操作系统,我还应该包括:

activity_create_group.xml (v16)
activity_create_group.xml (large-v16)
activity_create_group.xml (small-v16)
activity_create_group.xml (xlarge-v16)
activity_create_group.xml (xlarge-land-v16)

...和:

activity_create_group.xml
activity_create_group.xml (large)
activity_create_group.xml (small)
activity_create_group.xml (xlarge)
activity_create_group.xml (xlarge-land)

似乎有点矫枉过正。此外,还有很多繁琐的复制粘贴。有没有常见的批处理脚本以这种方式生成布局文件? Android Studio 能处理这个吗?例如,Android 开发工作室的 UI 团队如何处理所有这些资源文件?

降级时,我通常必须更改几个功能,例如更改以下内容:

android:paddingEnd="10dp"
android:paddingStart="25dp"

...到:

android:paddingRight="10dp"
android:paddingLeft="25dp"
android:paddingEnd="10dp"
android:paddingStart="25dp"

如果我真的想支持每一个设备和每一个特定于 API 的功能,你会考虑为每个 Activity 维护 15 个布局文件。我只是不能接受这一点,但鉴于我从未在一家可能对此非常敏感的机构工作过,我不知道在哪里可以找到这种信息。

总之,我的问题是第一个... 如果我只提供上面提供的 v21 布局文件,哪些设备将不受支持?

【问题讨论】:

    标签: android xml android-studio layout material-design


    【解决方案1】:

    只要不影响 UI 尺寸并且无需担心额外的样式更改(例如高度),那么您就可以安全地继续编写单个布局文件,而无需根据 API 对其进行分类。

    IDE 会向您发出有关 API 的警告,以便您可以使用该 API 的替代项,例如使用 9 补丁阴影在较低的 API 中创建高程效果,但如果您的应用可以在没有这些额外的设计奢侈品的情况下运行> 那么它总是建议使用单个默认布局文件。

    paddingStart & paddingLeftmarginStart & marginLeft 而言,将这两个属性都包含在单个xml 中而不是创建两个具有相关属性的xml 并没有什么坏处。

    【讨论】:

    • 好的,即使我将那些设计奢侈品包含在未根据 API 分类的布局文件中,这不会对无法处理它们的设备造成干扰吗?这些只是对开发人员的警告,这是我想要确认的。干杯。
    【解决方案2】:

    尝试使用android虚拟设备模拟器测试它们,创建一个虚拟设备,例如带有冰淇淋三明治的nexus 4并调试应用程序。

    【讨论】:

    • 要是我能在这个老家伙的联想上进行虚拟化就好了;P
    • Intel Core i5-6300 CPU @ 2.40 GHz 64 位 Windows 7 12.0 GB RAM
    • @santafebound 您可以尝试在启动时启用虚拟化,然后从 SDK 管理器安装 intel haxm。谷歌上提供了前者的步骤。
    • 您的 lenovo 能够进行虚拟化 @santafebound ,按照 Mohammed 的建议在 bios 中启用虚拟化
    猜你喜欢
    • 1970-01-01
    • 2011-07-30
    • 1970-01-01
    • 2019-03-14
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-08-08
    • 2016-07-17
    相关资源
    最近更新 更多