使用屏幕的实际的宽高,根据勾股定理来计算设备的尺寸。

由于Android系统版本的不同和有的设备具有虚拟按键,需要根据不同的SDK的版本使用不同的方法来获取屏幕的实际宽高。

计算方法:

Math.sqrt((realWidth/metrics.xdpi) * (realWidth /metrics.xdpi) + (realHeight/metrics.ydpi) * (realHeight / metrics.ydpi))

另外,这种计算的方法有一些误差,希望有大拿能够提出更好计算方法。

具体代码如下:

private static double mInch = 0;
/*** 获取屏幕尺寸* @param context* @return*/
public static double getScreenInch(Activity context) {if (mInch != 0.0d) {return mInch;}try {int realWidth = 0, realHeight = 0;Display display = context.getWindowManager().getDefaultDisplay();DisplayMetrics metrics = new DisplayMetrics();display.getMetrics(metrics);if (android.os.Build.VERSION.SDK_INT >= 17) {Point size = new Point();display.getRealSize(size);realWidth = size.x;realHeight = size.y;} else if (android.os.Build.VERSION.SDK_INT < 17&& android.os.Build.VERSION.SDK_INT >= 14) {Method mGetRawH = Display.class.getMethod("getRawHeight");Method mGetRawW = Display.class.getMethod("getRawWidth");realWidth = (Integer) mGetRawW.invoke(display);realHeight = (Integer) mGetRawH.invoke(display);} else {realWidth = metrics.widthPixels;realHeight = metrics.heightPixels;}mInch =formatDouble(Math.sqrt((realWidth/metrics.xdpi) * (realWidth /metrics.xdpi) + (realHeight/metrics.ydpi) * (realHeight / metrics.ydpi)),1);} catch (Exception e) {e.printStackTrace();}return mInch;
}
/*** Double类型保留指定位数的小数,返回double类型(四舍五入)* newScale 为指定的位数*/
private static double formatDouble(double d,int newScale) {BigDecimal bd = new BigDecimal(d);return bd.setScale(newScale, BigDecimal.ROUND_HALF_UP).doubleValue();
}

Android 获取屏幕尺寸(设备对角线的英寸数)相关推荐

  1. Android获取屏幕尺寸,屏幕适配

    获取屏幕尺寸: DisplayMetrics dm = new DisplayMetrics(); getWindowManager().getDefaultDisplay().getMetrics( ...

  2. Android 获取屏幕尺寸与密度

    遇到一个问题,我的地图浮标图片在WVGA手机上正好,在QVGA上就显的太大,所以我要根据屏幕的不同调整浮标的大小使其在QVGA大小合适.有的同事提出了依据分辨率来区分不同的屏幕,但是单WVGA就支持好 ...

  3. android获取屏幕尺寸、密度(判断手机屏幕类型)

    1. 概念介绍 分辨率:横纵2个方向的像素点的数量,常见取值 480X800 ,320X480 屏幕大小: 例如我的是4.0 英寸, 就是指 从屏幕的左上角 到 屏幕的右下角 连线长度为4.0英寸(可 ...

  4. android获取屏幕尺寸、密度

    http://developer.android.com/reference/android/util/DisplayMetrics.html DisplayMetrics metric = new ...

  5. android获取屏幕尺寸,像素

    public void getScreen(){// 通过Activity类中的getWindowManager()方法获取窗口管理,再调用getDefaultDisplay()方法获 取获取Disp ...

  6. Android获取屏幕尺寸大小

    官方API: A structure describing general information about a display, such as its size, density, and fo ...

  7. android查看屏幕大小,android获取屏幕尺寸的三种代码

    第一种:DisplayMetrics dm = new DisplayMetrics(); getWindowManager().getDefaultDisplay().getMetrics(dm); ...

  8. Android获取屏幕实际高度跟显示高度,判断Android设备是否拥有虚拟功能键

    //获取屏幕尺寸,不包括虚拟功能高度 getWindowManager().getDefaultDisplay().getHeight(); 获取屏幕原始尺寸高度,包括虚拟功能键高度, private ...

  9. Android 获取屏幕大小以及尺寸

    在Android开发中,获取手机屏幕像素的方法有多种.在这里,我仅仅做一个小小的总结,将这些方法分为两类.一类是使用Activity类来获取,另一类便是使用上下文(Context)来获取. /*** ...

最新文章

  1. 漫画:什么是动态规划?
  2. 浅谈微软跨平台与MONO
  3. 如果你不曾失败,只因你从未尝试
  4. Android-使用FindBugs
  5. freebsd下vi的使用
  6. 成功解决model_selection\_search.py:761: DeprecationWarning: The grid_scores_ attribute was deprecated in
  7. mysql中的sql_mysql中的sql语句
  8. Nhibernate 对view 查询的几种方法
  9. C#解密出生日期【C#】
  10. transactionManager 以及datasource type解析
  11. oracle登录日志查看_last命令详解--查看Linux 登录日志+实例说明
  12. 技术人如何转型产品?
  13. Python接通图灵机器人
  14. C++之String的find方法,查找一个字符串在另一个字符串的什么位置;leveldb字符串转数字解析办法...
  15. 台式计算机开机密码设置,设置台式电脑的开机锁屏密码的方法步骤
  16. Labview完全卸载工具msiblast NI
  17. cadz轴归零命令_cad 中z轴归0方法
  18. ROS入门教程(一)
  19. 基于C#语言Windows窗体应用(.Net Framework)的教室点名系统V1.0
  20. 梁漱溟:人生的三种态度 | 合道的生活

热门文章

  1. 这一波人工智能泡沫将会怎么破灭?
  2. 宝,这是什么镜?美颜滤镜!
  3. 利用Golang可选参数实现可选模式
  4. 计算二叉树带权路径和(WPL)
  5. Word控件Spire.Doc 【书签】教程(5): 使如何在word文档的书签处插入图片
  6. 【实战】物联网安防监控项目【2】———boa服务器的移植
  7. PyQt(Python+Qt)学习随笔:Qt Designer中部件的enabled属性
  8. 证书关于 pem der cer crt csr pfx 的区别
  9. 手动编译完Exchangeis 的exchangis-service服务无法启动
  10. 平板电脑哪种电容笔更好用?平价好用的iPad电容笔推荐