0

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

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

那么,您是否知道在文件夹中划分绘图/位图但只能通过分辨率访问的任何方法?是的,我知道位图别名,但这不是解决方案。

谢谢

4

1 回答 1

3

我相信您将屏幕尺寸与像素密度混合在一起:

来自开发指南:

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

编辑:在回复中添加了我的评论。

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

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

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

总之,完整的需求应该由布局和可绘制的组合来处理:

  • 连结一layout-normaldrawable-hdpi
  • 爱可视 7 : layout-large,drawable-mdpi
  • 咻咻咻layout-xlargedrawable-mdpi
于 2011-05-06T23:31:39.447 回答