一、简述
我们在网页布局的情况下,常常会设定器皿的长短,可是究竟该应用哪一个做为长度的单位而郁闷。
在Android中适用的叙述尺寸地区的种类有下列几类。
px(pixels)——清晰度:不一样的机器设备表明实际效果同样,一般大家HVGA意味着320×480清晰度,这一用的比较多。
dip(deviceindependentpixels)——机器设备单独清晰度:这一和机器设备硬件配置相关,一般哦大家为了更好地适用WCGA、HVGA和QVGA强烈推荐应用这一,不依赖于清晰度。相当于dp。
sp(scaledpixels—bestfortextsize)——带占比的清晰度。
pt(points)——磅:1pt=1/72英尺
in(inches)——英尺
mm(millimeters)——mm
二、详细说明
sp因为是变大清晰度,主要是用以字体样式表明,从而依据google的提议,TextView的文字大小**用sp做企业,并且查询TextView的源代码得知Android默认设置应用水准做为字体大小企业。
在Android中最常见到的還是px和dip。可是这两个中间究竟有什么不同呢?
在HVGA屏density=160;QVGA屏density=120;WVGA屏density=240;WQVGA屏density=120density值表明每英尺有多少个表明点,与屏幕分辨率是2个定义。不一样density下分辩率信息内容,以480dip*800dip的WVGA(density=240)为例子。
density=120时显示屏具体屏幕分辨率为241080x*401080x(两个点相匹配一个屏幕分辨率)
通知栏和菜单栏高各19px或是25dip
全屏是显示屏总宽401080x或是800dip,工作中地区高宽比211px或是480dip
坚屏时显示屏总宽241080x或是480dip,工作中地区高宽比381px或是775dip
density=160时显示屏具体屏幕分辨率为321080x*533px(3个点相匹配2个屏幕分辨率)
通知栏和菜单栏高个子25px或是25dip
全屏是显示屏总宽533px或是800dip,工作中地区高宽比295px或是480dip
坚屏时显示屏总宽321080x或是480dip,工作中地区高宽比508px或是775dip
density=240时显示屏具体屏幕分辨率为481080x*801080x(一个点针对一个屏幕分辨率)
通知栏和菜单栏高个子38px或是25dip
全屏是显示屏总宽801080x或是800dip,工作中地区高宽比442px或是480dip
坚屏时显示屏总宽481080x或是480dip,工作中地区高宽比762px或是775dip
apk的资源包中,当显示屏density=240时应用hdpi标识的資源
当显示屏density=160时,应用mdpi标识的資源
当显示屏density=120时,应用ldpi标签的資源。
不用一切标识的資源是各种各样屏幕分辨率状况下同用的。
**************************************************************************************************
引入Android上dip、dp、px、sp等企业表明
文中引入自shixin20051108《Android上dip、dp、px、sp等单位说明》
[dip:deviceindependentpixels(机器设备单独清晰度).不一样机器设备有不一样的表明实际效果,这一和机器设备硬件配置相关,一般大家为了更好地适用WVGA、HVGA和QVGA强烈推荐应用这一,不依靠清晰度。
px:pixels(清晰度).不一样机器设备表明实际效果同样,一般大家HVGA意味着320×480清晰度,这一用的比较多。
pt:point,是一个规范的长度单位换算,1pt=1/72英尺,用以印刷业,比较简单实用;
sp:scaledpixels(变大清晰度).关键用以字体样式表明bestfortextsize。
=========================
有关计算(以sp和pt为例子)
查询TextView等类的源代码,得知:
caseCOMPLEX_UNIT_PX:
returnvalUE;
caseCOMPLEX_UNIT_SP:
returnvalue*metrics.scaledDensity;
caseCOMPLEX_UNIT_PT:
returnvalue*metrics.xdpi*(1.0f/72);
--------------------------
scaledDensity=DENSITY_DEVICE/(float)DENSITY_DEFAULT;
xdpi=DENSITY_DEVICE;
--------------------------
DENSITY_DEFAULT=DENSITY_MEDIUM=160;
============================================
因此:假定pt和sp取同样的值1,则应设1pt和1sp中间指数为x,
1*DENSITY_DEVICE/72=x*1*DENSITY_DEVICE/160=>
x=160/72=2.2222
换句话说在Android中,1pt大概相当于2.22sp
===================================================================
什么叫Dip和Sp
以往,程序猿一般以清晰度为企业设计方案电子计算机操作界面。比如,界定一个总宽为300清晰度的表一个字段,列中间的间隔为五个清晰度,图标大小为16×16清晰度等。那样解决的难题取决于,假如在一个每英尺等级(dpi)高些的新显示屏上运作该程序流程,则操作界面会看起来不大。在有一些状况下,操作界面很有可能会小到无法认清內容。
与屏幕分辨率不相干的度量单位能够处理这一难题。Android适用下述全部企业。
px(清晰度):显示屏上的点。
in(英尺):长度单位换算。
mm(mm):长度单位换算。
pt(磅):1/72英尺。
dp(与相对密度不相干的清晰度):一种根据显示屏相对密度的抽象性企业。在每英尺160点的显示屏上,1dp=1px。
dip:与dp同样,多用以android/ophone实例中。
sp(与标尺不相干的清晰度):与dp相近,可是能够依据客户的文字大小首选项开展放缩。
为了更好地使操作界面可以在如今和未来的显示屏种类上一切正常表明,提议大伙儿自始至终应用sp做为字体大小的企业,将dip做为别的原素的企业。自然,还可以考虑到应用矢量图格式,而不是用位图文件
*********************************************************************
dip:deviceindependentpixels(机器设备单独清晰度).不一样机器设备有不一样的表明实际效果,这一和机器设备硬件配置相关,一般大家为了更好地适用WVGA、HVGA和QVGA强烈推荐应用这一,不依靠清晰度。
px:pixels(清晰度).不一样机器设备表明实际效果同样,一般大家HVGA意味着320×480清晰度,这一用的比较多。
pt:point,是一个规范的长度单位换算,1pt=1/72英尺,用以印刷业,比较简单实用;
sp:scaledpixels(变大清晰度).关键用以字体样式表明bestfortextsize。从而,依据google的提议,TextView的
字体大小**是应用sp做企业,并且查询TextView的源代码得知Android默认设置应用sp做为字体大小企业。
在Android中,1pt大概相当于2.22sp之上仅供参考,假如UI可以以sp为企业出示设计方案是**是的,假如设计方案中沒有sp的定义,则开发者还可以根据适度的计算取自然数。
以往,程序猿一般以清晰度为企业设计方案电子计算机操作界面。比如,界定一个总宽为300清晰度的表一个字段,列中间的间隔为五个清晰度,图标大小为16×16清晰度等。那样解决的难题取决于,假如在一个每英尺等级(dpi)高些的新显示屏上运作该程序流程,则操作界面会看起来不大。在有一些状况下,操作界面很有可能会小到无法认清內容。
与屏幕分辨率不相干的度量单位能够处理这一难题。Android适用下述全部企业。
px(清晰度):显示屏上的点。
in(英尺):长度单位换算。
mm(mm):长度单位换算。
pt(磅):1/72英尺。
dp(与相对密度不相干的清晰度):一种根据显示屏相对密度的抽象性企业。在每英尺160点的显示屏上,1dp=1px。
dip:与dp同样,多用以android/ophone实例中。
sp(与标尺不相干的清晰度):与dp相近,可是能够依据客户的文字大小首选项开展放缩。
屏幕分辨率:全部屏多少钱点,例如800×480,它是针对手机软件而言的表明企业,以px为企业的点。density(相对密度)值表明每英尺有多少个表明点,与屏幕分辨率是2个定义。apk的资源包中,
当显示屏density=240时应用hdpi标识的資源
当显示屏density=160时,应用mdpi标识的資源
当显示屏density=120时,应用ldpi标签的資源。
一般android设定长短和总宽要用dip,设定文字大小要用sp.在显示屏相对密度为160,1dp=1px=1dip,1pt=160/72sp1pt=1/72英尺.当显示屏相对密度为240时,1dp=1dip=1.5px.
为了更好地使操作界面可以在如今和未来的显示屏种类上一切正常表明,提议大伙儿自始至终应用sp做为字体大小的企业,将dip做为别的原素的企业。自然,还可以考虑到应用矢量图格式,而不是用位图文件。