android px、dp(dip)、dpi基本概念及之间的关系

1、 屏幕相关概念 
1.1分辨率 (PX)

是指屏幕上有横竖各有多少个像素 :如:手机分辨率720X1280 宽像素720px 长像素:1280px


1.2屏幕尺寸 (屏幕对角线)
指的是手机实际的物理尺寸,比如常用的2.8英寸,3.2英寸,3.5英寸,3.7英寸 


android将屏幕大小分为四个级别(smallnormallargeand extra large)。 


1.3屏幕密度 (DPI)
  每英寸像素数 
手机可以有相同的分辨率,但屏幕尺寸可以不相同, 
Diagonalpixel表示对角线的像素值(=),DPI=933/3.7=252 
android将实际的屏幕密度分为四个通用尺寸(lowmediumhighandextra high 


一般情况下的普通屏幕:

ldpi120dpi

mdpi160dpi

hdpi240dpi

xhdpi320dpi 

QVGA(240x320) 
    drawable-mdpi:中等分辨率的图片,HVGA (320x480) 
    drawable-hdpi:高分辨率的图片,WVGA (480x800),FWVGA (480x854) 
    drawable-xhdpi:至少960dp x 720dp 
对于屏幕来说,dpi越大,屏幕的精细度越高,屏幕看起来就越清楚 


1.4密度无关的像素(Density-independent pixel——dip 


dip 是一种虚拟的像素单位  ,也称为dp
dip 和具体像素值的对应公式是 dip/pixel=dpi /160, 也就是 px = dp * (dpi / 160) 
当你定义应用的布局的 UI 时应该使用 dp 单位,确保 UI 在不同的屏幕上正确显示。  

android规定160dpi手机 1dp=1px

为什么说是与密度无关的像素?

比如:在xml布局文件中layout_width=200dp

则dpi分别为:720dpi手机和320dpi,那么在720dpi上 720dpi/160dpi = x/1px = x/1dp;x=4.5px,那么在720dpi的手机上1dp=4.5px,而在320dpi,1dp=2px;这就是为什么屏幕密度值越高手机越清晰,因为同样面积,像素大小不一样:在上例200dp中,若720dpi和320dpi手机尺寸不一样一个为5寸一个为3.7寸,则720dpi是每寸720px则200dp占用的px为200dp*4.5 = 900px

即放到屏幕上,就占有的尺寸是900px/720dpi=1.25  ;而320dpi 200dp占用的px为:200dp*2 = 400px  占有屏幕的尺寸400px/320dpi=1.25;由此看出分辨率不一样的手机,dpi不一样,若手机尺寸一样,布局中用的是dp,则可能在手机上显示的长度是一样的,只不过分辨率清晰度不同,也不会变形,如果手机尺寸不一样,则在手机上显示的长度是不一样的,这就是为什么分辨率低,dpi低,尺寸大,则效果看起来特别丑的原因,清晰度也不够


至于dpi是怎么得出来的,是通过屏幕的尺寸以及不同手机像素的出来的:

在android上获取:

Display diplay = (WindowManager) ctt.getSystemService(Context.WINDOW_SERVICE).getDefaultDisplay();

DisplayMetrics mDisplayMetrics = new DisplayMetrics();

diplay.getMetrics(mDisplayMetrics);

int xdpi = mDisplayMetrics.xdpi;

int ydpi = mDisplayMetrics.ydpi;

得出xy的dpi,就可以计算出整个屏幕尺寸(屏幕对角线)dpi;

如480X800 ,长=3,宽=5  则xdpi = 480/3=160dpi  ydpi = 800/5 = 160dpi

同理:字体单位sp也是与像素无关的

字体经验心得:使用dp作为字体单位,则在不同手机上字体大小是固定的,不会改变

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值