我尝试过:
values-mpdi, values-land-mpdi, values-hpdi and values-land-hdpi
在手机的屏幕上工作正常,问题是7英寸平板电脑可能会从值-mdpi和10英寸平板电脑中获取值,但结果却不一样,我猜是因为屏幕尺寸(虽然是相同的分辨率和相似的密度) 所以我试过了:
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
但应用程序崩溃,因为它找不到所需的资源....
任何帮助将不胜感激
提前致谢
答案 0 :(得分:16)
基本上,Android应用程序需要支持三种主要设备类别:
Android 3.2之前的限定符:
Google 第一次尝试创建限定符以按设备分隔资源是为了创建一些大小的存储分区:小,正常,大,xlarge 。最初,由于手机设备处于小/正常类别,市场上第一个 7“平板电脑很大,第一个 10”平板电脑是xlarge。
Android 3.2及更高版本的限定符
然而,随着越来越多的设备开始出现在市场上,新的屏幕尺寸和线条开始模糊设备可能出现在哪里。 此问题的新解决方案在Android 3.2 中以新限定符的形式呈现,以根据设备当前宽度/高度或“最小”选择资源宽度强>;后者是通过用屏幕最短边的宽度(与密度无关的像素或dp)表示设备尺寸的新名称。
使用新的范例,将小型平板电脑定义为最小宽度为600dp,大型平板电脑定义为720dp,手机是低于该线路的所有设备已经变得很普遍。
当最低支持率低于3.2且目标高于或等于3.2 时使用限定符 对于针对Android 3.2或更高版本的应用程序,此新系统运行良好。但是,如果希望创建在手机和平板电脑上运行通用的应用程序的开发人员被迫支持最低Android版本不高于2.2,或最多2.3,那么在这种情况下,在旧版本的目录中创建每个资源的重复项限定符并将其放在另一个具有相应最小宽度限定符的目录中。
E.g。在dimens.xml
和values-large
中保留相同的values-sw600dp
文件。因此,在低于3.2的Android版本上运行的设备将获取values-large
的值,并且在Android版本上运行的设备高于或等于3.2将采用values-sw600dp
答案 1 :(得分:3)
//你需要在API等级3.2及以上版本中运行它。
对于< 3.2你需要声明正常值 - 大和值 - xlarge