Android屏幕尺寸详解
原文地址
1、重要概念
随着Android厂商对系统的不断定制,Android出现越来越多不同尺寸的手机,由于尺寸和分辨率等不同,从而导致Android的适配成为一个老大难的问题,今天我们就来聊聊Android中的屏幕尺寸。
我们先了解一下几个重要的概念:
什么是屏幕尺寸、屏幕分辨率、屏幕像素密度?
什么是dp、dip、dpi、sp、px?他们之间的关系是什么?
什么是mdpi、hdpi、xdpi、xxdpi?如何计算和区分?
(1)屏幕尺寸
屏幕尺寸指屏幕的对角线的长度,单位是英寸,1英寸=2.54厘米,
比如常见的屏幕尺寸有2.4、2.8、3.5、3.7、4.2、5.0、5.5、6.0等。
(2)屏幕分辨率
屏幕分辨率是指在横纵向上的像素点数,单位是px,1px=1个像素点。一般以纵向像素*横向像素,如1960*1080。
(3)屏幕像素密度
屏幕像素密度是指每英寸上的像素点数,单位是dpi,即“dot per inch”的缩写。屏幕像素密度与屏幕尺寸和屏幕分辨率有关,在单一变化条件下,屏幕尺寸越小、分辨率越高,像素密度越大,反之越小。
(4)dp、dip、dpi、sp、px
(1)px我们应该是比较熟悉的,前面的分辨率就是用的像素为单位,大多数情况下,比如UI设计、Android原生API都会以px作为统一的计量单位,像是获取屏幕宽高等。
(2)dip和dp是一个意思,都是Density Independent Pixels的缩写,即密度无关像素,上面我们说过,dpi是屏幕像素密度,假如一英寸里面有160个像素,这个屏幕的像素密度就是160dpi,那么在这种情况下,dp和px如何换算呢?在Android中,规定以160dpi为基准(320*480),1dip=1px,如果密度是320dpi,则1dip=2px,以此类推,关系式:px = dp * (dpi / 160)。
假如同样都是画一条320px的线,在480*800分辨率手机上显示为2/3屏幕宽度,在320*480的手机上则占满了全屏,如果使用dp为单位,在这两种分辨率下,160dp都显示为屏幕一半的长度。这也是为什么在Android开发中,写布局的时候要尽量使用dp而不是px的原因。
(3)而sp,即scale-independent pixels,与dp类似,但是可以根据文字大小首选项进行放缩,是设置字体大小的御用单位。
(5)ldpi、mdpi、hdpi、xdpi、xxdpi、xxxdpi
我们先来看两张不同dpi对应的大致分辨率。
其中:
ldpi:mdpi:hdpi:xhdpi:xxhdpi:xxxdpi = 0.75:1:1.5:2:3:4 = 3:4:6:8:12:16
这个比值乘以12就得到对应屏幕密度手机桌面icon图标大小。
2、部分Android测试机分析
先看两个计算公式:
(1)dpi = √(长度像素数² + 宽度像素数²) / 屏幕对角线英寸数
(2)px = dp * (dpi / 160)
在项目开发过程中,遇到屏幕很大的手机,结果显示的图标却很小,和预期不一致,例如华为机型MT1-U06。
原因是:真机屏幕的dpi会取和谷歌标准最相近的标准dpi,然后density按照最相近的dpi来定。
部分机型屏幕尺寸、分辨率计算:
(1)一加A1001 ,主屏尺寸:5.5英寸,1920×1080像素,测试为xxdpi:
dpi = √(长度像素数² + 宽度像素数²) / 屏幕对角线英寸数 = √(1920² + 1080²) / 5.5 =√ 3686400 + 1166400 /5.5 = √ 4852800 /5.5 = 2202.9 /5.5 =440.6
density = dpi/160 = 440.6/160 = 2.75
就近原则,对应dpi为xxdpi,与测试结果一致。
(2)Nexus 5,屏幕尺寸:4.95英寸,分辨率是1920×1080像素(FHD),测试为xxdpi :
dpi = √(长度像素数² + 宽度像素数²) / 屏幕对角线英寸数 =2202.9 /4.95 =445
density = dpi/160 = 445/160 = 2.78
同理,就近原则,对应dpi为xxdpi,与测试结果一致。
(3)华为MT1-U06,屏幕:6.1英寸(机身尺寸:64.8*129*7.69mm),像素1280×720px,对应hdpi:
dpi = √(长度像素数² + 宽度像素数²) / 屏幕对角线英寸数 = √(1280² + 720²) / 6.1 =√ 1638400 + 518400 /6.1 = √ 2156800 /6.1 = 1468.6 /6.1 =240.75
density = dpi/160 = 240.75 /160 = 1.5
这个数值,刚刚好是hdpi。
(4)三星galaxy s4 ,主屏:5英寸,1920x1080像素,xxdpi:
dpi = √(长度像素数² + 宽度像素数²) / 屏幕对角线英寸数 =2202.9 /5 =440.6
density = dpi/160 = 440.6/160 = 2.75
同理,就近原则,对应dpi为xxdpi,与测试结果一致。
这就说明了之前为什么屏幕大,但是图标很小的情况了。
Android屏幕尺寸详解相关推荐
- android屏幕适配详解
android屏幕适配详解 官方地址:http://developer.android.com/guide/practices/screens_support.html 一.关于布局适配建议 1.不要 ...
- android 电脑屏幕尺寸,Android屏幕计量单位详解 -电脑资料
1.px (pixels)(像素):是屏幕的物理像素点,与密度相关,密度大了,单位面积上的px会比较多, 2.dip或dp(与密度无关的像素):一个基于density的抽象单位,这个和设备硬件有关,通 ...
- android屏幕分辨率详解 ldpi mdpi hdpi 程序UI自适应 《官方翻译》
2019独角兽企业重金招聘Python工程师标准>>> 看世界杯的空闲 时间,翻译一下 官方文档.分辨率 问题是大家都很关心的(720×480会不会悲剧),而关于这个问题,andro ...
- Android屏幕适应详解(一)
一.关于布局适配 1.不要使用绝对布局 2.尽量使用match_parent 而不是fill_parent . 3.能够使用权重的地方尽量使用权重(android:layout_weight) 4.如 ...
- Android屏幕锁定详解(一)
相信手机屏幕的锁定大伙熟悉吧?今天小马就找个时间写下对屏幕锁的控制及学习,希望能帮助朋友们对屏幕锁更加了解,以备不时之用,九宫格 PIN密码 密码锁屏等的小马会有屏幕锁二中详细介绍,大家看来看这篇简单 ...
- Android屏幕分辨率详解(VGA、HVGA、QVGA、WVGA、WQVGA)
这些术语都是指屏幕的分辨率. VGA:Video Graphics Array,即:显示绘图矩阵,相当于640×480 像素: HVGA:Half-size VGA:即:VGA的一半,分辨率为480× ...
- android开发照相机啊,Android照相机开发详解(一)
Android相机开发详解(一) Android相机开发详解(一) 请支持原创,尊重原创,转载请注明出处:http://blog.csdn.net/kangweijian(来自kangweijian的 ...
- Android相机开发详解(一)
Android相机开发详解(一) 请支持原创,尊重原创,转载请注明出处:http://blog.csdn.net/kangweijian(来自kangweijian的csdn博客) Android相机 ...
- Android常用计量单位详解(px,in,mm,pt,dp,dip,sp)
Android常用计量单位详解(px,in,mm,pt,dp,dip,sp) 在传统PC软件开发中经常以像素为单位设计计算机用户界面.例如,定义一个宽度为300像素的表单字段,列之间的间距为5个像素, ...
- 《Java和Android开发实战详解》——2.2节构建Java应用程序
本节书摘来自异步社区<Java和Android开发实战详解>一书中的第2章,第2.2节构建Java应用程序,作者 陈会安,更多章节内容可以访问云栖社区"异步社区"公众号 ...
最新文章
- 2022-2028年中国中密度纤维板市场投资分析及前景预测报告
- 2018年看好这些半导体企业
- C语言实现随机快速排序random quick sort算法(附完整源码)
- e.printStackTrace() 会导致锁死?
- lua5.3 获取table的元素数量
- Laravel Event模块分析
- AutoJs学习-自动添加微信群好友
- 像素测量工具_像素大厨PxCook for Mac(自动标注工具)中文免费版
- 程序员是不是青春饭?年纪大了何去何从
- Latex标题页上标和脚注的处理方法 如何在latex文件中添加footnote
- 通过微信公众平台获取公众号文章
- maya2020卸载不干净_MAYA 卸载不干净,怎么完全彻底删除清理干净MAYA各种残留注册表和文件?...
- Values in v:2 index key pattern cannot be of type object
- 计算机用户注销后不见了,注销当前用户后 Win10找不到Administrator用户登录选项怎么解决?...
- 什么是损失函数?什么是梯度
- nyoj42一笔画问题 【欧拉回路】
- API文档的使用方法
- springboot毕设项目养老平台的设计与实现u8sua(java+VUE+Mybatis+Maven+Mysql)
- c#串口通讯 c#串口连接电子秤电子天平
- 王春亮抓龙筋与抓凤筋操作流程
热门文章
- CC呼叫中心系统源码注册机cccloud
- android 横向长图,Android实现截超长图
- C++ OpenCV制作九宫格拼图游戏
- 华为认证hcia含金量_华为HCIA认证含金量如何?
- catia中尺子没了怎么调出来,【答疑】草图大师sketchup的尺子快捷键是什么呀? - 羽兔网问答...
- 目标检测算法YOLO3论文解读
- VS2008中关于“加载安装组件时遇到问题。取消安装”的解决办法
- AFNetworking 2.0 来了
- JDK下载安装教程及环境变量配置
- java cmd 编译jar_Java程序在命令行下编译运行打Jar包