android dp、sp、px、pt

来源:互联网 发布:原油f软件 编辑:程序博客网 时间:2024/05/21 15:42

dp、sp、px、pt区别


在web开发中,我们经常用px来设置宽度、高度,可以满足各种需求。而在android中,就没有那么简单了,因为android屏幕大小不同、分辨率不相同,这可能造成同一个控件在高分辨率下占很少的地方,但是在低分辨率屏幕上,却显示不开。

比如,这里按钮宽度设置400px,在768*1280分辨率占了一半多点,但是在480*800的屏幕上,占用了一大半。有鉴于此,android推荐使用dp,dp可以保证在所有屏幕下显示比例相同

这里写图片描述

dp


dp=dip=density independent pix,密度无关像素。密度用dpi表示,dpi=dot per inch,每英寸像素点,比如1.5*2英寸,480*640分辨率的屏幕,480/1.5=320dpi。android规定,160dpi下,1dp=1px,320dpi下,1dp=2px

名字 dpi dpi与px关系 低密度(ldpi) 120dpi 1dp=0.75px 中密度(mdpi) 160dpi 1dp=1px 高密度(hdpi) 240dpi 1dp=1.5px 超高密度(xhdpi) 320dpi 1dp=2px

可以看到,dpi越高,1dp就对应越多的px,dpi越低,1dp就对应越少的px,其实这也好理解。高分辨率下,就多对应点像素,低分辨率下就少对应点像素,只有这样才能保证,dp在各分辨率下显示比例相同。

如果明白了dpi,那么android res目录下drawable-hdpi、drawable-ldpi、drawable-mdpi……就都明白了,提供不同像素密度的图片,这样就可以做到适配。

这里写图片描述

Activity中获取xdpi、ydpi代码

getResources().getDisplayMetrics().xdpi;getResources().getDisplayMetrics().ydpi;

sp


sp=sip=scale independent pix 缩放无关像素,用于设置文字大小。sp类似dp都与像素密度无关。所以,
android推荐使用dp、sp,保证在不同密度屏幕上,显示的比例相同

像素、分辨率

分辨率:是一共的像素点数,比如480*800的分辨率,分辨越高,画面越细腻。
像素:我们通常所说的相机像素就是像素点数,比如,像素是1500万,就是1500万个像素点,像素越高,成像越好。

px


px 像素,物理显示的最小单位。所有的单位最终都会转换为px

pt


pt,磅,1磅=1/72英寸,常用于设置文字大小

总结


  • 屏幕显示,所有的单位最终都会转为px;所以,要熟练掌握dp与px的关系;
  • android中,使用dp设置宽度和高度、使用sp设置文字大小

参考


Android-Design-Cheat-Sheet-highres

0 0