【发布时间】:2025-11-27 03:05:01
【问题描述】:
我正在开发一种说明应用程序。它使用带有 ScrollvView、垂直 LinearLayout 和一些 TextViews / ImageViews 的片段来解释产品的工作原理。
这些图像只是简单的矢量图形,由于 Android 上缺乏矢量图像支持,我将其保存为 png。这是一个例子:
图像总是使用android:scaleType="fitXY"(纵向和横向)填充屏幕,而滚动查看器负责其余部分(在图像视图中使用android:adjustViewBounds="true"以防止滚动到图像的原始大小)。
我阅读了 Google 的指导方针,以针对不同的分辨率和密度使用不同的版本,但这似乎对我的目的进行了过度设计。 我的想法是只提供可绘制文件夹中图像的一张高分辨率(2000 像素宽度)图像,并让 Android 自动缩放完成其余工作。
我能想到的唯一问题是内存。但我不太确定内部是如何工作的。如果 OutOfMemory 仅在显示图像时发生,它应该不是问题,因为自动缩放首先命中。
如果缩放器可能遇到内存问题,我正在考虑使用 3 个不同宽度的图像版本(即 800 像素、1500 像素和 2200 像素)并将它们放在不同的资源目录中。 虽然这似乎不可能...... 资源目录的 Android Studio 向导有一个“最小屏幕宽度”选项,但它仅适用于 dp(与密度无关的像素)!我想要一个真实设备像素的资源文件。我希望 Android 采用最接近的拟合,如果找不到完全匹配的,不要回退到默认的。 我的图像不关心密度,因为它们总是填满屏幕。
简而言之:
只提供一个小文件大小的大像素图像有问题吗?
如果是,如何设置设备像素资源目录?
应用的本质已经包含大量图像。这就是为什么我不想复制每个几次,这会增加要处理的图像数量。该应用适用于 API 11 及更高版本。
【问题讨论】:
标签: android image scrollview image-scaling autoscaling