安卓学习中dp,sp,dpi,ppi,px和真实大小之间的关系

安卓学习中dp,sp,dpi,ppi,px和真实大小之间的关系

首先要明确,dp,sp,px都不是真实大小,pt和inch是真实大小

  1. inch:英寸,长度单位,1inch=2.54cm,很多时候用来求对角线长度,几寸的显示屏就是对角线的长度
  2. pt:point,磅,72分之一英尺

  • dpi:dots of per inch,每英尺的点数,就是每英尺(对角线长度)的点数(对角线),一般用于打印,dot可以指墨点。
  • ppi:pixels of per inch,每英尺的像素点数,就是每英尺(对角线长度)的像素点数(对角线),代表着像素和真实大小的关系
  • 就安卓开发来说,dpi约等于ppi,可能是定义不严谨的问题,具体看情况吧,我自己查资料也看到过很多说法

  1. px:像素,其具体大小取决于dpi

  • ppi/160:ppi指屏幕真实的ppi,160是标准,它代表着dp和px之间的关系

  1. dp:Density-independent pixels,逻辑像素,1dp=(ppi/160 )px
  2. sp:Scale-independent pixels,也是一种逻辑像素,用于设置字体,当然dp也可以,区别在于sp会受字体大小比例的影响,1sp=1dp*字体大小比例

Android开发中是哟的单位

  1. dp:推荐使用
  2. sp:推荐字体使用,不过具体看你要不要让字体去受字体大小影响
  3. in:就是inch
  4. mm:毫米
  5. px:像素(手机的像素可以自己查一下,用的AS的模拟器直接可以看)
  6. pt:就是上面说的磅

使用dp和sp的原因

dp和sp的特点是,既不像inch一样确定长短不可改变,也不像px那样会因为不同分辨率的移动设备导致极大的影响而导致缩放后信息大小不适合观看,总之具体看实际应用。

罪恶之源:电脑显示屏的分辨率

其实我们分不清安卓的原因是我们用的电脑给了我们第一印象,但这个印象跟安卓存在一些冲突。

  • pt:logic point,逻辑像素,简称像素,它不是安卓和现实里的磅,它写作“磅”,读作“像素”,我们怎么分的清啊。。。这个就是我们使用电脑时绝大部分时候说的像素,朋友门朋友门,我们说的1920*1440分辨率的单位就是它哦,但它实际上是逻辑分辨率,显示器查到的最佳分辨率也是它,不是物理分辨率。
  • px:pixel,真正的像素,也就是物理分辨率的单位,安卓看到的分辨率就是它,安卓是不用逻辑分辨率的,是不是感觉一下子懂了什么,当然如果你像看手机的逻辑分辨率也是可以的,不过本质上是看网页的逻辑分辨率,用js的window.innerWidth就可以得到了。

以下就是可以查看逻辑分辨率的代码,我的手机查出来是391px,我不会上传网页到csdn上只能这样了

<!DOCTYPE html>
<html>
<body>
<p id="1"></p>
<script>
    var p=document.getElementById('1');
    p.innerText=window.innerWidth;
    p.innerText+="   "+window.innerHeight;
</script>
</body>
</html>

总结

  1. 你平常用的电脑里面说的分辨率基本都是逻辑分辨率,别中计了,而且你显示屏的物理分辨率甚至不怎么容易查到
  2. 安卓的px就是物理分辨率
  3. dp,sp,px每种移动设备都不一定相同,跟电脑的逻辑分辨率不一样,并不统一
  4. dp,sp的作用是为了保证设备间差不太多,调整后该看的还看得清(终极通俗理解,比如,你pad上的应用在手机上字小的看不见)

猜你喜欢

转载自blog.csdn.net/weixin_44815852/article/details/105392055