对Android中各个尺寸和屏幕适配的理解

对Android中各个尺寸和屏幕适配的理解

Android小彩虹2021-08-20 2:00:45250A+A-

Android中的尺寸为什么有这么多参数?

px、dp、dpi、density

px 就不解释了,下面解释下其他参数

dpi

图片来源 头条

dpi:就是每英寸包含的像素的多少。为什么是英寸,不是厘米?因为是外国人定义的。

density & dp

为什么会出现density这个参数?

第一代andrid设备的dpi是160

但是随着高分辨率的屏幕出现,每英寸中包含的像素远远不止160个,出现了240,320等屏幕。
为了兼容这些高分辨率的屏幕,于是定义了density 和dp 这两个参数。

用dpi=320举例
以第一代android设备的dpi为标准,density = 1
在dpi=320的设备上,density=2,即 density= 当前设备的dpi / 160(第一代android设备的dpi)

density有啥用?

单独的density 好像没啥用,就是一个当前设别和第一代android设备dpi的比值。
所以,还有一个参数dp
dp,dp是android中与屏幕密度无关的单位,使用dp可以不用关心当前设备的dpi到底是多少。
为什么dp有这种功能?看看dp的定义: dp = px * density

所以,在dpi=160的设备上,density=1,1dp = 1px;
在dpi=320的设备上,density=2,1dp = 2px;

这样,使用dp做为单位,就不用担心屏幕当前的dpi到底是多少了

关于屏幕适配

使用density+dp这种方式很好的解决的dpi不一致,无法统一使用px去绘制各种UI的问题。但是却没有解决 UI设计图和真实显示不一致的问题。

例如,现在市面上出现了各种奇奇怪怪的宽高比,16:9,4:3,22:19,23:19等等等等。
这些各种的宽高将会导致这样的问题:
公司的UI基于480dp x 360dp 这样的宽高的设计了交互图,是4:3 。
但是如果遇到了 640dp x 360dp 这种16:9的分辨率,就有问题了,很明显,原来设计图的高度为480dp,在4:3的手机上可以铺满,在16:9的机子上就铺不满了。所以需要屏幕适配。

如何适配

一般来说,屏幕适配只能适配一个方向,竖直方向或者水平方向。 适配的方法有很多,介绍一种我比较喜欢的方法:今日头条适配方法。juejin.im/post/684490…

这种方案是通过动态修改density来实现的,简单介绍一下。

例子 :设计图 480dp x 360dp
适配方向:竖直适配,使得 480dp的显示效果为任意屏幕高度。

假设屏幕高度为 h ,存在一个density 使得 480dp * density = h , density = h / 480。我们只要把这个density设置到Resource的DisplayMetrics里面就可以完成竖直方向的适配了。

点击这里复制本文地址 以上内容由权冠洲的博客整理呈现,请务必在转载分享时注明本文地址!如对内容有疑问,请联系我们,谢谢!

支持Ctrl+Enter提交

联系我们| 本站介绍| 留言建议 | 交换友链 | 域名展示 | 支付宝红包
本站资源来自互联网收集,仅供用于学习和交流,请遵循相关法律法规,本站一切资源不代表本站立场,如有侵权、后门、不妥请联系本站删除

权冠洲的博客 © All Rights Reserved.  Copyright quanguanzhou.top All Rights Reserved
苏公网安备 32030302000848号   苏ICP备20033101号-1
本网站由 提供CDN/云存储服务

联系我们