Android如何判断是否是平板

偶然间想起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


	
    		false
	

复制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/ 作者:混动的云


感谢各位博主的释疑和布道。


你可能感兴趣的:(Android)