夜鹰教程网-程序员的加油站
 当前位置:文章中心 >> Android/移动互联网/物联网/
px,dp,dip,dpi,sp区别
夜鹰教程网 来源:www.yyjcw.com 日期:2016-12-23 11:24:44
Android支持四种不同的dpi模式:ldpi mdpi hdpi xhdpi

Android支持四种不同的dpi模式:ldpi mdpi hdpi xhdpi

一般地,手机分辨率与所运行的dpi模式是匹配的,例如hvga(320x480像素)的手机屏幕一般在3.5英寸左右,运行在mdpi模式下(也有例外,稍后解释)(这个是ROM控制的,app不能改变)。当运行在mdpi下时,1dp=1px:也就是说设计师在PS里定义一个item高48px,开发就会定义该item高48dp;Photoshop中14px大的字体,开发会定义为14sp。

对于一部wvga(480x800)手机(G7、N1、NS),一般是运行在hdpi模式下。当运行在hdpi模式下时,1dp=1.5px:也就是说设计师在PS里定义一个item高72px,开发就会定义该item高48dp;Photoshop中21px大的字体,开发会定义为14sp。

所以,当你的app需要适配多个dpi模式的时候(例如同时适配mdpi与hdpi),若你在wvga下做设计,你需要将你的各数值都为3的倍数,并在切图标注时将所有的数字除以3乘以2换算成dp,这样开发的同一套layout就能用在两个不同的dpi模式下,而不是写两套layout。




px( pixel) 像素,可以简单的理解为一个点或方块,用以颜色的显示(单位),一般指印刷品或屏幕设置设备的颜色显示定义。

dip(device independent pixels)设备独立像素. 不同设备有不同的显示效果,这个和设备硬件有关,多为了支持WVGA、HVGA和QVGA 使用,不依赖像素。 dpi(dots per inch)分辨率、解析度,每英寸像素数,多用于屏幕显示领域。类似的有ppi(Pixels per inch)多用于印刷领域。分辨率越高,则每英寸内包含的像素数越大。

sp (scaled pixels)像素(图像)缩放,在 常规情况下,尺寸大的图像(像素数量或密度高)缩放为小图像(像素数量或密度小)时清晰度不变或清晰(原图模糊时),逆向则反之。但可以通过像素插值/超样采集等技术实现相对清晰(计算轮廓边缘模拟出相似或智能分析增加清晰度、圆润感)

px(像素)和dpi(分辨率)的关系,分辨率表示每英寸内包含多少个像素,比如分辨率为72dpi时,即表明每英寸内有72个像素。在屏幕显示时像素和屏幕上的点可以是点对点或非点对点。

sp(像素缩放)和px、dpi之间没有直接换算关系,比如一个原始图像为100×100px时,把它缩放为60×60或40×80(等比例缩放或自由缩放)相关的像素排列和原始颜色会打乱,减低或保持包含颜色数量(在常规放大时不会增加包含的颜色数量),边缘颜色数量会减少。dip和以上有些相似,这个因为未涉及不是很了解。网上找到一个换算/计算公式供参考:据px = dip * density / 160,则当屏幕密度为160时,px = dip  根据 google 的建议,TextView 的字号最好使用 sp 做单位,而且查看TextView的源码可知Android默认使用sp作为字号单位。将dip作为其他元素的单位。


著作权归作者所有。
商业转载请联系作者获得授权,非商业转载请注明出处。
作者:刘志强
链接:http://www.zhihu.com/question/19625584/answer/28015382
来源:知乎

一、度量单位的定义

1、dip: device independent pixels(设备独立像素). 不同设备有不同的显示效果,这个和设备硬件有关,一般我们为了支持WVGA(800*480)、HVGA和QVGA 推荐使用这个,不依赖像素。

dp是开发写layout的时候使用的尺寸单位,sp是开发写layout时关于字体的字号单位。

2、分辨率是屏幕图像的精密度,是指显示器所能显示的像素点的多少。由于屏幕上的点、线和面都是由像素组成的,显示器可显示的像素越多,画面就越精细,同样的屏幕区域内能显示的信息也越多,所以分辨率是个非常重要的性能指标之一。

3、px: pixels(像素). 不同设备显示效果相同,一般我们HVGA代表320x480像素,这个用的比较多。px是分辨率的单位,也就是说320x480的分辨率内,共有153600px个像素。

4、屏幕密度:表示每英寸有多少个显示点,与分辨率是两个不同的概念。单位是dpi(dot per inch)。

dpi的计算:dpi=Diagonal pixel/ Screen size

Diagonal pixel表示对角线的像素值


比如:计算WVGA(800*480)分辨率,3.7英寸

DPI=\sqrt{800^{2} +480^{2 }}
=933/3.7=252

Android主要有以下几种屏:如下表





二、视觉与客户端之间的沟通

1、例如,视觉给出的视觉稿标注的就是12 dp,这样客户端开发就不需要换算,可以直接使用12 dp。每一台移动设备都会自动根据屏幕尺寸调整间距,字体大小,来保证这个间距是12 dp。

2、当视觉给出的视觉稿标注的是像素时,需要客户端的开发先计算出相应的dp,具体的计算公式为:px = dip * (density / 160),然后使用计算出的dp,移动设备会自动适配。

同时也就是说,当屏幕密度为160时,px = dip。

确定的dp,就是不同的设备,间距的像素值可能会不同,但是dp一定相同。

3、例如分辨率为320 x480时,屏幕尺寸为3.0—3.5时,屏幕密度为Medium,默认值为160,由公式得px=dp;当分辨率为480 x800时,屏幕尺寸为3.3—4.0时,屏幕密度为high默认值为240,由公式的px=1.5dp,字号(在系统中选择普通字号)是视觉给字号大小的1.5倍,px=1.5sp。


复制链接 网友评论 收藏本文 关闭此页
上一条: Android和IOS 字体该做多大合适?…  下一条: 逻辑分辨率和物理分辨率区别
夜鹰教程网成立于2008年,目前已经运营了将近 13 年,发布了大量关于 html5/css3/C#/asp.net/java/python/nodejs/mongodb/sql server/android/javascript/mysql/mvc/easyui/vue/echarts原创教程。 我们一直都在坚持的是:认证负责、一丝不苟、以工匠的精神来打磨每一套教程,让读者感受到作者的用心。我们默默投入的时间,确保每一套教程都是一件作品,而不是呆板的文字和视频! 目前我们推出在线辅导班试运营,模式为一对一辅导,教学工具为QQ。我们的辅导学科包括 java 、android原生开发、webapp开发、商城开发、C#和asp.net开发,winform和物联网开发、web前端开发,但不仅限于此。 普通班针对的是国内学员,例如想打好基础的大学生、想转行的有志青年、想深入学习的程序员、想开发软件的初学者或者业余爱好者等。 就业办针对即将毕业上岗的大四学生,或者打算转行的初级开发工程师。 留学生班针对的是在欧美、加拿大、澳洲、日本、韩国、新加坡等地留学的中国学子,目的是让大家熟练地掌握编程技能,按时完成老师布置的作业,并能顺利地通过考试。 详细咨询QQ:1416759661   夜鹰教程网  基于角色的权限管理系统(c-s/b-s)。
  夜鹰教程网  基于nodejs的聊天室开发视频教程
  夜鹰教程网  Git分布式版本管理视频教程
  夜鹰教程网  MVC+EasyUI视频教程
  夜鹰教程网  在线考试系统视频教程
  夜鹰教程网  MongoDB视频教程。
  夜鹰教程网 Canvas视频教程
  夜鹰教程网 报表开发视频教程
  热点推荐
在Struts 2中使用JSON Ajax支持
解决JSP中使用request乱码问题
JSP+JavaScript打造二级级联下拉菜…
Tomcat中文手册(1)
JSP及Servlet中遇到的多线程同步
详解:JSP和Servlet中的绝对路径和…
JSP Struts之HTML标签库详解
自定义JSP标签
JSP中的include指令
errorPage设置方法--JSP
JSP 国际化-格式化货币和日期
九个隐含对象使用总结JSP的
Tomcat中文手册(2)
tomcat6关于EL表达式的一个错误
jsp分页技术代码
  最近更新
iOS 关于退出键盘两种方法和避免遮…
安卓apk签名常见命令
把activity当成dialog使用
如何选择APP开发框架
Layout _width ,Layout_height和…
Android调用百度地图使用时出现in…
安卓刷机术语
android端实现断点续传功能
利用TCP/IP实现Android客户端与服…
Invalid project description ove…
推荐使用的meta标签
手机网站用Bootstrap还是jQuery M…
如何让手机访问PC网站自动跳转到手…
提升HTML5的性能体验系列之一 避免…
Android和IOS 字体该做多大合适?…

关于我们 | 网站建设 | 技术辅导 | 常见问题 | 联系我们 | 友情链接

夜鹰教程网 版权所有 www.yyjcw.com All rights reserved 备案号:蜀ICP备08011740号3