文章目录

  • 计算的方法
  • Java 代码实现
  • Kotlin 代码实现

计算的方法

手机屏幕的大小是指 手机屏幕 对角线 的长度,单位为 英寸 或 吋。

对角线的长度 LLL (英寸)
屏幕宽 WWW (英寸)
屏幕高 HHH (英寸)

L=W2+H2L = \sqrt{W^2 + H^2}L=W2+H2​

如何获取屏幕的宽度(英寸),获取屏幕的高度(英寸)?

我们能获取到数据:

  • 屏幕的宽高,单位是像素 (pixels):widthPixels,heightPixels,对应下面代码中的 point.xpoint.y
  • 每英寸的像素数:xdpi (宽)和 ydpi (高),对应下面代码中的 metrics.xdpimetrics.ydpi

屏幕的宽度(英寸) widthInch=widthPixelsxdpiwidthInch = \frac{widthPixels}{xdpi}widthInch=xdpiwidthPixels​

屏幕的宽度(英寸) heightInch=heightPixelsydpiheightInch = \frac{heightPixels}{ydpi}heightInch=ydpiheightPixels​

屏幕的尺寸(英寸) ScreenSize=widthInch2+heightInch2ScreenSize = \sqrt{widthInch^2 + heightInch^2}ScreenSize=widthInch2+heightInch2​

Java 代码实现

point.x :屏幕的宽度,单位是像素
point.y: 屏幕的高度,单位是像素
metrics.xdpi:宽度上,每英寸像素数
metrics.ydpi:高度上,每英寸像素数
point.x / metrics.xdpi 是以 英寸 为单位的宽度
point.y / metrics.ydpi 是以 英寸 为单位的高度

getRealSize(point) 可以获取到屏幕中状态栏(status bar)的高度

    public static double calcScreenSize(Activity activity) {DisplayMetrics metrics = new DisplayMetrics();activity.getWindowManager().getDefaultDisplay().getMetrics(metrics);Point point = new Point();if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.R) {activity.getDisplay().getRealSize(point);} else {activity.getWindowManager().getDefaultDisplay().getSize(point);}double w = point.x / metrics.xdpi; // unit is inchdouble h = point.y / metrics.ydpi; // unit is inchdouble size = Math.sqrt(w * w + h * h);Log.d(TAG, String.format("Screen size: %.1f", size));return size;}

Kotlin 代码实现

    fun calcScreenSize(): Double {val metrics = DisplayMetrics()windowManager.defaultDisplay.getMetrics(metrics)val point = Point()if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.R) {display?.getRealSize(point)} else {windowManager.defaultDisplay.getSize(point)}val w: Double = (point.x / metrics.xdpi).toDouble() // unit is inchval h: Double = (point.y / metrics.ydpi).toDouble() // unit is inchval size = Math.sqrt(w * w + h * h)Log.d(TAG, String.format("Screen size: %.1f", size))return size}

Android 11 之后,获取 Android 手机屏幕的尺寸(英寸)相关推荐

  1. android : 更新android 11 后 获取设备唯一码的方式

    android 11 发布了 android 11 以前使用的MAC的设备唯一码的方式被废弃了,因为11不让用了,然后就去官方上找推荐了; 之前的获取MAC的地址,有兴趣的可以点进去看看 官方推荐使用 ...

  2. 手机屏幕反转尺寸_如何在Android手机的屏幕上反转颜色

    手机屏幕反转尺寸 If you (or someone you love) has vision issues, however, the tiny fonts and complex colors ...

  3. android 11 kotlin获取蓝牙mac地址

    android 11 kotlin获取蓝牙mac地址 加权限 要获取system.uid系统权限,具体不细述,网上可查 AndroidManifest.xml中添加蓝牙权限 <uses-perm ...

  4. Android入门笔记之更改手机屏幕方向

    Android入门笔记之更改手机屏幕方向 <1>简介 通过一个按钮组来改变横屏竖屏显示. <2>关键步骤 主要通过android.app.activity.getRequest ...

  5. android 11 版本更新内容,android 11怎么更新 android 11更新方法

    android 11怎么更新?在最近,谷歌和OPPO手机相继推出android 11,那我们该怎么将自己手机的Android版本升级到android 11呢,android 11怎么更新,下面就和小编 ...

  6. uniapp微信小程序怎样获取宽高?获取系统信息?微信小程序 获取用户手机屏幕高度与宽度信息等

    第一种方案(推荐) "vw" = "view width" "vh" = "view height" 使用 CSS3 引 ...

  7. 手机图片到底要做多宽才可以适应所有手机屏幕的尺寸?

    现在移动互联网正搞得风生水起,大伙也不甘示弱,周围的朋友会经常从微信里面发发图片,设计师们也经常制作移动网站和手机APP等,这些过程中大家都会碰到这样一个问题:手机图片到底要做多宽才可以适应所有手机屏 ...

  8. Android开发_获取手机屏幕的尺寸

    1.设备不存在虚拟键: 第一种获取方法: public static void getScreenWidthAndHeight(Context context) {Display display = ...

  9. 紫光展锐六款芯片支持Android 11,SC9863A备受手机厂商青睐

    近日,紫光展锐发布的一则消息吸引了业界的关注.该公司表示,通过同步参与Android 11的开发,其六款智能手机芯片已完成对Android 11的部署.在Google发布Android 11正式版的同 ...

最新文章

  1. Angular:Promise.all()的具体应用
  2. Eclipse构建路径
  3. 自定义CSS博客皮肤
  4. 【Android RTMP】RTMP 直播推流阶段总结 ( 服务器端搭建 | Android 手机端编码推流 | 电脑端观看直播 | 服务器状态查看 )
  5. 北京活动 | 新书首发手把手带你的产品从0开始验证一个新的业务
  6. Ruby和SHELL中如何遍历指定目录的文件
  7. python实例化类执行顺序_Python实例化class的执行顺序
  8. protobuf java文档_Java中使用Protobuf
  9. HTML5学习笔记(二)
  10. HtmlHelper扩展 及 页面编码化
  11. JavaScript RegExp(正则)
  12. PyTorch 成程序员“新宠”,TensorFlow 风光不再?
  13. 小程序授权及获取unionid,
  14. Spark Streaming系列-1、什么是Spark Streaming?
  15. 静态条件下三轴加速度求角度的算法
  16. springboot vue uniapp公交路线查询系统源码
  17. Failed to start LSB: Bring up/down错误解决方法
  18. events插件的使用
  19. Mongodb std::exception::what(): basic_filebuf::underflow error reading the file: iostream error
  20. 智能音箱的差评|为什么我要买一堆垃圾回来吃灰!

热门文章

  1. html中搜索按钮是什么意思,htmlbutton标签是什么意思?htmlbutton标签的使用细节
  2. 科大讯飞x Datawhale糖尿病遗传风险检测挑战赛
  3. 一个好用的在线录屏软件
  4. 2020十大销售管理系统(排名不分先后)
  5. Redis连接池配置详解
  6. 专利 | 一种基于脑电神经反馈控制智能机器人的方法
  7. python计算机视觉pdf百度云下载_Python计算机视觉编程pdf
  8. 带上问题来学redis,看到不吃亏(什么是redis?缓存问题、数据一致性、redis配置文件汉化版)
  9. 分布式实时处理系统架构设计与机器学习实践
  10. python爬虫教程书籍-python爬虫有哪些书(python爬虫教程知乎)