屏幕适配的基础概念

一、dp,dip,ppi,dpi,px基本概念

px,即是像素。

dp(Density-independent Pixels)即dip (Density-independent Pixels)每英寸像素数,一般使用语境是手机屏幕。

ppi(Pixel per inch)——像素分辨率,其实就是分辨率的意思。

dpi(dot per inch)每英寸有多少点,一般使用语境是在印刷领域中。

我一开始看这些概念的时候,被搞得很晕,经常分不清楚。下面我三个公式,两个问题来说明这些概念。

公式1:dpi = sqrt((width ^ 2 + height ^ 2 )) / 英寸,如图:

首先,dp和sp是android开发的概念,在实际进行渲染之前,它们都会先转变为px。

在Android中,dp的概念为,在dpi为160的屏幕上的一个物理像素。意思就是,在dpi为160的屏幕上,1px = 1dp。以此类推,在dpi为320的屏幕上,1dp = 2px。

因此公式2:density = dpi / 160

公式3:px = dp * density = dp (dpi / 160)

也就是说,dp在不同dpi的屏幕下,对应的是不同的px,所以dp是具有适配的能力的。

问题1.那我们用dp就好啦,为什么dp不能适配呢? 其实从公式中就可以看出,px = dp (dpi / 160),px是由dp和dpi共同决定的,各种手机的dpi各不相同,android厂商碎片化严重,各式各样的dpi。

举个例子,屏幕分辨率为480 * 800。dpi 为 233dpi,我们写了一个imageview,我们希望宽度为屏幕一半,现在代码里假设写了android width = 160dp。实际显示的时候的px为,160 * 233 / 160 = 233,差不多为屏幕一半。

但是换一个1920*1080,屏幕尺寸为5寸的话,那么dpi为440。此时的px = 160 * 440 / 160 = 440,而屏幕宽度应该为540,整整差了100px。

问题2: 那dp到底解决什么问题呢? 就如我们上面所说,dp会在不同屏幕下对应不同的px。160dpi时,1px = 1dp,占一个英寸。320dpi时,2px = 1dp,占一个英寸。480dpi,3px = 1dp,占一个英寸。发现了吗?dp的作用是,能保证你的控件,时刻都能占一个英寸,但是这个对我们是没有意义的。 偷一张官网的图,这个绿色的icon会在不同的屏幕上,始终保持同样的英寸。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值