2

我制作了一个具有多种布局的应用程序,以针对智能手机和平板电脑等多种设备。

目前,我有以下文件夹来区分这些设备:

  • res/layout # 适用于三星 Galaxy Nexus、S III 等普通设备...
  • res/layout-large # 适用于 Android < 3.2 上的 7 英寸平板电脑
  • res/layout-sw600dp # 用于 7 英寸平板电脑
  • res/layout-xlarge # 适用于 Android < 3.2 的 10 英寸平板电脑
  • res/layout-sw720dp # 用于 10 英寸平板电脑

解决方案很好,但我对仍然在 Android 2.2 或 2.3 中的旧智能手机(如 HTC Desire)有疑问。

它们的屏幕尺寸类别是正常的,密度是 hdpi,因此与三星 Galaxy Nexus 有任何区别,例如资源限定符。

由于 Android 的版本是 2.2 或 2.3,我不能使用新的资源限定符来确定屏幕尺寸。所以,我不知道如何专门针对这些带有限定符的设备,以便在屏幕为 4 英寸及以上的智能手机与其他屏幕小于 4 英寸的智能手机之间具有不同的布局。

有人对解决方案有任何想法吗?

提前谢谢。

西尔万。

4

2 回答 2

2

提供几种布局的一些要点

  • 不要根据具体设备区分资源文件夹。您制作的文件夹越少越好...
  • 在比较设备的尺寸时也要比较设备及其分辨率(例如 Nexus 7。Nexus 7的分辨率为1280 * 800,其他类似的 7 英寸平板电脑(如三星 Galaxy Tab )的分辨率为1024 * 600)。

更好的做法是放置以下可绘制对象

// for Phones
drawable-ldpi
drawable-mdpi
drawable-hdpi
drawable-xhdpi

//for 7 inch tablets
drawable-large-mdpi
drawable-large-hdpi(for Nexus 7)

// for 10 inch tablets
drawable-xlarge-mdpi

IMO 支持 Android 平板电脑是一项艰巨的任务。因为有这么多的设备,每个都有自己的分辨率和密度。您不能针对所有设备。

Nexus 7 外壳:尽管 Nexus 7 是 7 英寸平板电脑,但它的分辨率为1280 * 800。所以它是一个hdpi设备。但普通 7 英寸设备的分辨率较低,为1024 * 600。所以它们是mdpi设备,drawable 限定符可以改变。(根据我自己的经验,首先drawable-large-mdpi为 7 英寸设备放一个文件夹,然后在 Nexus 7 上检查。如果图像没有问题,您不必再放一个文件夹。因为如果特定文件夹不存在,Android 会检查最近的可能文件夹并针对设备屏幕对其进行优化)。

现在赋予layout-sw<>dp属性的问题是

  • 仅在 API 级别 13 中添加。因此无法支持早期设备。
  • 由于它在限定符列表中的高优先级,我们不能给出以较低优先级限定符开头的其他布局。因为 Android 总是优先考虑更高优先级的属性。
于 2013-04-19T06:05:10.013 回答
0

最后(也是有价值的)提示:

按尺寸组织布局,而不是密度。使用 dp 和 sp 单位,从不使用像素。

按 DENSITY 组织您的 drawables,而不是 SIZE。如果您使用 9-pacthes,请提供 mdpi、hdpi、xhdpi、xxhdpi 的替代密度。

于 2014-01-17T23:28:59.253 回答