Android 屏幕适配1-概念

Android 屏幕适配出现的原因

碎片化既是 Android 生态系统的优势也是劣势,这也是开发人员头痛的问题,也为 Android 的全球影响力奠定了基础。Android 设备具有各种形状和大小,并且性能水平和屏幕尺寸也大不相同。此外,还有许多不同版本的 Android 在同一时间同时处于活动状态,从而增加了另一层级的碎片。这意味着开发适用于所有 Android 设备的应用程序可能非常具有挑战性并且非常耗时。

设备碎片
设备碎片

品牌碎片
品牌碎片

Android 操作系统版本碎片
Android 操作系统版本碎片

屏幕尺寸碎片
蓝色矩形的大小代表不同尺寸,颜色深浅则代表所占百分比的大小。
屏幕尺寸碎片
这里显示的是物理屏幕大小,而不是像素大小。相同屏幕尺寸的分辨率变化对于开发者来说比对物理尺寸的变化更难。我们通过将高度和宽度的像素数除以像素密度(每英寸点数-ppi)来导出屏幕大小。

更多详细数据可以查看Android碎片报告2014年8月

我们在开发过程中为了能够让应用比较美观的显示在不同尺寸、分辨率、像素密度等的设备上,就需要进行一些处理。

Android 设备的屏幕尺寸那么多,我们该怎么适配这些设备呢?

因为对于具有相同像素密度的设备来说,像素越高,尺寸越大,所以我们可以将问题从单纯的尺寸大小转换为像素大小和像素密度,因为设备高度和宽度的像素数除以像素密度(每英寸点数-ppi)来导出屏幕大小。

同时在适配过程中,我们只要尽量适配市场的几种主流分辨率,既可以在大部分手机上正常运行了。

搞清楚了 Android 开发为什么要进行适配,以及适配哪些对象,接下来介绍适配过程中的一些重要概念。

重要概念

  • 屏幕尺寸、屏幕分辨率、屏幕像素密度
  • dp、dip、dpi、sp、px
  • mdpi、hdpi、xdpi、xxdpi

屏幕尺寸

屏幕尺寸指屏幕对角线的长度,单位是英寸,1英寸=2.54厘米。常见尺寸有 2.4、2.8、3.5、3.7、4.2、5.0、5.5、6.0 等。

屏幕分辨率

屏幕分辨率是指在横纵向上的像素点数,单位是 px,1px=1 个像素点。一般以“纵向像素点数x横向像素点数”,如 1960x1080。

屏幕像素密度

屏幕像素密度是指每英寸上的像素点数,单位是 dpi,即 “dot per inch”。屏幕像素密度与屏幕尺寸和屏幕分辨率有关,在单一条件下,屏幕尺寸越小、分辨率越高,则像素密度越大,反之越小。

dp、dip、dpi、sp、px

px,就是前面的分辨率中用的像素点单位,大多数情况下,比如 UI 设计、Android 原生 API 都会以 px 作为统一的计量单位,比如获取屏幕宽高等。

dp 和 dip是一个意思,都表示密度无关像素(Density Independent Pixels)。

dpi,是屏幕像素密度。假如一英寸里面有 160 个像素,这个屏幕的像素密度就是 160dpi。

dp 和 px 如何换算?

在 Android 中,规定以160dpi 为基准,1dip=1px,如果密度是320dpi,则1dip=2px,以此类推。在写布局的时候要是有 dp 而不是px。

sp,即尺寸无关像素(scale-independent pixels),与 dp 类似,可以根据文字大小首选项进行缩放,字体配置的主要大小单位。

mdpi、hdpi、xdpi、xxdpi

mdpi、hdpi、xdpi、xxdpi 用来修饰 Android 中的 drawable 文件夹及 values 文件夹,用来区分不同像素密度下的图片和 dimen 值。Google 官方指定按照下列标准进行区分:

名称 像素密度范围
mdpi 120dpi~160dpi
hdpi 160dpi~240dpi
xhdpi 240dpi~320dpi
xxhdpi 320dpi~480dpi
xxxhdpi 480dpi~640dpi

在开发过程中,我们把合适大小的图片放到合适的文件夹里面。

在设计图标时,对于五种主流的像素密度(MDPI、HDPI、XHDPI、XXHDPI 和 XXXHDPI)按照 2:3:4:6:8 的比例进行缩放。对于低像素密度(LDPI)的屏幕,系统会自动将 HDPI 尺寸的图标缩小到 1/2 进行匹配。下面是图标的各个屏幕密度的对应尺寸:

屏幕密度 图标尺寸
mdpi 48x48px
hdpi 72x72px
xhdpi 96x96px
xxhdpi 144x144px
xxxhdpi 192x192px

文章只是作为个人记录学习使用,如有不妥之处请指正,谢谢。

参考文章

https://blog.csdn.net/zhaokaiqiang1992/article/details/45419023

猜你喜欢

转载自blog.csdn.net/modurookie/article/details/80406963