Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/191.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Android 当前密度缺失时的默认密度值_Android_Resources - Fatal编程技术网

Android 当前密度缺失时的默认密度值

Android 当前密度缺失时的默认密度值,android,resources,Android,Resources,我有一个关于密度以及Android如何为当前密度选择正确的values文件夹的问题。我想我已经找到了答案,但我不完全确定,所以我会发布我的发现。至少,这篇文章可以帮助一些人 例如,如果我只包括文件夹值、值hdpi和值xxhdpi,当当前密度为xhpdi时,Android会做什么 Android似乎在寻找密度更高的文件夹,因此它将使用值xxhdpi 当电流密度为xxxhdpi时会发生什么 看起来,如果Android找不到密度更高的文件夹,它会找一个密度更低的文件夹,所以它也会使用值xxdpi An

我有一个关于密度以及Android如何为当前密度选择正确的
values
文件夹的问题。我想我已经找到了答案,但我不完全确定,所以我会发布我的发现。至少,这篇文章可以帮助一些人

例如,如果我只包括文件夹
值hdpi
值xxhdpi
,当当前密度为
xhpdi
时,Android会做什么

Android似乎在寻找密度更高的文件夹,因此它将使用
值xxhdpi

当电流密度为xxxhdpi时会发生什么

看起来,如果Android找不到密度更高的文件夹,它会找一个密度更低的文件夹,所以它也会使用
值xxdpi

Android永远不会使用默认的
values
文件夹来处理某些特定的
values-*dpi
文件夹中定义的值

总之,假设我只有
值xxhdpi
值hdpi

  • 值hdpi
    中的值将用于密度为
    ldpi
    mdpi
    hdpi
    的设备
  • 值xxhdpi
    中的值将用于密度
    xhdpi
    xxhdpi
    xxxhdpi
    的设备
  • 如果在任何
    Values-*dpi
    文件夹中定义了
    Values
    中的值,则永远不会使用这些值
让我知道你对这件事的看法


谢谢

密度限定符是资源匹配工作方式的一个例外

屏幕像素密度是一个限定符,但由于 导致矛盾。即使设备的屏幕密度是 hdpi、可牵引端口ldpi/未被消除,因为每个屏幕 此时,密度被认为是匹配的

当系统正在寻找特定密度的资源时 在密度特定目录中找不到它,它不会始终使用 默认资源。系统可以使用另一个 密度特定资源,以便在以下情况下提供更好的结果: 缩放比例。例如,在寻找低密度资源时 如果不可用,系统倾向于缩小高密度 资源的版本,因为系统可以轻松地扩展 高密度资源下降到低密度的系数为0.5,具有 与将中等密度资源按比例缩放一个 系数为0.75


因此,在密度
的情况下,Android可能会使用默认文件夹,但也可能会决定使用不完全匹配的文件夹。当然,具体化是关于
可绘制的
资源的,但该机制可能对所有其他资源也适用。否则,
drawables
可能会与其他资源不匹配,因为它们是使用不同的规则选择的。

谢谢,我看到文档在这方面不是很具体。“系统可以使用其他密度特定资源之一”。我想这就是我问题的“答案”。)@FerranMaylinch这可能是因为有太多不同屏幕规格的设备,系统有时会决定使用一些不完全匹配的密度文件夹,而不是默认的。我认为他们不想精确地记录这个机制,因为它可能经常被改变和调整,所以他们不希望开发人员依赖它。谢谢。这对我来说并不明显,你是对的。花了几个小时直到我意识到。。。