先說这件事情的起因。 最近在看动画,吧视图动画和属性动画看好了。然后看那些做的比较好的动画效果。这时候发现 在xml中给的64dp 在代码中计算的值是192。 当时觉得很诧异,没有往换算方面去想。然后 我就琢磨 琢磨。 换了一台手机 是1280的 也就是所谓的2倍图的手机。 得到的值128. 这下 我突然想到了很多。 下面就来看一下 我当时想到的
美工设计图ps 都是像素 也就是所谓的px。 我们手机上面的分辨率也就是每行每列有多少的像素点。 手机1080 *1980 就是 水平1080 竖直1980个。 这也导致了 如果美工用一倍图的话 我们手机做好的页面 看上去的很小,很不合规范。前提你用的单位是px(现在基本上没有那么用的。)
接下来一个概念就是
dpi 像素密度。单位英寸上像素的个数。
dpi=(行的像素数量平方+列的像素数量平方)开根号/屏幕对角线长度
image.png
手机根据像素密度 去寻找对象的几倍图,
1倍图 对应的 120 160
2倍图 对应的320 480
3倍图 对应的 480 640
px = dp*dpi/160
这个有看不懂的?
这么说吧dpi/160 就是代表的几倍图。 当我们xml中给的dp值是64 那他的px 就是 64*3
分辨率低的 比如是二倍的 那就是*2.
这下知道 192的来历了吧。
随口说说。 为什么单位dp时候 。基本上不会出现问题 因为 那就是一个可变的值。 不同px的时候dp也不一样。 当你用dp的时候 换算的时候 手机就会自动去适配。 因此 大部分的时候 用的都是dp
网友评论