-anydpi 和 -nodpi 有什么区别?

新手上路,请多包涵

如果您在 Android Studio 1.5.0 中使用 Vector Asset 向导,则您使用该向导导入的任何矢量可绘制 XML 都会进入 res/drawable/

但是, build/ 目录和生成的 APK 显示这些 XML 文件已移动到 res/drawable-anydpi-v21/ 资源目录中。 -v21 部分是有道理的,因为 VectorDrawable 仅在 API 级别 21+ 上受支持。但是, -anydpi 似乎没有记录。我本来期望 -nodpi ,既用于原始导入目的地,也用于构建系统选择移动它的位置。

有没有人看到官方声明 -anydpi 意味着什么,它与 -nodpi 有什么关系?我正在寻找实际效果,而不仅仅是一些代码注释所暗示的。

原文由 CommonsWare 发布,翻译遵循 CC BY-SA 4.0 许可协议

阅读 2k
2 个回答

点头

这些是与密度无关的资源。无论当前屏幕的密度如何,系统都不会缩放标有此限定符的资源。

例如:

  • drawable- nodpi /dot.png

这个点在 xxhdpi 上会显得很小,在 ldpi 上会很大。

但是,资源解析器将匹配特定的限定符(如果存在)。

例如

  • drawable- hdpi /eg.png
  • drawable- nodpi -v21/eg.xml

在 Lollipop (API 21) hdpi 设备上,使用 位图

在 Lollipop (API 21) xhdpi 设备上,使用矢量。

任何dpi

这些资源在任何 dpi 中都优先。

例如

  • drawable- hdpi /eg.png
  • drawable -anydpi- v21/eg.xml

在 Lollipop (API 21) hdpi 设备上,使用 矢量

在 Lollipop (API 21) xhdpi 设备上,使用矢量。

参考

_注意_:在 更改 Ic3288d0236fe0bff20bb1599aba2582c25b0db32 中添加了 anydpi

原文由 rds 发布,翻译遵循 CC BY-SA 4.0 许可协议

我对所有内容都使用 drawable-nodpi,包括我的游戏的大量大型图形。使用 -anydpi 放大图形的一个未记录的结果是它以指数方式增加内存使用。因此,如果您在 drawable 中有一个 1MB 的图形,它将根据用户设备的分辨率缩放到 4MB、16MB、64MB 或更多。设备分辨率不断提高。当然,这种放大实际上并没有增加图形的清晰度。通常情况下,绘图操作可用于指示每个图形相对于屏幕尺寸的大小,无需使应用程序膨胀。我不使用多个分辨率特定的绘图文件夹来节省内存和内务处理,尽管使用这些文件夹您至少可以控制分配。 -anydpi 文件夹是一个伪装成方便恕我直言的陷阱。

原文由 Androidcoder 发布,翻译遵循 CC BY-SA 4.0 许可协议

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题