移动开发中“单位”的那些事儿(2)

通过勾股定理先算出对角线的像素,再除以屏幕尺寸,结果约等于470dpi,现在再回头看我刚才为什么要选1080*1920 - 480dpi呢?显而易见就是为了选一个约等于4.7英寸屏幕的设备,这样才方便和同是4.7英寸的Nexus进行比较,同理再计算一下Nexus 4的屏幕像素密度:

y=1280

移动开发中“单位”的那些事儿

2

移动开发中“单位”的那些事儿

+768

移动开发中“单位”的那些事儿

2

移动开发中“单位”的那些事儿

移动开发中“单位”的那些事儿

移动开发中“单位”的那些事儿

移动开发中“单位”的那些事儿

移动开发中“单位”的那些事儿

移动开发中“单位”的那些事儿

移动开发中“单位”的那些事儿

移动开发中“单位”的那些事儿

移动开发中“单位”的那些事儿

移动开发中“单位”的那些事儿

移动开发中“单位”的那些事儿

移动开发中“单位”的那些事儿

移动开发中“单位”的那些事儿

移动开发中“单位”的那些事儿

移动开发中“单位”的那些事儿

4.7

移动开发中“单位”的那些事儿

移动开发中“单位”的那些事儿

移动开发中“单位”的那些事儿

得到的结果是317.6,和设备参数中的320dpi基本一致:

这里写图片描述

现在再结合像素密度的概念想一下,我们在上面写的android程序中,之所以高分辨率的HTC中的TextView占屏比较小,正是因为它的像素密度大,所以固定的500*500px尺寸的TextView在它的屏幕里面就显得占的地方小,而Nexus 4的像素密度小,所以500*500px这个像素对于它来说占的地方就会更大。最后总结一句话就是:屏幕尺寸相同的情况下,分辨率越高,像素密度就越大

再看下面这张图应该就彻底清楚了它们的换算关系:

这里写图片描述

到这里这三个概念就算介绍完毕了,虽然本篇blog的重点不是介绍android中的单位,但说到这里,不得不提几个相关的单位,例如:dp、sp、dip等等。

android中的单位

如题,依次来看看google为android引入的单位:

dp:又称dip(ios中叫ppi),density independent pixels,即密度独立像素,它和px有一个根据dpi按比例的换算关系,是一个android标准,即:以160dpi为基准,1dp=1px。结合上一小节的内容再想想,用dp做单位的话就不会再出现上面的窘境,因为分辨率不同,dpi也就不同,那么换算的px也就不一样了,这样即使在不同分辨率的设备上也可以让控件看起来一样。

sp:与dp用法类似,只不过是android中专门用来定义文字大小的单位,即所有的fontSize都应用sp来度量。

android中主要就用到上面这两种单位,还有一点值得提一下就是做过android开发的话都知道在项目工程中有这样的目录:

这里写图片描述

内容版权声明:除非注明,否则皆为本站原创文章。

转载注明出处:https://www.heiqu.com/375f833c7a9b6ad1e559473101f65f34.html