【问题标题】:Android multiple screen sizes and density problemsAndroid多种屏幕尺寸和密度问题
【发布时间】:2010-12-10 18:08:44
【问题描述】:

我的可绘制对象有一个真正的问题,我似乎无法弄清楚。

问题是这样的:

有大约 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 上,图像都很小,并且在屏幕的左上角,因为它报告 480px 宽,但密度仍然是 160 - 或者至少以这种方式报告。

标签: android screen-size


【解决方案1】:

您的清单中可能缺少一些标签,例如 anyDensitysupports...。只有xlarge 提供了不错的平板电脑支持(我认为是在 Gingerbread 中)。

此外,如果您自己绘制,则需要在您的画布、可绘制对象或位图上调用 setTargetDensity(actualDensity)(不记得这三个中的哪一个)。

【讨论】:

    【解决方案2】:

    你是如何应用这些图像的?您可以只使用 fill_parent 作为 ImageView 的 layout_width/height,并选择 fitCenter 作为 scaleType。

    Galaxy Tab 报告为中等 dpi 是完全正确的(虽然我认为 Tab 的分辨率是 1024 x 600?),即使它是高分辨率。 dpi 是像素大小的度量(例如,一英寸的像素数)。因此,4" 屏幕中的 480 x 800 分辨率将具有比 7" 显示器中的 480 x 800 分辨率更高的 dpi,这仅仅是因为它们被压缩到更小的空间中。

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

    【讨论】:

    • 是的,但问题是所有设备的行为似乎都不相同。如果我在可绘制文件夹中有一个 320x480 png,在具有 160dpi 屏幕的 G1 上,图像适合全屏,在具有 480x800 屏幕和 240dpi 的机器人上,图像适合全屏。但是突然之间出现了具有 480x800 屏幕和 160dpi 的设备。因此,如果我有 100 多张图像,如果我必须为每种分辨率创建图像,我的程序将会非常庞大​​。为什么它们不像在 Droid 上那样针对所有设备进行扩展?
    • 再一次,你是如何绘制图像的?图像视图?背景?
    • 我在我的游戏中使用了 onDraw() 中的 drawBitmap()。
    【解决方案3】:

    平板电脑出现问题。 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/

    添加额外的可绘制文件夹会增加您的 apk 的大小。一般来说,Gingerbread 或更好的 Honeycomb 之前的平板电脑在 Android 上比较棘手,如果可以避免的话,我不会费心为它们做特殊的事情。

    【讨论】:

    • 应该是res/drawable-xlarge-mdpi 而不是res/drawable-mdpi-xlarge
    【解决方案4】:

    为了在不失真或像素化的情况下缩放图像,Android 使用称为 9-patch 的图像。在此处阅读有关它们的更多信息:

    http://developer.android.com/guide/developing/tools/draw9patch.html

    但这或多或少会有所帮助,具体取决于您选择使用图像的方式。 9 补丁工具对于壁纸应用来说是没有用的。

    这是我在 SO 上找到的另一个链接:

    http://www.developer.com/ws/other/article.php/3889086

    【讨论】:

      【解决方案5】:

      点击链接 您可能需要为您的应用创建不同的屏幕尺寸和密度资源文件夹组合。 浏览不同的限定符名称并进行试验。

      http://developer.android.com/guide/practices/screens_support.html

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2012-03-20
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多