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

问题描述 投票:0回答:1

我有一个android项目为不同的屏幕分辨率提供不同的dimens.xml。我通过在 /res 文件夹中定义 value-swXXXdp 文件夹来实现此目的。

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

  1. 768x1280,160dpi
  2. 768x1024,160dpi

到目前为止我尝试过的:

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

有谁有提示,我必须使用什么文件夹名称,才能仅为屏幕分辨率 2 提供 dimens.xml ?

提前谢谢您!

android xml screen-resolution
1个回答
0
投票

有谁有提示,我必须使用什么文件夹名称,才能仅为屏幕分辨率 2 提供 dimens.xml ?

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

让我们看看如果您像这样组织资源会发生什么:

res/
    values/
    values-h1024dp/

Android 具有根据设备配置匹配资源的定义行为。当您在屏幕高度为 800dp 的设备上打开应用程序时,最佳匹配将是

values
,因为 1024dp 不适合 800dp。但是,如果您在屏幕高度为 1024 或更高 的较大设备上打开相同的应用程序,它将使用
values-h1024dp
目录。

不幸的是,您只想对特定尺寸的设备使用第二个资源目录,即 768dpx1024dp。

在 Android 中提供资源的设计方式与您期望的不同,但有一种 方法可以实现您所需要的 - 别名资源。

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

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

并在

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

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

© www.soinside.com 2019 - 2024. All rights reserved.