位于values文件夹中的dimens.xml如何适配7英寸和10英寸平板电脑?

6

我已经尝试过以下方法:

values-mpdi, values-land-mpdi, values-hpdi and values-land-hdpi

这段代码在手机屏幕上运行良好,问题是可能会出现7英寸平板电脑和10英寸平板电脑都从values-mdpi中读取值,但结果并不相同,我猜测是因为屏幕大小不同(尽管分辨率和密度相似)。 所以我尝试了以下方法:

values-sw600dp-hdpi
values-sw600dp-port-hdpi
values-sw600dp-mdpi
values-sw600dp-port-mdpi
values-sw720dp-hdpi
values-sw720dp-port-hdpi
values-sw720dp-mdpi
values-sw720dp-port-mdpi

但是应用程序崩溃了,因为它找不到所需的资源...非常感谢任何帮助。提前致谢。

为了检查个别设备的屏幕参数,我发现 DisplayInfo 应用程序非常方便:https://play.google.com/store/apps/details?id=it.gerdavax.displayinfo - Stan Kurdziel
2个回答

17

基本上,Android应用程序需要支持以下三个主要设备类别:

  1. 手机(手持设备)
  2. 小型平板电脑(7英寸级别)
  3. 大型平板电脑(10英寸及以上)。

Android 3.2之前的限定符:

Google第一次尝试创建限定符以按设备分离资源时,是创建了一些大小桶:small、normal、large、xlarge。最初,这很好地解决了问题,因为手持设备处于小/正常分类中,市场上第一个7英寸的平板电脑是大型的,而第一个10英寸的平板电脑则是xlarge。

Android 3.2及以后的限定符:

然而,随着越来越多的设备在市场上出现,屏幕尺寸也不断变化,设备可能呈现的位置也开始变得模糊不清。在Android 3.2中提出了解决这个问题的新方案,采用了新的限定符,根据设备的当前宽度/高度或“最小”宽度选择资源;后者是通过将设备尺寸表示为屏幕最短边的宽度(以密度无关像素或dp表示)而得出的新标识。

使用这个新范例,通常将小型平板电脑定义为具有600dp的最小宽度,大型平板电脑则为720dp,而手持设备则为低于该线的所有设备。

在最低支持版本低于3.2且目标版本大于或等于3.2时使用限定符

对于以Android 3.2或更高版本为最低要求的应用程序,这个新系统运行良好。但是,如果开发人员希望创建一款可以通用于手持设备和平板电脑的应用程序,并且必须支持不高于2.2甚至2.3的最低Android版本,则需要在具有旧的大小限定符的目录中创建每个资源的副本,并将其放置在另一个具有相应最小宽度限定符的目录中。

例如,在values-largevalues-sw600dp文件夹中保持相同的dimens.xml文件。因此,运行在Android 3.2以下版本的设备将使用values-large中的值,而运行在Android 3.2及以上版本的设备将使用values-sw600dp中的值。

3

//您需要在API级别3.2及以上运行此操作。

对于<3.2,您需要声明正常值-大型和值-超大型


你的意思是如果我将targetSDKVersion设置为19,那么我需要使用values-sw600dpvalues-sw720dp,而当我目标设定在API 13以下时,我需要使用values-largevalues-xlarge。对吗? - N Sharma

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接