在我的Android项目中,我有多个值文件夹,其中包含-hdpi
,-xhdpi
和-sw720dp
等扩展程序。在所有这些文件夹中,我有dimens.xml
,并且该xml文件中的值具有相同的名称。如果我有一个宽度为720 dp的设备并被视为xhdpi设备(作为示例),那么Android从哪个文件夹中读取值?另外,一般来说,Android如何确定不同值文件夹的优先级?
答案 0 :(得分:1)
此外,一般来说,Android如何确定不同值文件夹的优先级?
一般来说,Android从具有相关资源的资源集中获取资源,并具有最重要的不同限定符。在这里,“最重要”意味着“在this Web page上的表2中出现最高”,“不同”意味着“没有其他人具有该特定限定符”。虽然屏幕尺寸和密度都有些奇怪。
恕我直言,这是一个严重的代码味道。使用与密度无关的度量单位(例如我有多个带有扩展名的值文件夹,例如-hdpi,-xhdpi和-sw720dp。在所有这些文件夹中,我都有dimens.xml和该xml文件中值的相同名称。
dp
),在这种情况下,您不需要基于屏幕密度的不同维度资源。根据屏幕大小设置不同的是合理的(例如,平板电脑上的边距更大),尽管混合类似于res/values/dimens.xml
和res/values-sw720dp/values.xml
。
表2中的如果我的设备宽度为720 dp且被视为xhdpi设备(例如),那么Android从哪个文件夹中读取值?
-swNNNdp
高于-hdpi
或-xhdpi
,因此应首先考虑它。请注意,大小资源集限定符(例如-large
,-swNNNdp
)适用于指定大小或更大。因此,如果您的设备的宽度最小为720dp或更多,则应使用-sw720dp
资源。