对于Android 3.2以后的机器是有比较好的区分方法的,就是通过在资源文件夹后面加 -sw600dp 来区分。比如说你想要在平板展示的layout就放到 layout-sw600dp 目录下,String, styles以及color等等都可以如此。如果是 3.2 以前的机器,可用 -xlarge 来区分。这样就可以将资源文件自动匹配映射,就和做多国语言的 Strings 一样,只要不同文件夹下的同名文件,就会匹配到相应的res中。
那么,这个解决了资源文件的区分,同样的,代码中如何区分的,比如说我平板上的 Button 叫 tButton,手机上的是 pButton,这个总不能通过新建文件夹来指定资源了吧。莫非还是要用上述的那个更具根据分辨率的方法?(其实这些资源文件夹区分方式也是系统去根据分辨率区分)显然不是,我们可以用一个更好的方法。分别建立如下文件:
res/values-sw600dp/bools.xml
<resources>
<bool name="isTablet">true</bool>
</resources>
res/values/bools.xml
<resources>
<bool name="isTablet">false</bool>
</resources>
res/values-xlarge/bools.xml
<resources>
<bool name="isTablet">true</bool>
</resources>
然后之前的 isTablet 的判断函数,就可以改成如下所示:
public static boolean isTablet(Context context) {
return context.getResources().getBoolean(R.bool.isTablet);
}
是不是美好简洁高端大气上档次了许多?O(∩_∩)O~
至于资源文件夹如下图所示: