了解开发手机的各项参数之显示屏

2023-11-01

现在android手机越来越便宜了,所以开发的话用的最多的还是真机.作为一个程序员,如果拿着手机却在百度找手机的参数,这可不太好.

所以,让我们从程序员的角度来了解一下手机显示屏的参数.

public class MainActivity extends Activity {

	private TextView tv;
	@Override
	protected void onCreate(Bundle savedInstanceState) {
		super.onCreate(savedInstanceState);	
		setContentView(R.layout.activity_main);
		
		//获取显示屏实例
		Display d = getWindowManager().getDefaultDisplay();
		//将显示屏的信息转换成字符串
		String show = d.toString();
		
		//以逗号为分隔符对字符串断行,看起来舒服些
		StringBuffer sb = new StringBuffer();
		String[] strs = show.split(",");
		for(String str : strs)
		{
			sb.append(str+"\n");
		}
		
		//DisplayMetrics是一个描述显示屏一般信息(大小,密度,字体缩放等)的结构体
		DisplayMetrics dm = new DisplayMetrics();
		d.getMetrics(dm);
		
		//屏幕宽和高,单位是像素
		int width = dm.widthPixels;
		int height = dm.heightPixels;
		//屏幕每英寸像素点
		float xdpi = dm.xdpi;
		float ydpi = dm.ydpi;
		
		//计算宽和高是多少英寸
		float xInch = width / xdpi;
		float yInch = height / ydpi;
		
		//计算显示屏是多少英寸
		double screenInch = Math.sqrt(xInch * xInch + yInch * yInch);
		
		String sScreenInch = String.format("屏幕是 %.1f 英寸", screenInch);
		sb.append(sScreenInch);
		
		tv = (TextView)findViewById(R.id.show);
		tv.setText(sb.toString());
		
	}
}

下面是运行截图:


看到这些参数,应该有人已经猜到我用的是MX3了,吐槽下,手机太不经摔了,2次就摔花屏了鄙视


下面一一来说下参数的意思:

1. real 1080 x 1800 

这个简单,宽1080像素  高1800像素

2.density 440 (415.636 x 415.636)dpi  (dpi: dots per inch)

通用的算法是这样的,

像素密度density =  开方(1080平方+1800平方) / 屏幕英寸(这里是5.1)

那么结果是: 约等于412 dpi

难道是我数学不好?

换个方向算,若要density = 440,那么,计算过程应该是这样:

开方(1080平方+1920平方) / 5英寸 = 440 鄙视虚假宣传

3.ScaledDensity = 2.75

这个和开发就关系很大了,因为已知 屏幕像素密度是"440dpi"

那么 440 / 160 = 2.75 

为什么是除以160呢?

安卓规定,

屏幕密度是160dpi时 , 1dip = 1     px;

屏幕密度是240dpi时 , 1dip = 1.5 px;

屏幕密度是320dpi时 , 1dip = 2    px;


最后,算一下我这个手机屏幕宽高各是多少dp吧:

宽 :   1080 / 2.75 = 393 dp

高:    1800 / 2.75 = 655 dp

当然,实际计算布局高度的时候,还要减去通知栏和标题栏高度.


本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

了解开发手机的各项参数之显示屏 的相关文章

  • 关闭 Android 中的飞行模式

    如果 num gt 50 我想关闭飞行模式 我实现了这段代码 来自在 Android 中切换飞行模式 https stackoverflow com questions 5533881 toggle airplane mode in and
  • 定期运行任务(每天一次/每周一次)

    我想定期 每周 每天一次 运行一些任务 即获取我的网站新闻页面 即使我的应用程序已关闭 是否可以 是的 您需要查看报警管理器 http developer android com reference android app AlarmMan
  • 按钮未显示在屏幕上

    我创建了一个应用程序 其中显示带有图像和文本的列表视图 我在页面末尾添加按钮 但这没有显示在屏幕上 我是 Android 新手 我该如何解决这个问题 这是我的 UI XML 代码
  • 在 WebView 中完成 AdBlock

    我即将在我的 Android 应用程序中推出 WebView AdBlocking 我想知道这是否会有效地阻止广告 或者在 Webview 本身内是否还有更多工作要做 我尚未修改 基本上我有一个存储在 Android 资产中的主机文件 其中
  • 如何在 Android 上创建 YouTube 的双击手势?

    我在 Android 上有 exoplayer 的应用程序 我已经创建了 youtube双击手势用动画向前或向后跳跃 10 秒 如何在双击时创建具有波纹效果的半圆 像这样 这个怎么做 我也想实现这样的功能 所以我自己编写了它来 复制 You
  • Android中不同线程的数据库访问

    我有一个在 AsyncTasks 中从互联网下载数据的服务 它解析数据并将其存储在数据库中 该服务持续运行 当服务写入数据库时 活动会尝试从数据库中读取更改 我有一个数据库助手 有多种写入和读取方法 这会导致问题吗 可能尝试从两个不同的线程
  • 监听什么来检测 Android 中的请勿打扰模式更改?

    我希望我的应用程序在手机设置为请勿打扰模式 仅限闹钟 仅限优先级或完全静音 时显示通知 通过聆听 这效果非常好android media RINGER MODE CHANGED在快速设置中检查此模式并在已选择的选项卡中选择模式时 但是 当选
  • android 确定设备是否采用从右到左的语言/布局

    有没有办法确定设备是否使用从右到左的语言 例如阿拉伯语 而不是从左到右的语言 英语 与较旧的 API 级别 低至 10 兼容的东西是必要的 SOLUTION 我最终在接受的答案中使用了 xml 方法 接下来 我还添加了此处指示的代码 以应对
  • 获取可以共享数据的应用程序列表

    此代码显示默认共享对话框 Intent sharingIntent new Intent Intent ACTION SEND sharingIntent setType text html sharingIntent putExtra a
  • AnalyticsService 未在应用程序清单中注册 - 错误

    我正在尝试使用 sdk 中提供的以下文档向 Android 应用程序实施谷歌分析服务 https developers google com analytics devguides collection android v4 https d
  • Android Web Intent 问题

    G day 免责声明 我不是 Android 开发人员 我正在对我所描述的问题进行质量检查 我用来描述这个问题的技术术语可能是错误的 我正在测试一个 Android 应用程序 该应用程序在其清单中描述它可以使用 type 的地址处理 Web
  • window.onbeforeunload 在 Android Chrome 上不会触发 [alt.解决方案?]

    我开发了一个简单的聊天应用程序 我正在使用 window onbeforeunload当有人关闭选项卡 浏览器时 基本上是当用户离开房间时 通知其他用户 这是我的代码 scope onExit function scope chatstat
  • Google 移动广告和 Kindle Fire

    我最近用 Google 移动广告替换了 AdMob 库 对此我有一个疑问 广告会出现在 Amazon Kindle Fire 设备上吗 我问这个是因为我知道 Google 移动广告依赖于 Google Play 服务 所以我有点困惑 Goo
  • 如何在android中的操作栏中创建Edittext?

    我们可以在操作栏中使用编辑文本吗 在阅读了 Google 中的大量资源后 我找不到如何在操作栏中创建编辑文本 谁能告诉我该怎么做 您可以设置自定义View为了ActionBar像这样 getActionBar setCustomView R
  • ACCESS_BACKGROUND_LOCATION 不适用于低于 Q (29) 的 Android 版本

    我的应用程序面向 Android API 28 根据文档 https developer android com preview privacy location target android 10 我应该要求ACCESS BACKGROU
  • Android - iphone 风格 tabhost [关闭]

    就目前情况而言 这个问题不太适合我们的问答形式 我们希望答案得到事实 参考资料或专业知识的支持 但这个问题可能会引发辩论 争论 民意调查或扩展讨论 如果您觉得这个问题可以改进并可能重新开放 访问帮助中心 help reopen questi
  • “无法实例化活动”错误

    我的一个 Android 应用程序拥有大约 100 000 个用户 每周大约 10 次 我会通过 Google 的市场工具向我报告以下异常情况 java lang RuntimeException Unable to instantiate
  • 在 Android 布局 xml 文件中使用字符串格式参数 [重复]

    这个问题在这里已经有答案了 我在 String xml 文件中定义了一个使用格式参数的字符串 即
  • Android:无法发送http post

    我一直在绞尽脑汁试图弄清楚如何在 Android 中发送 post 方法 这就是我的代码的样子 public class HomeActivity extends Activity implements OnClickListener pr
  • 如何以编程方式创建活动转换?

    我想以编程方式创建一个动画 以从触摸屏点启动具有缩放效果的活动 接下来我模拟缩放输入效果

随机推荐

  • 基于数据挖掘的社交网络情感分析研究

    基于数据挖掘的社交网络情感分析研究 摘 要 随着近年来国内诸如微博 微信 国外诸如推特 Facebook 等知名社交网络平台及在线社交网络平台访问量的呈爆发式快速增长 人们已越来越地倾向于直接在各类社交网络平台基础上来表达其自己表达的各种观
  • JavaWebMyBatis中文写入数据库变问号解决方式

    首先感谢大佬给我思路 有同学也会这样 在学习javaweb时中文插入数据库变成了问号 如果你没用框架 那就在链接数据库的url后面加上 characterEncoding utf8 useUnicode true即可 具体可参考这篇文章 如
  • 16瓶药水一瓶有毒,去小白鼠测试哪一瓶水有毒?

    16瓶药水一瓶有毒 去小白鼠测试哪一瓶水有毒 面试的时候有个面试官问我 有16瓶药水 其中一瓶有毒 一只小白鼠喝过之后 一天之后会死亡 要求在少于15只小白鼠的情况下判断出哪一瓶有毒 药水可以兑在一起 小白鼠也可以喝多瓶药水 我在面试的时候
  • Filter——实现权限拦截

    创建Login jsp success jsp error jsp login jsp
  • DAPP开发初探

    前言 最近DAPP的开发貌似很火 学习了区块链的一些知识之后 相信有很多人和我一样 也想了解开发一个DAPP是一个怎样的流程 下面将通过一个简单的栗子来初识一下DAPP的开发流程 届时 我们也将开发出第一个DAPP应用 永存的留言 在线体验
  • OSG第三方库编译之十八:FBX安装(Windows、Linux、Macos环境下安装)

    目录 1 FBX介绍 2 FBX下载 3 Windows下安装 4 Linux下安装 5 MacOS下安装 1 FBX介绍 FBX是Autodesk公司出品的一款用于跨平台的免费三维创作与交换格式的软件 通过FBX用户能访问大多数三维供应商
  • JavaScript 绘制柱状图

    JavaScript 绘制柱状图 index html文件
  • linux下的串口设备管理器,在Linux下用minicom管理串口设备

    因为近期要在外地建立一个网站的发布机房 设备有 防火墙 交换机 负载均衡器 DELL2950 1950服务器 存储设备等 设备都在外地 又没有远程over IP的KVM 所以想利用DELL服务器的 远程管理卡 对服务器进行 带外管理 接着用
  • Git GitHub管理代码

    准备工作 注册一个GitHub账号 电脑安装Git软件 新建仓库 上传代码 进入GitHub网页 登录 新建一个repositoty 只用填写仓库名字 不要勾选Initialize this repository with a README
  • 基于SpringBoot+Vue的家具网站设计与实现

    博主介绍 大家好 我是一名在Java圈混迹十余年的程序员 精通Java编程语言 同时也熟练掌握微信小程序 Python和Android等技术 能够为大家提供全方位的技术支持和交流 我擅长在JavaWeb SSH SSM SpringBoot
  • NACHI机械臂后台SOCKET通讯

    NACHI机械臂后台SOCKET通讯 将机械臂做为服务器 电脑作为客户端 通讯程序在机械臂后台运行 我是先在电脑上写好 导入机械臂文件夹中 转化成机器人语言 再在用户任务这里开启它的任务号码 端口号设置为10030 代码 TCP IP So
  • nginx之配置proxy_set_header

    nginx之配置proxy set header win10客户端请求web服务 win10的ip 192 168 223 1 nginx作为反向代理服务器 192 168 223 136 nginx作为后端web服务器 192 168 2
  • 伦敦金天天实时行情走势图

    伦敦金天天的走势图走势图中都有交易的机会 但高质量的交易信号和进场时机不是经常出现 如果能够过滤掉不佳的交易信号 大家的投资绩效就有望大幅提升 在每天的实时行情走势图中 长影线K线是高胜率的信号 它代表金价拒绝上涨或下跌 伦敦金在实时行情走
  • Spring异步Async和事务Transactional注解

    Spring开发中我们我们常常用到 Transaction和 Async 但这2个注解加在一起很多的开发者不敢用 担心事务不生效 下面我们就仔细讲解一下这2个注解同时运用 文章用3个场景讲述它们之间的运用 相信看完本篇文章你就能灵活运用这2
  • Redis集群详解

    Redis集群详解 Redis有三种集群模式 分别是 主从模式 Sentinel模式 Cluster模式 三种集群模式各有特点 关于Redis介绍可以参考这里 NoSQL 二 Redis Redis官网 https redis io 最新版
  • 基类(父类)private 定义的变量,子类可以使用吗

    基类 父类 private 定义的变量 子类是可以使用的 private变量是传给子类了的但是不可以直接使用 需要我们去用基类里面的函数去初始化或修改继承给子类的private变量 就这样就可以调用private变量了
  • 【camera】【ISP】Lens Shading Correction镜头阴影校正

    ISP LSC 镜头阴影校正 参考 https zhuanlan zhihu com p 389334269 https blog csdn net xiaoyouck article details 77206505 https www
  • MariaDB在Linux环境下的安装及使用

    本操作适合Debain ubuntu和deepin等 此处安装的环境为deepin V23 一 查看是否已安装MariaDB mysql V 二 安装命令 sudo apt get install mariadb server 三 修改配置
  • 第一课:LabView2015中文版安装教程

    1 下载解压缩 双击文件 2015LV WinChn exe 将 点击unzip解压 解压路径为默认为 C National Instruments Downloads LabVIEW Chinese 2015 2 软件成功解压后 自动弹出
  • 了解开发手机的各项参数之显示屏

    现在android手机越来越便宜了 所以开发的话用的最多的还是真机 作为一个程序员 如果拿着手机却在百度找手机的参数 这可不太好 所以 让我们从程序员的角度来了解一下手机显示屏的参数 public class MainActivity ex