偶然间想起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"?>    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/ 作者:混动的云


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


更多相关文章

  1. 最新統計:44% IT 和商務人士選擇 Android(安卓)作為入手首款平板
  2. 在Android中通过jni方式使用编译好的FFmpeg库-Android中使用FFmp
  3. Apple 再挑起戰火,控告 Samsung 15款 Android(安卓)產品設計侵權
  4. 松下将在日本推出 7 寸和 10 寸企业用三防 Android(安卓)蜂巢平
  5. 查看Android(安卓)API文档的正确方式
  6. Android进程守护详解及解决方案
  7. android手机定位不准的问题
  8. Android静默安装和静默卸载
  9. Google Docs 更新,提供 Honeycomb 平板更佳的使用者体验

随机推荐

  1. android 日期对话框
  2. Android动态获取当前手机IP地址
  3. react-native 升级版本号
  4. android中textView周围显示图片
  5. Android架构知识
  6. 粘贴复制Android复制和粘贴的实现
  7. Android Studio修改apk命名
  8. Android 文件存储--内部存储的例子
  9. Android AOSP输入法(LatinIME)大写判断分
  10. android的文件操作。(未整理完成)