我制作了一个具有多种布局的应用程序,以针对智能手机和平板电脑等多种设备。
目前,我有以下文件夹来区分这些设备:
- res/layout # 适用于 Samsung Galaxy Nexus、S 等普通设备 三、...
- res/layout-large # 适用于 Android 上的 7 英寸平板电脑 < 3.2
- res/layout-sw600dp # 适用于 7 英寸平板电脑
- res/layout-xlarge # 适用于 Android 上的 10 英寸平板电脑 < 3.2
- res/layout-sw720dp # 适用于 10 英寸平板电脑
该解决方案很好,但我在使用 HTC Desire 等仍使用 Android 2.2 或 2.3 的旧智能手机时遇到问题。
他们的屏幕尺寸类别是正常的,密度是 hdpi,因此与 Samsung Galaxy Nexus 存在任何差异,例如在资源限定符方面。
由于 Android 版本是 2.2 或 2.3,我无法对屏幕尺寸使用新的资源限定符。因此,我不知道如何专门针对这些具有限定符的设备,以便在屏幕尺寸为 4 英寸及以上的智能手机与其他屏幕尺寸小于 4 英寸的智能手机之间具有不同的布局。
有人对解决方案有任何想法吗?
提前致谢。
西尔万。
最佳答案
提供多种布局的一些要点
- 不要根据特定设备区分资源文件夹。这 您创建的文件夹越少,越多越好...
- 在比较时也将设备与其分辨率进行比较 它们的尺寸(例如 Nexus 7。Nexus 7 的分辨率为 1280 * 800 和其他类似的 7 英寸平板电脑,例如 Samsung 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
在我看来,为 Android 平板电脑提供支持是一项 hell 般的工作。因为设备太多,每种设备都有自己的分辨率和密度。您无法定位所有设备。
Nexus 7 保护壳:尽管 Nexus 7 是一款 7 英寸平板电脑,但其分辨率为1280 * 800。所以这是一个hdpi
设备。但普通7英寸设备的分辨率较低,为1024 * 600。所以他们是mdpi
设备和可绘制限定符可以更改。 (根据我自己的经验,首先为 7 英寸设备放置一个文件夹 drawable-large-mdpi
并在 Nexus 7 上检查。如果图像没有问题,则不必放置另一个文件夹。因为如果特定文件夹不存在,Android将检查最近的可能文件夹并针对设备屏幕进行优化)。
现在给出layout-sw<>dp
的问题属性是
- 仅在 API 级别 13 中添加。因此无法支持早期设备。
- 因为它在 qualifier list 中的优先级很高,我们不能给 其他布局以较低优先级限定符开始。因为 Android 始终首先采用优先级较高的属性。
关于android - 如何在布局上使用资源限定符来区分 HTC Desire 和 Samsung Galaxy Nexus 等智能手机,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16097955/