做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. iOS 视图调试器(Debug View Hierarchy) 之 初试牛刀

    参考:http://blog.csdn.net/th_gsb/article/details/44856795 由于iOS的界面开发大多都是用代码实现的,编写的时候,那就是看不见摸不着的情况.所以,如 ...

  2. 避免Node.js中回调地狱

    为了解决这个阻塞问题,JavaScript严重依赖于回调,这是在长时间运行的进程(IO,定时器等)完成后运行的函数,因此允许代码执行经过长时间运行的任务. downloadFile('example. ...

  3. 013-Cookie状态保持

    常用的状态(信息)保持方式(重点) ViewState: ASP.NET 的 .aspx页面特有,页面级的: 就是在页面上的一个隐藏域中保存客户端单独使用的数据的一种方式: 服务器端控件的值都自动保存 ...

  4. 2.13. 获取托管对象(Core Data 应用程序实践指南)

    用NSFetchRequest获取NSArray,里面都是托管对象.如果上下文里没有数据,就会从持久化存储区里获取. NSFetchRequest *request = [NSFetchRequest ...

  5. C++第三天学习

    回顾: 类和对象 class 类名 { public: private: 在类的类部可以访问,在类的外部不能直接访问. protected: 在类的类部可以访问,在类的外部不能直接访问,其子类可以访问 ...

  6. js原生设计模式——10适配器模式之参数适配器

    原理:参数适配器说白了就是给出要带入数据字段的对应字段的默认值,一旦数据字段值不足,就取默认值补足. [写法一]:直接返回 <!DOCTYPE html><html lang=&qu ...

  7. Web应用中监听者的通知顺序按照DD中的定义顺序

    Web应用中监听者的通知顺序按照DD中的定义顺序: XML: <?xml version="1.0" encoding="UTF-8"?> < ...

  8. H.264转码加速:NVENC大战Quick Sync

    GPU加速技术对普通消费者最直观的影响就是视频转码应用上了,NVIDIA..AMD以及Intel都有自己的加速技术,而在新一代CPU和GPU架构上,三方都有更新的技术方案.<br>< ...

  9. ORACLE的Dead Connection Detection浅析

    在复杂的应用环境下,我们经常会遇到一些非常复杂并且有意思的问题,例如,我们会遇到网络异常(网络掉包.无线网络断线).客户端程序异常(例如应用程序崩溃Crash).操作系统蓝屏.客户端电脑掉电.死机重启 ...

  10. Bootstrap入门(二十六)JS插件3:滚动监听

    很多时候我们在浏览一些网页的时候,导航条会根据我们浏览网页的进度而发生不同的变化,这种就是滚动监听. 你的顶栏导航,添加data-spy="scroll"到您想要刺探(最典型的是这 ...