Android读取值文件夹的顺序是什么?

时间:2015-03-17 16:40:10

标签: android android-resources

在我的Android项目中,我有多个值文件夹,其中包含-hdpi-xhdpi-sw720dp等扩展程序。在所有这些文件夹中,我有dimens.xml,并且该xml文件中的值具有相同的名称。如果我有一个宽度为720 dp的设备并被视为xhdpi设备(作为示例),那么Android从哪个文件夹中读取值?另外,一般来说,Android如何确定不同值文件夹的优先级?

1 个答案:

答案 0 :(得分:1)

  

此外,一般来说,Android如何确定不同值文件夹的优先级?

一般来说,Android从具有相关资源的资源集中获取资源,并具有最重要的不同限定符。在这里,“最重要”意味着“在this Web page上的表2中出现最高”,“不同”意味着“没有其他人具有该特定限定符”。虽然屏幕尺寸和密度都有些奇怪。

  

我有多个带有扩展名的值文件夹,例如-hdpi,-xhdpi和-sw720dp。在所有这些文件夹中,我都有dimens.xml和该xml文件中值的相同名称。

恕我直言,这是一个严重的代码味道。使用与密度无关的度量单位(例如dp),在这种情况下,您不需要基于屏幕密度的不同维度资源。根据屏幕大小设置不同的是合理的(例如,平板电脑上的边距更大),尽管混合类似于res/values/dimens.xmlres/values-sw720dp/values.xml

  

如果我的设备宽度为720 dp且被视为xhdpi设备(例如),那么Android从哪个文件夹中读取值?

表2中的

-swNNNdp高于-hdpi-xhdpi,因此应首先考虑它。请注意,大小资源集限定符(例如-large-swNNNdp)适用于指定大小或更大。因此,如果您的设备的宽度最小为720dp或更多,则应使用-sw720dp资源。