安卓多屏幕尺寸和密度问题

6

我对我的可绘制对象遇到了一个真正的问题,似乎无法解决。

问题是:

屏幕大小大约为320x480、480x800、480x854

然后最常见的密度为1.0(160)和1.5(240)

现在,在Droid上,屏幕大小为480x800,使用DisplayMetrics报告的密度为1.5

在G1上,它是320x480,并以1.0的密度返回

但是平板电脑报告的是480x800,密度为1.0(160)

所以,我疯了,因为我可以将320x480图像放入drawables-mdpi文件夹中,将480x800图像放入drawables-hdpi文件夹中,但在平板电脑上,无论如何都不会将任何内容调整为全屏幕。

如果有帮助,将不胜感激。我只想让所有320x480的图像按比例缩放,而不管设备如何。


我不担心图像的失真,因为它们的本质如此,我的问题是它们并不总是按比例缩放。在G1上,它们根本不会缩放,这很好。在Droid上,它们会缩放,因为密度被正确报告(240),但在Galaxy Tab上,图像都很小,并且位于屏幕的左上角,因为它报告的宽度为480像素,但密度仍然是160-或者至少是这样报告的。 - Ben Mc
5个回答

2
您的清单中可能缺少一些标签,例如anyDensitysupports...。相当不错的平板支持只随着xlarge(我想是在Gingerbread版本中)而引入。
此外,如果您正在绘制图像,请在画布、可绘制项或位图上调用setTargetDensity(actualDensity)(我记不清是这三个中的哪一个了)。

1

你是怎么应用这些图片的?你可以在 ImageView 的 layout_width/height 上使用 fill_parent,并选择 fitCenter 作为 scaleType。

即使 Galaxy Tab 是高分辨率设备(我认为 Tab 的分辨率是 1024 x 600?),以中等 dpi 报告也是完全正确的。dpi 是像素大小的测量单位(例如每英寸的像素数)。因此,在 4 英寸屏幕上的 480 x 800 分辨率将比在 7 英寸显示器上的 480 x 800 分辨率具有更高的 dpi,仅仅因为它们被压缩到了更小的空间中。

实际上,您可以添加一个名为 drawable-large-mdpi 的额外的 drawable 文件夹,其中包含适用于大屏幕中等 dpi 设备(如 Tab)的文件(有关这些限定符的更多信息,请参见 此处)。


是的,但问题是所有设备似乎表现不同。 如果我在drawable文件夹中有一个320x480的png,在具有160dpi屏幕的G1上,图像适合整个屏幕,在具有240dpi的480x800屏幕的droid上,图像适合整个屏幕。 但突然间就有了160dpi的480x800屏幕设备。因此,如果我有100多个图像,如果我必须为每个分辨率创建图像,我的程序将非常巨大。为什么它们不能像Droid一样为所有设备进行缩放? - Ben Mc
你是如何绘制图像的?使用ImageView还是Background? - Kevin Coppock
我在我的游戏中的onDraw()方法中使用了drawBitmap()函数。 - Ben Mc

1

平板电脑出了点问题。Google特意让硬件制造商可以声明硬件mpdi,即使dpi约为160。 Galaxy Tab就是这样做的:http://realmike.org/blog/2010/12/21/multiple-screen-sizes-with-processing-for-android/

您可以尝试添加res / drawable-mdpi-xlarge并在此处添加hdpi图形。我认为xlarge是在2.3中引入的,旧版Android不会识别。然后您可能需要尝试drawable-mdpi-large(如http://blog.alsutton.com/2010/07/03/android-tablets-and-mdpi-large/

添加额外的drawable文件夹会增加apk的大小。通常,在Android上,Gingerbread或更好的Honeycomb之前的平板电脑比较棘手,如果可以避免,则不必为它们做特殊处理。


应该是 res/drawable-xlarge-mdpi 而不是 res/drawable-mdpi-xlarge - WarrenFaith

0

0

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