1.基础概念
1.1 屏幕尺寸
- 含义:手机对角线的物理尺寸
- 单位:英寸(inch)
1.2 屏幕分辨率
- 含义:手机在横向、纵向上的像素点数总和
一般描述成屏幕的"宽x高" 如:1080x1920 也就意味着 横向方向上有1080个像素点 纵向方向上有1920个像素点
- 单位:px(pixel)
1.3 屏幕像素密度
- 含义:每英寸包含多少像素
- 单位:dpi(dot per ich)
- 公式:dpi = √(宽² + 高²)/ 屏幕尺寸
例:当有一台屏幕分辨率为1080 * 1920,屏幕尺寸为5寸的屏幕,他的dpi即为 √(1080² + 1920²)/ 5 = 2203 / 5 = 440dpi
1.4 密度无关像素
- 含义:与终端上的实际物理像素点无关,可以保证在不同屏幕像素密度的设备上显示相同的效果
- 单位:dp(density-independent pixel),又可称dip
根据公式,最后会将dp转成相应的px,下面会进行介绍
1.5 独立比例像素
- 含义:Android开发时用此单位设置文字大小,可根据字体大小首选项进行缩放
- 单位:sp
1.6 density(密度)
- 含义:每dp包含多少px
2.Android传统屏幕适配(dp)
Android截止到目前为止,常规的加上各种奇奇怪怪的屏幕已经有2万多种(甚至更多),那这种情况下我们开发的时候还用px编写UI的话简直就是灾难,所以谷歌针对了不同分辨率的屏幕该如何适配这个问题下,使用了dp方案适配,接下来就了解一下dp方案的原理到底是怎么样的
2.1 原理
2.1.1 dp是如何转换成px的
android中的dp在渲染前会将dp转成px,计算公式如下
- px = density * dp
- density = dpi / 160
- px = (dpi/160) * dp
- dpi = √(宽² + 高²)/ 屏幕尺寸
介绍完公式之后,首先我们设定一个UI稿尺寸,定义一个200*200dp的控件,再定义2个屏幕例子,来看看200dp的控件这个适配效果是怎么样
- UI稿子:以Iphone6为例子,屏幕分辨度:750 * 1334,屏幕尺寸为 4.7
- 首先算出dpi是多少,参考dpi公式,我们得出dpi=√ÿ