2011-05-06 35 views
0

我已经推出了支持市场上几乎分辨率(240x320,320x480,480x800,480x854,600x1024)的Android游戏。Android资源按屏幕大小分类的文件夹

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

所以,你知道任何方式来分割文件夹中的drawables/bitmaps,但只能通过解析?是的,我知道位图别名,但它不是解决方案。

感谢

回答

3

我相信你混合的屏幕尺寸与像素密度:

从开发指南:

  • 该平台支持一组资源预选赛,让如果需要,您可以提供特定于大小和密度的资源。大小特定资源的限定符是small,normal,largexlarge。那些针对密度的特定资源是ldpi(低),mdpi(中),hdpi(高)和xhdpi(超高)。限定符对应于上面Range of screens supported中描述的广义密度。
  • 该平台还提供了一个<supports-screens>清单元素,其属性android:smallScreens,android:normalScreens,android:largeScreensandroid:xlargeScreens允许您指定应用程序支持的通用屏幕大小。另一个属性android:anyDensity允许您指出您的应用程序是否包含对多种密度的内置支持。

编辑:加入我的意见的响应。

使用评论中的例子,爱可视是一个7英寸的屏幕,而Nexus One有一个3.7英寸的屏幕。 在像素数相同的情况下,Nexus One上的像素密度是双倍。记住,dpi意味着每英寸点数。 这意味着相同的图像在Archos中的渲染速度要比在Nexus One中的渲染速度高出一倍

屏幕尺寸差异应该在版面中处理。对于Nexus One使用res/layout-normal,对于爱可视使用res/layout-large。这样,您就可以控制不同屏幕尺寸的完整布局(也许您需要限制爱可视中不必要的一些小部件),并决定是否要为绘图保留一个固定大小或将其扩展为必要。

或者,如果您确实想保持大小与屏幕大小成正比,而不考虑屏幕大小和而没有拉伸图像,那么您可以创建两组图像,即image1-normal.png,image2-normal.png和image1-large.png,image2-large。png等,都在res/drawable-mdpires/drawable-hdpi文件夹中,您可以从res/layout-normalres/layout-large中的xml文件访问。

  • Nexus之一

    总之,全部要求应该由布局和绘图的组合来处理layout-normaldrawable-hdpi

  • 爱可视7layout-largedrawable-mdpi
  • Xoomlayout-xlargedrawable-mdpi
+0

从原来的问题来看,我并不认为混淆严格是关于尺寸与密度的关系。我明白,沮丧也在于处理不同大小/密度组合之间的重叠。 – 2011-05-07 00:00:35

+0

是的,就是这个问题。例如,Nexus One的屏幕尺寸为480x800,因此它是hdpi,但是,例如,爱可视70也有480x800,但它是** mdpi **!这就是问题所在,我不明白为什么两台具有相同分辨率的设备具有不同的属性,并且通常是通过分辨率(例如背景)开发图形。这完全令人沮丧。 – Arturo 2011-05-08 11:38:56

+0

@ Morpheo17这是因为爱可视是一个7英寸的屏幕,而Nexus One有一个3.7英寸的屏幕。在相同数量的**像素处,像素**的**密度在Nexus One上是双倍的。请记住,** dpi表示每英寸点数** – Aleadam 2011-05-08 13:59:55

相关问题