dp计算

来源:互联网 发布:中国省份数据库 编辑:程序博客网 时间:2024/06/04 00:31

1.首先什么是dp?什么是px?dppx有什么区别?dppx之间的转换关系?

1.什么px?图像显示的基本单元,我们知道屏幕是由很多点组成的,因为点特别小,所以我们看起来就像是一片的。那其中的每一个点就是像素点,而px呢?就表示1px=160个像素点。

什么是英寸?英寸就相当于一个长度单位,和厘米一样。平时我们都说手机是多少多少英寸的?那这个英寸到底是表示哪里呢?其实我们平时说的手机是多少多少英寸的,是说手机的屏幕对角线,通过比较手机屏幕的对角线长度进而比较手机屏幕的大小?

我们平时经常说手机的分辨率是多大,1920x1080,这个表示什么意思呢?表示屏幕高有1920个像素点,宽有1080个像素点。那到这里我们就要引入一个新的概念了ppi。那什么是ppi呢?ppiPixel per inch)每英寸像素数。我们把前面的总结一下。手机1920X1080分辨率,4.96英寸,那怎么求ppi呢?

其实非常简单,4.96英寸表示屏幕的对角线,问题就是要求出对角线上有多少个像素点。这个勾股定理秒解。所以一英寸就有这么多像素点:sqrt(1920*1920+1080*1080)/4.96.

又引出一个问题了,我们知道手机有很多种分辨率,而开发应用时,设计界面,不可能根据不同的手机分辨率设计一款应用。比如,一个100*100的图片,在400*800分辨率的屏幕上显示和在1920*1080屏幕上显示肯定是不一样的,在400*800上显示比较大,而在1920*1080上则比较小了,为什么?这点非常简单,因为400*800点屏幕的像素密度比1920*1080的小太多了,以至于显示100*100的图片占用的长度要变大,而1920*1080就占用一点空间,这样显示就没有不好。所以android引入了一个新的单位dp。设想,100*100的图片在400*800的屏幕上显示时,可以让他缩小一点,不占用100*100像素这么大,而在1920*1080上时,把他放大一点,比如放大到200*200,来显示,尽可能的大到在不同的屏幕上,显示的屏幕长度时一样的。那怎么计算dp呢?

android中为了给计算dp设置了一个参考值,就是1px=160ppi,也就是1px表示160个像素点,这样我们来计算 dp/px=ppi/160;所以dp=(ppi/160)*px。这样子我们就得到了pxdp的转换。

对于上面的手机屏幕分辨率是1920*10804.96英寸,此时1dp=?px ?这个问题就很简单了。


结果:

2.0

所以此时dp/px=2.0.换句话来说1dp=2.0px。这样就可以达到不同分辨率的屏幕显示同一个界面显示一样的效果。想想,我们在设计界面时,使用dp作为单位,假如分辨率低的手机显示这个界面,这时候1dp=0.75px,如果分辨率高的手机显示这个界面,此时1dp=2.0px,两个手机显示的界面是一样的,相同控件在手机上显示的长度是一样的,分辨率低的用了少量像素点,分辨率高的用了大量像素点。

此时就可以满足不同的手机屏幕了。



0 0
原创粉丝点击