偶然间想起Android的适配问题, 许多大牛都谈过的,主要的内容和原理网上都有,搜一搜就可以找到。所以,这里就不在复述了。而今天我们谈的主要是如何判断Android是否是平板。
众所周知,平板和手机的主要区别就是屏幕尺寸的大小。譬如:手机有4寸、5寸等;而平板就有7寸、8寸、10寸等。但是随着科技的发展以及硬件的快速推进,两者之间的屏幕尺寸之间的界限愈来愈模糊了。所以之前使用的直接使用屏幕分辨率的方法就有点不合时宜了:
/**
* 是否是平板
* @param activity
* @return
*/
public static boolean isTablet(Activity activity) {
final DisplayMetrics metrics = new DisplayMetrics();
activity.getWindowManager().getDefaultDisplay().getMetrics(metrics);
final int width = metrics.widthPixels;
final int height = metrics.heightPixels;
if (width > 1023 || height > 1023) {
return true;
} else {
return false;
}
}
之前看到过一篇博客,上面提供了一种比较适合的方式。简单来说就是在适配各个分辨率时,在相应的文件夹下配置一个resources,定义好值。再在需要的时候根据getResources()和resId获取其值:
/**
* 根据value适配的不同判定是否是平板
* @param context
* @return
*/
public static boolean isTablet(Context context) {
return context.getResources().getBoolean(R.bool.isTablet);
}
在res/values下创建bool.xml
<?xml version="1.0" encoding="utf-8"?>
<resources>
<bool name="isTablet">false</bool>
</resources>
复制bool.xml到res/values-sw600dp ( res/values-sw720dp or res/values-xlarge )下,更改isTablet为true即可。
继续查看该博客,发现博主又发现一比较友好的方式,是提取自google官方的工具类:
具体查看该类:com.google.android.apps.iosched.util.UIUtils
具体处理方法如下:
public static boolean isTablet(Context context) {
return (context.getResources().getConfiguration().screenLayout
& Configuration.SCREENLAYOUT_SIZE_MASK)
>= Configuration.SCREENLAYOUT_SIZE_LARGE;
}
参考:http://blog.zerob13.in/ 作者:混动的云
感谢各位博主的释疑和布道。