做android开发绕不开的几个名词:ppi、dpi、px、sp、dp。那么它们的定义、区别和联系都是什么呢?这篇博客系统的做一个概述和总结。

1、基本概念

  • px:pixel,像素,电子屏幕上组成一幅图画或照片的最基本单元
  • pt: point,点,印刷行业常用单位,等于1/72英寸
  • ppi: pixel per inch,每英寸像素数,该值越高,则屏幕越细腻
  • dpi: dot per inch,每英寸多少点,该值越高,则图片越细腻
  • dp: dip,Density-independent pixel, 是安卓开发用的长度单位,1dp表示在屏幕像素点密度为160ppi时1px长度
  • sp: scale-independent pixel,安卓开发用的字体大小单位。

从上面的介绍可以看出,px、pt是一种类型,分别用于屏幕和印刷,表示各自的最基本单元;ppi、dpi是一种类型,分别用于屏幕和印刷,表示各自的像素、点密度;而dp、px分别表示长度单位和字体大小,他们的共同点都是,随着屏幕大小和分辨率而改变。

2、相互关系

2.1 pt和px

1pt=(dpi/72)px

上面的公式的意义就是,1pt等于1/72英寸。

2.2 ppi和dpi

dpi最初用于衡量打印物上每英寸的点数密度。DPI值越小图片越不精细。当DPI的概念用在计算机屏幕上时,就应称之为ppi。同理: PPI就是计算机屏幕上每英寸可以显示的像素点的数量。因此,在电子屏幕显示中提到的ppi和dpi是一样的。所以:

1ppi=1dpi

2.3 计算ppi

ppi是指屏幕像素密度,计算方式如下:

ppi=屏幕对角线像素点数/屏幕对角线长度=( √ (屏幕横向像素点^2 + 屏幕纵向像素点^2)/对角线长度)

举例说明:若一款手机屏幕分辨率为720px*1280px,4.3英寸。则点密度为 √ (720^2 +1280^2) /4.3 = 342ppi。

2.4 px和dp

dp为安卓开发时的长度单位,根据不同的屏幕分辨率,与px有不同的对应关系。

dp的大小的定义为:

在160ppi时:1px=1dp

所以,如果ppi为240的时候:1dp=1.5px,依次类推,而px和dp的计算公式为:

1dp=(ppi/160)px

同时结合android资源文件夹下,常见的几个名词:ldpi、mdpi、hdpi、xhdpi、xxhdpi,其对应关系如下:

密度 ldpi mdpi hdpi xhdpi xxhdpi
ppi 120 160 240 320 480
分辨率 240*320 320*480 480*800 720*1280 1080*1920
比例 0.75 1 1.5 2 3

同时由于ppi的值除了和像素总数有关,还与屏幕大小有关,所以计算的ppi不是严格的等于上表中的值,多数只是取近似值

2.5 dp和sp

dp和sp类似,都会随着屏幕大小和分辨率变化而改变,不同的是,在android中,dp表示长度单位,sp表示字体大小,在多数情况下

1dp=1sp

但是在文字尺寸是“大”或“超大”时,1sp>1dp。

(Tip:在设计中,多数以xhdpi为模板,此时1dp=2px)


不是闷骚的程序员算不上程序员。我的微信公众号“那点鼻事”,在这里周一到周五每天一篇文章,与技术无关,只哈牛逼。

屏幕适配基础——了解:ppi、dpi、px、sp、dp的更多相关文章

  1. mobile app & ppi & dpi & px

    mobile app & ppi & dpi & px How do dp, dip, dpi, ppi, pixels and inches relate? https:// ...

  2. android 屏幕适配基础(1)

    1. 概念定义 寸/英寸:   1寸=3.333333厘米:1英寸=2.54厘米(屏幕尺寸以英寸为单位) 像素 :    像素是组成图象的最基本单元要素:点. 一个像素有多大呢?主要取决于显示器的分辨 ...

  3. 屏幕尺寸,屏幕分辨率,屏幕密度,各种长宽单位(px,sp,dp,in.pt,mm)

    常见长宽单位表 名称 单位缩写 单位全拼 介绍 屏幕尺寸 '' 或 in inch 屏幕的大小,通常用屏幕对角线的长度表示.单位是寸 屏幕分辨率 px pixels 整个屏幕的像素数,一般用屏幕的像素 ...

  4. px sp dp 手机尺寸

  5. Android 浅谈 设计与屏幕适配 【1.6235449734285716】

    extends: http://www.ui.cn/detail/45435.html http://www.2cto.com/kf/201501/372699.html http://www.cnb ...

  6. 不同手机根据坐标计算控件、图片的像素,px 与 dp, sp换算公式?

    参考该帖子:http://www.cnblogs.com/bluestorm/p/3640786.html PPI = Pixels per inch,每英寸上的像素数,即 "像素密度&qu ...

  7. px 与 dp, sp换算公式?

    PPI = Pixels per inch,每英寸上的像素数,即 "像素密度" xhdpi: 2.0 hdpi: 1.5 mdpi: 1.0 (baseline) ldpi: 0. ...

  8. px 与 dp, sp换算公式?(转)

    PPI = Pixels per inch,每英寸上的像素数,即 "像素密度" xhdpi: 2.0 hdpi: 1.5 mdpi: 1.0 (baseline) ldpi: 0. ...

  9. Android单位转换 (px、dp、sp之间的转换工具类)

    在Android开发中,涉及到屏幕视频问题的时候,px.dp.sp之间的转换比较重要的一部分,所以杨哥整理了一个工具类给大伙用. package com.zw.express.tool; import ...

随机推荐

  1. Delphi ShellExecute的用法

    请在interface处uses句中加入ShellAPI 有三个API函数可以运行可执行文件WinExec.ShellExecute和CreateProcess.1.CreateProcess因为使用 ...

  2. 企业为什么要实行ERP系统,它到底有什么好处呢?

    目前,我国正在大力推行企业信息化建设,作为一种包含了现代管理思想的ERP(Enterprise Resource Planning)系统日益成为现代企业业务运作的主要工具,为了提升管理水平,提升企业竞 ...

  3. HDU-1996-汉诺塔VI

    题目链接 http://acm.hdu.edu.cn/showproblem.php?pid=1996 其实它就是求移动的所有可能,也就是n个盘子摆在三个塔上的任何可能的种数.可以这么思考这个问题:n ...

  4. CAReplicatorLayer复制Layer和动画, 实现神奇的效果

    今天我们看下CAReplicatorLayer, 官方的解释是一个高效处理复制图层的中间层.他能复制图层的所有属性,包括动画. 一样我们先看下头文件 @interface CAReplicatorLa ...

  5. HDU1166(分块)

    敌兵布阵 Time Limit:1000MS     Memory Limit:32768KB     64bit IO Format:%I64d & %I64u Submit Status ...

  6. CMD修改IP地址

    在操作系统下,我们可以使用"本地连接"的属性来修改IP地址,但是如果我们要在多个IP地址之间切换,使用这种方法未免过于麻烦.我们可以使用NETSH命令来添加,相当简便.使用DOS修 ...

  7. JDK1.8源码阅读系列之三:Vector

    本篇随笔主要描述的是我阅读 Vector 源码期间的对于 Vector 的一些实现上的个人理解,用于个人备忘,有不对的地方,请指出- 先来看一下 Vector 的继承图: 可以看出,Vector 的直 ...

  8. Extjs学习笔记之九 数据模型(上)-extjs

    来源:niutuku.com | vincent上传于2012-07-20 | 1802次浏览 | 0条评论 本文开始进入Extjs最核心最优秀的部分. 标签:Extjs 数据模型   Extjs的数 ...

  9. 谨慎能捕千秋蝉(二)——CSRF

    CSRF(Cross Site Request Forgery)跨站点请求伪造. CSRF的本质是当重要操作的参数都能被攻击者预测到,才能成功伪造请求. 一.场景演示 下图是一个伪造请求的场景,按顺序 ...

  10. LINQ查询表达式基础

    LINQ,语言集成查询(Language Integrated Query)是一组用C#和Visual Basic语言的扩展. 对于编写查询的开发人员来说,LINQ 最明显的"语言集成&qu ...