【问题标题】:Android Resources Folders by Screen Size按屏幕大小划分的 Android 资源文件夹
【发布时间】:2011-06-22 02:47:19
【问题描述】:

我开发了一款支持市面上几乎所有分辨率(240x320、320x480、480x800、480x854、600x1024)的安卓游戏。

我的问题是当我尝试支持平板电脑时,我不明白为什么当限定符没有用时,Android 将资源划分到不同的文件夹(hdpi、ldpi、mpdi、large-mdpi,...) ! 我有几个图形集(根据宽度),但我要疯了,例如,使用密度为 mdpi 或 ldpi 的平板电脑 480x800!不可能覆盖所有设备。

那么,你知道有什么方法可以在文件夹中划分绘图/位图,但只能通过分辨率访问吗?是的,我知道位图别名,但这不是解决方案。

谢谢

【问题讨论】:

    标签: android porting screen-size


    【解决方案1】:

    我相信您将屏幕尺寸与像素密度混为一谈:

    来自开发指南:

    • 平台支持一组资源限定符,可让您在需要时提供特定于大小和密度的资源。特定大小资源的限定符是smallnormallargexlarge。那些针对特定密度的资源是ldpi(低)、mdpi(中)、hdpi(高)和xhdpi(超高)。限定符对应于上述Range of screens supported 中描述的广义密度。
    • 平台还提供了<supports-screens> 清单元素,其属性android:smallScreensandroid:normalScreensandroid:largeScreensandroid:xlargeScreens 可让您指定应用程序支持的通用屏幕尺寸。另一个属性 android:anyDensity 可让您指示您的应用程序是否包含对多密度的内置支持。

    编辑:将我的 cmets 添加到响应中。

    使用评论中的示例,Archos 的屏幕为 7 英寸,而 Nexus One 的屏幕为 3.7 英寸。 在像素数相同的情况下,Nexus One 的像素密度是原来的两倍。请记住,dpi 表示每英寸的点数。 这意味着相同的图像在 Archos 中的渲染尺寸将是 Nexus One 中的两倍

    应在布局中处理屏幕尺寸差异。 Nexus One 使用res/layout-normal,爱可视使用res/layout-large。这样,您将可以控制不同屏幕尺寸的完整布局(也许您需要限制一些在 Archos 中不必要地大的小部件)并决定是要为您的可绘制对象保持固定尺寸还是将它们扩展为必要的。

    或者,如果你真的想保持大小与屏幕成比例而不管屏幕大小和不拉伸图像,那么你可以创建两组图像,即image1-normal.png、image2- res/drawable-mdpires/drawable-hdpi 文件夹中的 normal.png 和 image1-large.png、image2-large.png 等,您可以从 res/layout-normalres/layout-large 中的 xml 文件访问它们。

    总之,全部需求应该通过布局和drawables的组合来处理:

    • Nexus Onelayout-normaldrawable-hdpi
    • 爱可视7layout-largedrawable-mdpi
    • Xoomlayout-xlargedrawable-mdpi

    【讨论】:

    • 从最初的问题来看,我不认为混淆是严格关于尺寸与密度的。我知道,处理不同尺寸/密度组合之间的重叠也令人沮丧。
    • 是的,这就是问题所在。例如,Nexus One 的屏幕尺寸为 480x800,所以它是 hdpi,但是,例如,爱可视 70 也有 480x800,但它是 mdpi!这就是问题所在,我不明白为什么具有相同分辨率的两个设备具有不同的属性,并且通常图形是由分辨率(例如背景)开发的。这完全令人沮丧。
    • @Morpheo17 那是因为爱可视是 7 英寸屏幕,而 Nexus One 是 3.7 英寸屏幕。在相同数量的像素下,像素密度在 Nexus One 上是两倍。请记住,dpi 表示每英寸的点数
    • @Morpheo17 图像大小会随着分辨率的不同而有很大差异。尝试使用 layout-normallayout-large 代替布局。
    • 如果你真的想保持大小与屏幕成正比而不管屏幕大小,那么你可以有两组图像,im1-normal.png、im2-normal.png和im1-large。 mdpi 和 hdpi 文件夹中的 png、im2-large.png 等,您可以从 layout-medium 和 layout-large xmls 访问它们。
    猜你喜欢
    • 1970-01-01
    • 2016-12-14
    • 1970-01-01
    • 1970-01-01
    • 2015-02-02
    • 2011-08-28
    • 2014-11-04
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多