我有一个关于密度的问题,以及安卓如何为当前的密度选择正确的values文件夹。我想我已经找到答案了,但我还不完全确定,所以我会把我发现的东西发出去。至少,这篇文章可能对某人有帮助。
例如,如果我只包括文件夹values、values-hdpi和values-xxhdpi,那么当当前密度为xhpdi时,Android会做什么?
安卓似乎在寻找一个更高密度的文件夹,所以它将使用values-xxhdpi。
当电流密度为xxxhdpi时会发生什么?
看起来,如果安卓找不到更高密度的文件夹,它就会找一个更低的文件夹,所以它也会使用values-xxdpi。
Android永远不会将默认的values文件夹用于某个特定的values-*dpi文件夹中定义的值。
总之,假设我只有values,values-xxhdpi和values-hdpi
values-hdpi中的值将用于密度为ldpi、mdpi和hdpi的设备。values-xxhdpi中的值将用于密度为xhdpi、xxhdpi和xxxhdpi的设备。values文件夹中定义了值,则不会使用values-*dpi中的值。告诉我你是怎么想的。
谢谢
发布于 2014-06-16 16:28:09
density限定符是资源匹配工作方式的一个例外。
屏幕像素密度是由于矛盾而没有消除的限定符。即使设备的屏幕密度是hdpi,可绘制端口ldpi/也不会被消除,因为此时每个屏幕密度都被认为是匹配的。
提供资源
当系统正在寻找特定于密度的资源,并且没有在特定密度的目录中找到它时,并不总是使用默认资源。系统可以使用另一个特定于密度的资源,以便在缩放时提供更好的结果。例如,当寻找低密度资源时,系统更倾向于缩小资源的高密度版本,因为系统可以轻松地将高密度资源缩小到低密度资源的0.5倍,并且与缩小中等密度资源的0.75倍相比,工件更少。
支持多屏幕
因此,在density的情况下,安卓可能使用默认文件夹,但也可能决定使用一个与之不完全匹配的文件夹。当然,充实是关于drawable资源的,但是这种机制可能对所有其他资源也是一样的。否则,drawables可能会出现与其他资源不匹配的问题,因为它们是使用不同的规则选择的。
https://stackoverflow.com/questions/24246151
复制相似问题