在Android开发过程中总会遇到各种尺寸单位(px、dp、dpi)使用和图片文件夹(mdpi、hdpi)存放问题,在此就一些基本概念做一个总结的介绍,以期对此有个充分的认识
Android中的尺寸单位
以荣耀6 plus的屏幕参数作为例子

英寸(inch) 1 inch = 2.54 cm
主屏尺寸:也就是显示屏幕对角线的距离(英寸)
主屏分辨率:1920x1080像素表示屏幕高度上有1920个像素点,宽度上有1080个像素点
屏幕像素密度:dpi(dots per inch),意思是,对角线每英寸的像素点的个数,计算公式如下:

设备独立像素:dp(device independent pixels),dp的特点是兼容不同分辨率的设备。其原理是1dp等于像素密度为160dpi的屏幕1px的长度,所以px和dp的转换公式为:px = dp * (dpi/160),也就是说dp会根据各种dpi按比例换算成对应的px。因此相同的dp值在不同分辨率的显示效果是统一的
放大像素:sp(scaled pixels),是字体大小单位。sp和dp一样其像素值也是设备独立的。但是Android手机在设置里可以更改字体大小为小、普通、大、超大。默认的普通模式下1sp = 1dp,其它字体模式1sp会按比例换算成不同的dp。另外字体的默认大小是14sp
Android drawable文件夹
| 文件夹 | 独立像素 |
|---|---|
| drawable-ldpi | low:120dip |
| drawable-mdpi | medium:160dip |
| drawable-hdpi | high :240dip |
| drawable-xhdpi | xhigh :320dip |
| drawable-xxhdpi | xxhigh:480dip |
Andriod系统会根据手机屏幕的尺寸及屏幕密度去选择不同文件夹下的图片资源,以此来实现在不同大小不同屏幕分辨率下适配的问题
比如在一个低分辨率的手机上,Android就会选择ldpi文件夹下的图片,但是如果没有在ldpi的文件夹下找见相关的资源文件,Android系统会首先从hdpi文件夹中选择文件,然后对图片资源进行缩放处理,显示在屏幕上;如果hdpi文件夹下也没有的话,会在默认的drawable文件夹中寻找