【问题标题】:xxhdpi density added in API 16, what in <16 if I provide only xxhdpi resources?API 16 中添加了 xxhdpi 密度,如果我只提供 xxhdpi 资源,<16 中会怎样?
【发布时间】:2015-04-01 15:14:33
【问题描述】:

我正在做从 iOS 到 Android 的移植工作,由于 iOS 人只给了我所有图形资源的 @3x 版本,我只将它们放在 res/ drawable-xxhdpi 文件夹。我知道不提供替代的低分辨率资源不是一个好习惯,但根据官方文档:

默认情况下,Android 会缩放您的位图可绘制对象 [...],以便它们在每台设备上以适当的物理尺寸呈现。例如,如果您的应用程序仅为 [...] 中等屏幕密度 (mdpi) 提供位图可绘制对象,则系统在高密度屏幕上放大它们,在低密度屏幕上缩小它们。

现在,文档还说:

xxhdpi: 超超高密度屏幕;大约 480dpi。 在 API 级别 16 中添加

那么,我的问题。除了xxhdpi,我没有提供任何位图替代品,所以在运行Android API 为什么?!?

【问题讨论】:

  • 嗯,是的,尺寸会改变,但你考虑过分辨率吗?
  • @AndroidProgrammer 抱歉,我无法理解您的问题

标签: android bitmap android-drawable android-resources android-screen-support


【解决方案1】:

答案是肯定的,即使在 API

为什么是?

这只是一个发现:如果您查看输出 apk res 文件夹的内容。 drawble-xxhdpi资源文件夹转换为drawble-xxhdpi-v4

v4 限定符附加到 drawable-xxhdpi 文件夹中。 v4 支持库旨在与 Android 1.6(API 级别 4)一起使用,这可能与即使在较低 API 设备上也能检测到新的限定符资源有关。

限定符已被定义为以更好的方式支持不同的分辨率设备。一旦您能够使用 API >= 16 编译您的 APK,并且您的应用支持较低 API 设备,如果未检测到兼容的限定符资源,即使在较低 API 设备上也将选择新限定符文件夹中的资源。

您在 API 10 模拟器上的测试证实了这一点。

您应该查看最佳做法,但我知道问题与此无关。

【讨论】:

  • 我试图从项目中移除 v4 支持库,并且 xxhpi 资源仍然可见。我还尝试将targetSdkVersion 设置为 10,但它们仍然存在...
  • 是的,它们会保持可见
  • @lorenzo-s,我认为“v4”应该是api级别的限定符,与“v4支持库”无关。参见“developer.android.com/guide/topics/resources/…
【解决方案2】:

我真的不会为低分辨率设备加载 3 倍图像。这些手机的内存已经有限,加载如此大的图像会占用大量内存。您应该使用工具以所有不同的密度为您调整图像的大小。试试这个https://github.com/redwarp/9-Patch-Resizer

如果你真的想保留一个版本的图像,把它放在drawable文件夹中(不是drawable-xxhdpi)。 (不推荐,因为您最终会在某些设备上看到看起来很糟糕的图像)

【讨论】:

  • 同意这一点,除了最后一部分——你真的不应该把位图图像放在根drawable目录中;它们会像 mdpi 资产一样被放大,并且在高密度屏幕上看起来很糟糕。
  • 它是drawable而不是drawables文件夹
  • 好的,我同意你的看法,正如我所说,我知道这不是一个好习惯。但我的问题完全不同。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-03-01
  • 1970-01-01
  • 2016-11-20
  • 2018-09-29
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多