1000字范文,内容丰富有趣,学习的好帮手!
1000字范文 > android屏幕适配终极指南(一):DPI 分辨率和屏幕尺寸

android屏幕适配终极指南(一):DPI 分辨率和屏幕尺寸

时间:2022-07-21 10:40:07

相关推荐

android屏幕适配终极指南(一):DPI 分辨率和屏幕尺寸

dpi,分辨率,dp,sp,px这些东西,相信每个android开发者都不陌生,但是这几者之间的关系,能够说得清清楚楚的,我相信并不多。

看完这篇博客,希望能让你彻彻底底的理解它们。

一. DPI

首先说dpi,废话是:每英寸的像素点数(Dots Per Inch,其实这么说不够严谨,真正的”每英寸像素点数”,其实是PPI,Pixels Per Inch,而DPI实际上是每英寸打印点数,是一个印刷上的计量单位,但是因为android开发没有PPI这个概念,而是一直在用DPI,而手机屏幕上也只有像素点数没有打印点数,所以我们一般都会理解成每英寸的像素点数)。

那它到底有什么用?我给大家放两张图你们感受一下。

为了好比较,我特地把两张图片的尺寸(这里我指的是宽和高)做成了一样。

大家可以看到,虽然两张图片尺寸一样,但是能呈现给大家的内容明显是不一样的。第一张图我不负责任的数了下,我们把每个最小的矩形色块作为一个像素点,大概整张图的像素点是17*13个,也就是200多个的色块(像素点)来组成的一个马里奥。

而第二张图呢,用比较大众的话来说,是“高清图“。但是跟第一张图有明显的色块来比较,它好像没有什么色块,也就是说我们也不能断定这货到底是色块多,还是色块少。

别着急,作为一个会photoshop的厨子来说,这点问题都不叫事儿。

你们看到第二张图里的马里奥头顶的M标志了吧,对,就是下面黑框里这个:

我用photoshop放大了3200倍,得到如下的图:

这下你们明白了吧,第二张图也是有”色块”的,不过这个色块太小了,小到人眼已经看不到了,所以在我们看来,是很平滑的,没有锯齿的图。

现在我们再回到DPI,我相信大家现在对于DPI有一个更深的认识了:”每英寸的像素点数”。我给大家展示了两张尺寸相同的图片,但是这两张图片上的像素点数差别非常大。

像素点数总和/尺寸=每英寸的像素点数

我们假设两张马里奥的图都是12英寸*10英寸的。

第一张图一共有17*13个像素点数,那它的DPI就是(17/12)*(13/10) = 1.846

第二张图像素太多了,我们就随便假设一下,1200*1000吧,那它的DPI就是(1200/12)*(1000/10) = 10000

所以,现在大家知道DPI有什么用了吧,它描述的,是一个图片的精密程度,这个值越大,你得到的图片,也就越”高清”。

二. 分辨率

再说分辨率,分辨率是啥?废话是:屏幕图像的精密度,显示器所能显示的像素有多少。

通俗点说,分辨率是320*480表示的是什么呢?是你的屏幕上有320乘以480这么多的色块(像素点)。

ps:其实这么多并不准确,因为分辨率有很多种表示方式,但是我们就按照大家通常意义上的认知来描述了

我们还是按照上面的两张马里奥的图来说明,第一张图的分辨率就是17*13,第二张图的分辨率就是1200*1000

所以你们看到了,分辨率描述的,是你的图片or屏幕上一共有多少个色块(像素点)。

所以分辨率和DPI的关系就是:

假设图片尺寸是m*n,dpi=d; 那么分辨率=(m*d) * (n*d)

比如:dpi是300,图片尺寸是5英寸*4英寸,那么这张图片的分辨率就是:(5*300)*(4*300)=1500像素*1200像素

所以,这告诉我们一个道理,相同分辨率下,你要选小屏幕的手机,这样才清楚!(800*480的手机和电脑显示器,哪个更清楚你现在知道了吧?知道为啥电视很少看到800*480吧,因为那么大的屏幕如果只有这点分辨率,根本没法看)

再普及一个知识,既然DPI决定了图片or屏幕的精密度,那是不是DPI越高越好呢,比如我们可以做出来DPI等于10000的屏幕,那岂不是爽死?

对不起,你想多了,因为你的眼睛不是显微镜,当dpi达到一定值之后,对你来说看啥都是没有马赛克,没有锯齿的了。也就是说,我们的精密度只要能骗过你的眼睛的”分辨率”就可以了。。。

而这个可以骗过你眼睛的dpi是多少呢?你还记得乔布斯乔大爷提出的视网膜分辨率不?对,就是这个,乔大爷说的是dpi等于300的时候,你就看啥都是完美的了,高于这个值,比如500,800,都没有意义了。(实际上,乔大爷这个说法更倾向于营销策略,非常不严谨,严谨的解释请看这里:

/view/5903958.htm)

三. 屏幕尺寸

通常我们说屏幕尺寸的时候,有两种说法,举例说明:

1280*8005.1寸屏

其实这两种说法都衡量不出来屏幕尺寸。。。

第一种说法,学了分辨率,我们应该知道,1280*800其实指的是分辨率,跟屏幕本身大小没有半毛钱关系,只有当分辨率和dpi结合起来的时候,谈屏幕尺寸才有意义。

那第二种呢,5.1寸屏,这不是已经告诉你屏幕有多大了吗?

我再给乃们这些凡人画张图,乃们感受一下:

这张图里的三条黑线,长度都是一样的,但是乃们摸着良心告诉我,红蓝绿三个框的面积真的一样大吗?宽高明显也不一样嘛。

所谓的5.1寸,其实就是图上的三条矩形的对角线是5.1寸,所以你看,5.1寸也可以有很多表达方式,面积不一样了,相同的DPI下,分辨率显示是不同的。

如果我们真的要表示一个手机的尺寸,怎么表示最准确:手机宽5英寸,高8英寸。。。

然而这并没有什么卵用,作为一个android开发工程师,我知道手机的尺寸有毛用,我相信大家关心的还是分辨率。

OK,今天就讲到这儿,普及了这些概念,下一次我们再谈谈android开发跟这些概念有啥关系

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。