如果我的Android项目只有v21布局,它是否会支持较旧的设备?

时间:2017-05-26 08:20:06

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

假设我的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特定功能,那么您需要为每个活动维护15个布局文件。我不能接受这一点,但考虑到我从未在一个可能对此非常肛门的机构工作,我不知道在哪里可以找到这种信息。

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

2 个答案:

答案 0 :(得分:2)

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

IDE警告您有关API的信息,以便您可以使用该API的替代项,例如使用9补丁阴影在较低的API中创建提升效果,但如果您的应用可以在没有这些额外的设计奢侈品的情况下工作然后总是建议使用单个默认布局文件。

至于paddingStart& paddingLeftmarginStart& marginLeft将单个xml中的属性包含在内而不是创建具有相关属性的两个xmls是没有害处的。

答案 1 :(得分:1)

尝试使用android虚拟设备模拟器测试它们,创建一个虚拟设备,例如nexus 4 with ice cream sandwich,并将应用程序debbug到它。