2017-05-26 41 views
2

说我在我的Android项目的以下布局资源文件:如果我的Android项目只有v21布局,它是否会支持较旧的设备?

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)?

这是什么判决?

如果我有这些额外的功能,同时还需要支持旧OS”我应该还包括:

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开发工作室的用户界面团队是如何处理所有这些资源文件的?

当降级我通常要改变一些功能,如更改如下:

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

...到:

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

如果我真的想支持的每个设备,每个API特定功能,您正在为每个活动维护15个布局文件。我不能接受这一点,但鉴于我从来没有在一家可能非常肛门的机构工作,我不确定在哪里可以找到这类信息。

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

回答

2

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

IDE会警告您有关API的信息,以便您可以使用该API的替代项,例如,使用9个修补程序阴影在较低的API中创建海拔效果,但是如果您的应用程序可以在没有这些额外设计的情况下工作,建议使用单个默认布局文件。

并为paddingStart & paddingLeftmarginStart & marginLeft点存在既包括单XML属性,而不是创建两个个XML相关的属性没有坏处。

+0

好的,即使我将这些设计奢侈品包含在未根据API分类的布局文件中,这不会对无法处理它们的设备造成干扰?这些仅仅是对开发者的警告是我想要确认的。干杯。 – santafebound

1

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

+0

如果只有我在这个老朋友的联想虚拟化; P – santafebound

+0

大声笑,你能告诉我你的联想的规格吗? –

+0

只为了lols? – santafebound