安卓 - 屏幕分辨率和屏幕密度

3
根据管理资源(图像)在Android 1.6版本中的要求,我们需要将不同分辨率的图像分别保存在Drawable-Hdpi、Drawable-Mdpi、Drawable-Lpi文件夹中。
根据此页面:http://developer.android.com/guide/practices/screens_support.html
在低密度部分 - 使用了三种分辨率:240*320、240x400、240x432,分别用于小屏幕、普通屏幕、大屏幕。
同样地,在中等密度部分 - 使用了三种分辨率:320x480、480x800、480x854,分别用于小屏幕、普通屏幕、大屏幕。
高密度也是同样的方式……
但我有些困惑:
(1) 我如何知道使用的是小屏幕、普通屏幕还是大屏幕?有没有办法知道?
(2) 我如何知道我正在使用哪种类型的密度?
(3) 在Drawable-Hdpi、Drawable-Mdpi、Drawable-ldpi文件夹中,我们应该特别保留哪个分辨率的图像?
3个回答

7
有特定的Android API调用可以在运行时告诉您手持设备的密度和(小/大/正常)屏幕大小。然而,作为开发人员,我们根本不需要担心个别手持设备。我们所需做的就是在apk中拥有ldpi/mdpi/hdpi资源和小/正常/大布局。Android内部处理所有内容。
不要忘记深入了解Android如何确定使用哪些资源和别名,点击这里

我把我的文件放在Xhpdi中,但它们并不总是按比例缩放,有些可以,有些不行。因此,我认为将它们放在不同的文件夹中更可取,尤其是如果您正在制作一个大型应用程序以最大化性能和用户体验。不是吗? - Green_qaue
同意,还要尽可能使用9 patch图像。它们非常有帮助。 - omermuhammed

3

你为什么想知道实际密度?这是Android的事情。但我确信有一种方法可以检索此信息。

对于开发,我将所有内容放在hdpi文件夹中。我也可以将所有内容放在通用的Drawable文件夹中。

在发布时,您可以决定是否要为ldpi和mdpi提供已缩小的资源。但这不是必需的。

更新:使用此类检索实际密度最佳实践

更新2:我找到了一段来自Motorola的25分钟视频,讨论了所有这些问题:使用多个屏幕


如果你把所有的内容都放在hdpi文件夹中,对于所有分辨率都可以吗?图片会被拉伸或裁剪吗? - Paresh Mayani
没问题。它们将被放大或缩小。您还可以使用ImageView中的scale_type设置特定的拉伸/裁剪行为。您应该始终使用dp和sp尺寸,这样就没问题了。您还可以在SDK预览和VM中测试不同的屏幕尺寸。 - OneWorld
谢谢提供这样的信息,我已经在使用scale_type来设置ImageView,并且使用dip(dp)或sp来设置尺寸。 - Paresh Mayani
如果你动态地检索资源,比如从网络服务器中获取,你可能希望请求当前分辨率下最佳的资源。 - ThomasW

1

1) 在不同的文件夹中更改布局内容,例如layout-small、layout-large等。现在在具有不同屏幕分辨率的不同模拟器中进行测试。

2) 要查找设备的密度,请使用以下代码:
Log.d("Density", "" + (getResources().getDisplayMetrics().density));


顺便说一下,这个问题已经在一年前被提出并回答了。 - banzai86

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接