android - 如何在布局上使用资源限定符来区分 HTC Desire 和 Samsung Galaxy Nexus 等智能手机

标签 android layout resources

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

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

  • 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/

相关文章:

安卓搜索: customize suggestion layout

css - 2 列固定宽度侧边栏 w/流体内容未正确对齐

android - 为什么柱子的高度不一样?

.net - dotnet build 无法管理嵌入式资源

java - 像 onClick 一样调用函数( View )

android - onSaveInstanceState 中的保存接口(interface)(Listener)

android - 在 Android 4 中更改首选项摘要文本颜色

html - css 框模型不使用填充进行拉伸(stretch)

javascript - 具有大数据集的 Angular $resource

javascript - 在不牺牲 CPU 资源的情况下在 JavaScript web worker 中休眠