如果您在Android Studio 1.5.0中使用矢量资源向导,则使用该向导导入的任何矢量可绘制XML都会进入res/drawable/
。
但是,build/
目录和生成的APK显示这些XML文件被移动到res/drawable-anydpi-v21/
资源目录中。-v21
部分是有意义的,因为VectorDrawable
仅在API Level 21+上受支持。但是,-anydpi
似乎没有文档记录。我希望-nodpi
,无论是对于原始导入目的地还是构建系统选择将其移动到的位置。
有没有人看到过关于-anydpi
的官方声明,以及它与-nodpi
的关系?我在寻找实际的效果,而不仅仅是一些代码注解所暗示的。
4条答案
按热度按时间55ooxyrt1#
节点
这些是密度无关的资源。无论当前屏幕的密度如何,系统都不会缩放使用此限定符标记的资源。
例如:
这个点在xxhdpi上看起来小,在ldpi上看起来大。
但是,如果存在特定的限定符,则资源解析程序将匹配该限定符。
比如说
在Lollipop(API 21)hdpi设备上,使用位图。
在Lollipop(API 21)xhdpi设备上,使用向量。
anydpi
这些资源在任何dpi中优先。
比如说
在Lollipop(API 21)hdpi设备上,使用vector。
在Lollipop(API 21)xhdpi设备上,使用向量。
参考
niknxzdl2#
我用drawable-nodpi做所有的事情,包括我的游戏中大量的大型图形。使用-anydpi扩展图形的一个未记录的后果是它会成倍增加内存使用。因此,如果您在drawable中有一个1 MB的图形,它将根据用户设备的分辨率缩放到4 MB,16 MB,64 MB或更多。设备分辨率不断提高。当然,这种放大实际上并没有增加图形的清晰度。通常情况下,绘图操作可以直接指示每个图形应该相对于屏幕大小有多大,而不需要膨胀应用程序。我不使用多个分辨率特定的绘制文件夹,以保存内存和内务管理。
vq8itlhq3#
source code包含以下注解(第639行):
希望这能消除困惑。
8zzbczxx4#
nodpi
:所有密度的资源。这些是密度无关的资源。无论当前屏幕的密度如何,系统都不会缩放使用此限定符标记的资源。anydpi
:此限定符匹配所有屏幕密度并优先于其他限定符。这对于矢量可绘制对象非常有用。在API Level 21中添加。