我认为您误解了 Android 在缩放您不提供的图像时所做的事情。Android 文档状态:
默认情况下,Android 会缩放您的位图可绘制对象(.png、.jpg 和 .gif 文件)和九补丁可绘制对象(.9.png 文件),以便它们在每个设备上以适当的物理尺寸呈现。例如,如果您的应用程序仅为基线、中等屏幕密度 (mdpi) 提供位图可绘制对象,则系统在高密度屏幕上时会放大它们,而在低密度屏幕上时会缩小它们。这种缩放会导致位图中出现伪影。为确保您的位图看起来最好,您应该包含针对不同屏幕密度的不同分辨率的替代版本。
这意味着,如果您不提供图像的替代密度版本,Android 将使用您提供的图像填充缺失的图像(创建的和正确的比例大小),但会以图像质量为代价,因为Android 不会像 Photoshop 那样缩放图像。如果您关心应用程序的大小,您可以考虑是否可以接受因省略某些密度版本而导致的图像质量损失,以使您的 .apk 更小。
因此,#1 和#2 都可以使用wrap_content
,并且都不必手动设置图像的大小,除非图像需要大于或小于原始大小(在这种情况下,您应该只在右侧创建图像尺寸)。#1 也不需要也不应该需要更多的布局工作。对于#2,以多种尺寸保存图像根本不是额外的工作。
我个人遵循以下规则:
- 为每个密度创建图像(除了
ldpi
/ tvdpi
-设备太少,我可以接受它们的图像质量损失)。
- 根据需要使用
wrap_content
图像match_parent
。
- 仅
dp
用于运行时下载的图像,无法保证大小。