正文
朱小姐
的博客地址:
http://blog.csdn.net/qq_27570955
这几天做关于平板的项目,发现用之前的多屏幕适配方案,会直接运行闪退,报的错误是找不到指定的资源,克服了懒惰的心,翻墙查了api文档。找到了问题。记录下来。
Android多屏幕适配-手机
http://blog.csdn.net/qq_27570955/article/details/53207600
如何划分手机和平板
人为判断方法:大于6英寸的就是平板。小于6英寸的都是手机。
平板尺寸:6英寸、7英寸、10英寸、14英寸...
note:6英寸是手机和平板的阀值。但是还没有找到系统是根据什么来判断是手机还是平板。待验证。欢迎提供证据。
ps1:有人说根据
来判断是否是平板。查看源码,Configuration.SCREENLAYOUT_SIZE_LARGE 的值至少是 480x640dp,即 sw480dp。而 sw480dp 是中间平板电脑。例如 Streak 480x800mdpi。这个点来看,这个公式是成立的。但是使用该方法的准确性有待验证。因为 5英寸 的手机和 7英寸 的平板都在 Configuration.SCREENLAYOUT_SIZE_LARGE 范围内。
平板-tablet
Android 手机系统是 2.x,4.x,5.x 等,但是 Android 系统的 Tablet 设备是从3.0开始的,且3.x系统只有平板才有。Android3.0是专门为平板服务的系统。但是从4.0以后,看起来能运行于手机的也同样能运行于平板。但是,如果使用手机适配的方法用于平板是不可行的。通过查询Google文档可知,Android 平板的适配要使用限定符
swxxxdp
。
原因:手机屏幕的适配是根据资源限定符 value-mdpi-xxx 或者 value-ldpi-xxx。在 values 文件夹下的 dimens 文件里没有默认值也没有关系,系统会最匹配原则。但是Tablet设备资源查找的限定符不是 mdpi、ldmpi 这样的限定符。而是 swxxxdp 限定符查找。所以如果使用手机屏幕适配的方法来适配,系统不认识 mdpi 文件夹下的尺寸,会去找 values 文件夹下的 dimens 文件里的尺寸。没有找到 swxxxdp 也没有找到默认尺寸,就会报资源找不到异常。