缺少电流时的Android默认密度值

Fer*_*nch 5 resources android

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

例如,如果我只包含文件夹values, values-hdpiand values-xxhdpi,当当前密度为 时,Android 会做什么xhpdi

似乎Android寻找更高密度的文件夹,所以它会使用values-xxhdpi.

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

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

values对于在某些特定values-*dpi文件夹中定义的值,Android 绝不会使用默认文件夹。

总而言之,假设我只有values,values-xxhdpivalues-hdpi

  • 中的值values-hdpi将用于密度为ldpimdpi和 的设备hdpi
  • 中的值values-xxhdpi将用于密度为xhdpixxhdpi和 的设备xxxhdpi
  • values如果在任何values-*dpi文件夹中定义了值,则永远不会使用它们。

让我知道您对此有何看法。

谢谢

mik*_*e_m 4

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

屏幕像素密度是一个没有因矛盾而被消除的限定因素。即使设备的屏幕密度是 hdpi,drawable-port-ldpi/ 也不会被消除,因为此时每个屏幕密度都被认为是匹配的。

提供资源

当系统正在寻找特定于密度的资源并且在特定于密度的目录中找不到它时,它不会总是使用默认资源。系统可以改为使用其他特定于密度的资源之一,以便在缩放时提供更好的结果。例如,当寻找低密度资源且不可用时,系统更愿意缩小该资源的高密度版本,因为系统可以通过以下方式轻松地将高密度资源缩小到低密度:与按 0.75 倍缩放中密度资源相比,按 0.5 倍缩放,工件更少。

支持多屏

因此,在 Android 中density,可能会使用默认文件夹,但也可能决定使用不完全匹配的文件夹。当然,证实是关于drawable资源的,但该机制可能也适用于所有其他资源。否则可能会出现不匹配其他资源的问题,drawables因为它们是使用不同的规则选择的。