虽然现在有constraintlayout对屏幕适配又多了一些技巧,但是我们真正了解sp,dp,dpi嘛?为什么我们字体要用sp,控件用dp?
首先:字体用sp设置大小可以跟随系统字体大小改变而改变,控件用dp至少对不同分辨率适配了
接下来我们了解下sp,dp,dpi这几个单位:
sp:字体的单位,和dp差不多,区别是如果字体使用的sp为单位,那如果你手机字体调大了,那你app的字体会随之变大,如果用dp则不会变化。
dp:最常用的长、宽、margin、padding等的单位
dpi:像素密度
px:像素
其中height,width为长宽像素密度,size对角线长度
px=dp*(dpi/160)
特别注意:假设现在我有两部手机分辨率不一样,但是手机尺寸大小一样,假如第一部手机的像素密度及dpi=320,第二部手机的像素密度及dpi=160,我设置了一个2dp的宽的控件根据px=dp*(dpi/160)公式可得像素密度为160的px=dp及1px1dp,像素密度320的px=2*dp及1dp=2px.我们可以想象像素密度越大那么说明像素之间很紧密,反之就稀疏。那么当我在160dpi手机上设置宽为2dp的时候此时2dp=2px,在320dpi手机上设置宽的为2dp的时候此时2dp=4px.上面说到像素密度越大像素之间就紧密,那么此时在手机尺寸大小一样的情况下。此时2px与4px宽度相差不大的。你可以把一个像素想象成一个点,像素密度(dpi)越大每个点的距离就越小,反正就越大。这就是为什么设置宽高要用dp了,因为它适配了不同分辨率。
---------------------
作者:懂爱才有情
来源:CSDN
原文:https://blog.csdn.net/ZyClient/article/details/90767425
版权声明:本文为博主原创文章,转载请附上博文链接!