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

时间:2013-04-19 05:43:02

标签: android layout resources

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

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

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

解决方案很好,但我对HTC Desire等旧智能手机的问题还是在Android 2.2或2.3中。

他们的屏幕尺寸类别是正常的,密度是hdpi所以三星Galaxy Nexus与资源中的限定符有任何区别。

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

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

先谢谢。

西尔。

2 个答案:

答案 0 :(得分:2)

提供多种布局的一些要点

  • 不要根据特定设备区分资源文件夹。该 你制作的文件夹越多越好......
  • 与之比较时,将设备与其分辨率进行比较 它们的大小(例如Nexus 7. Nexus 7 的分辨率 1280 * 800 和其他类似的7英寸平板电脑,如三星Galaxy Tab 分辨率 1024 * 600 )。

更好的做法是放置以下drawables

// 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平板电脑是IMO的一项地狱工作。因为有这么多设备,每个设备都有自己的分辨率和密度。您无法定位所有设备。

Nexus 7案例:即使Nexus 7是7英寸平板电脑,它的分辨率 1280 * 800 。所以它是hdpi设备。但普通的7英寸设备具有较低的分辨率 1024 * 600 。因此它们是mdpi设备,并且drawable限定符可以更改。 (根据我自己的经验,首先为7英寸设备放置一个drawable-large-mdpi文件夹并在Nexus 7上查看。如果图像没有问题,则不必放入另一个文件夹。因为如果没有特定文件夹,Android将检查最近的可能文件夹并针对设备屏幕进行优化。)

现在提供layout-sw<>dp属性的问题是

  • 仅在API级别13中添加。因此无法支持早期设备。
  • 由于qualifier list的优先级高,我们无法给予。{li> 其他布局以较低优先级限定符开头。因为 Android总是首先采用更高的优先级属性。

答案 1 :(得分:0)

最后(和有价值的)提示:

按SIZE整理您的布局,绝不是DENSITY。使用dp和sp单位,绝不使用像素。

通过DENSITY组织您的drawables,从不SIZE。如果你使用9-pacthes,也可以为mdpi,hdpi,xhdpi,xxhdpi提供替代密度。