屏幕大小的Android资源文件夹

时间:2011-05-06 22:58:58

标签: android porting screen-size

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

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

那么,你知道如何在文件夹中划分drawables / bitmaps但只能通过分辨率访问吗?是的,我知道Bitmap Alias,但它不是解决方案。

由于

1 个答案:

答案 0 :(得分:3)

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

来自开发指南:

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

修改:将我的评论添加到回复中。

使用评论中的示例,Archos是一个7英寸的屏幕,而Nexus One则是一个3.7英寸的屏幕。 在相同像素数下,Nexus One上的像素密度是双倍。请记住,dpi表示每英寸点数。 这意味着相同的图像在Archos中的渲染次数是Nexus One的两倍

屏幕尺寸差异应在布局中处理。将res/layout-normal用于Nexus One,将res/layout-large用于Archos。通过这种方式,您可以控制不同屏幕尺寸的完整布局(可能需要限制Archos中不必要的一些小部件),并决定是否要为您的drawable保留固定大小或将它们扩展为必要的。

或者,如果您确实希望保持大小与屏幕成比例而不管屏幕大小和而不拉伸图像,那么您可以创建两组图像,即image1-normal.png,image2-您可以从res/drawable-mdpi中的xml文件访问res/drawable-hdpires/layout-normal文件夹中的normal.png和image1-large.png,image2-large.png等res/layout-large

总之,完整的要求应该通过布局和drawable的组合来处理:

  • Nexus One layout-normaldrawable-hdpi
  • Archos 7 layout-largedrawable-mdpi
  • Xoom layout-xlargedrawable-mdpi