Android:在提供资源时区分设备分辨率

时间:2015-02-28 09:19:57

标签: android xml screen-resolution

我有和android项目为不同的屏幕resoultions提供不同的dimens.xml。我是通过在my / res文件夹中定义values-swXXXdp文件夹来实现的。

但是,我现在无法区分以下两种屏幕分辨率:

  1. 768x1280,160dpi from
  2. 768x1024,160dpi
  3. 到目前为止我尝试了什么:

    • values-sw768dp用于
    • values-sw768dp-notlong用于两者,即使存在values-sw768dp
    • values-h768dp-w1024dp被忽略
    • values-w768dp-h1024dp被忽略

    是否有人提示,我必须使用哪个文件夹名称,仅为屏幕分辨率2提供dimens.xml?

    提前谢谢!

1 个答案:

答案 0 :(得分:0)

  

是否有人提示,我必须使用哪个文件夹名称,仅为屏幕分辨率2提供dimens.xml?

我认为这是不可能的,至少不是 w h 限定符。为什么?根据Android开发者的Providing Resources指南,您可以指定加载某些资源所需的最小屏幕宽度或高度,但不能指定最大值。

让我们看一下如果你有这样的资源组织会发生什么:

res/
    values/
    values-h1024dp/

Android拥有匹配资源的defined behavior,具体取决于设备配置。当您在屏幕高度为800dp的设备上打开应用程序时,最佳匹配将为values,因为1024dp不适合800dp。但是,如果您在屏幕高度为1024 或更高的较大设备上打开相同的应用,则会使用values-h1024dp目录。

不幸的是,您只想将第二个资源目录用于某些尺寸的设备,即768dpx1024dp。

在Android中提供资源的方式与您期望的方式不同,但具有way to achieve what you need - 别名资源。

要提供资源目录结构,其中只有一个目录与配置w1024dp的设备匹配,我将创建以下结构:

res/
    values/
    values-h1024dp/
    values-h1025dp/

values-h1025dp中创建包含values中资源别名的xml文件。这样,您可以拥有一个与屏幕高度为1024dp的设备匹配的所有设备的资源文件。

请注意,它适用于具有您指定配置的设备,但仅适用于横向模式,因为我只使用 h 限定符。