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

Android:在提供资源时区分设备分辨率,android,xml,screen-resolution,Android,Xml,Screen Resolution,我和android项目为不同的屏幕资源提供了不同的dimens.xml。我是通过在my/res文件夹中定义swXXXdp文件夹的值来实现的 但是,我现在无法区分以下两种屏幕分辨率: 768x1280160dpi来自 768x1024,160dpi 到目前为止,我尝试的是: 值-sw768dp用于两者 值-sw768dp-notlong用于两者,即使存在值-sw768dp 忽略值-h768dp-w1024dp 忽略值-w768dp-h1024dp 是否有人提示,我必须使用什么文件夹名称,以便仅

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

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

  • 768x1280160dpi来自
  • 768x1024,160dpi
  • 到目前为止,我尝试的是:

    • 值-sw768dp用于两者
    • 值-sw768dp-notlong用于两者,即使存在值-sw768dp
    • 忽略值-h768dp-w1024dp
    • 忽略值-w768dp-h1024dp
    是否有人提示,我必须使用什么文件夹名称,以便仅为屏幕分辨率2提供dimens.xml

    提前谢谢你

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

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

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

    res/
        values/
        values-h1024dp/
    
    根据设备配置的不同,Android有很多匹配的资源。当您在屏幕高度为800dp的设备上打开应用程序时,最好的匹配是
    ,因为1024dp不适合800dp。但是,如果您在屏幕高度为1024或更高的较大设备上打开相同的应用程序,它将使用
    values-h1024dp
    目录

    不幸的是,您只想对某些维度的设备使用第二个资源目录,即768dpx1024dp

    在Android中提供资源的设计方式与您期望的不同,但有一个别名资源

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

    res/
        values/
        values-h1024dp/
        values-h1025dp/
    
    并在
    values-h1025dp
    中为
    values
    中的资源创建包含别名的xml文件。通过这种方式,您可以拥有一个资源文件,该文件匹配除屏幕高度为1024dp的设备外的所有设备

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