前言
上节我们讲到了屏幕适配的几个基本概念。大家感兴趣的可参考
Android屏幕适配(1) — 概念解释
这节我们讲讲屏幕适配中drawable与mipmap相关知识。
今天涉及知识点有:
-
drawable与mipmap的区别 -
drawable及mipmap文件夹分类 - 单套图及特殊图片的处理
一. drawable 与mipmap 的区别
我们知道drawable与mipmap都可用于存放项目的图片资源,那么对于开发而言,图片到底是放在mipmap文件夹下,还是drawable文件夹下呢?
一般我们在开发时,将项目内,即ui界面中的图片存放在drawable中,然后将app的icon图标存放在mipmap文件夹下
二. drawable 及 mipmap 文件夹分类
先来一张比较重要的表格:
| 密度 | ldpi | mdpi | hdpi | xhdpi | xxhdpi |
|---|---|---|---|---|---|
| 屏幕分辨率(宽x高) | 240x320 | 320x480 | 480x800 | 720x1280 | 1080x1920 |
| 密度值(dpi) | 120 | 160 | 240 | 320 | 480 |
| dp和px换算 | 1dp=0.75px | 1dp=1px | 1dp=1.5px | 1dp=2px | 1dp=3px |
| 比例 | 3 | 4 | 6 | 8 | 12 |
因此我们的图片drawable对应的文件夹如下:
| 密度 | 默认 | ldpi | mdpi | hdpi | xhdpi | xxhdpi |
|---|---|---|---|---|---|---|
| 屏幕分辨率(宽x高) | ----- | 240x320 | 320x480 | 480x800 | 720x1280 | 1080x1920 |
| drawable文件夹名称 | drawable | drawable-ldpi | drawable-mdpi | drawable-hdpi | drawable-xhdpi | drawable-xxhdpi |
| 密度值(dpi) | ----- | 120 | 160 | 240 | 320 | 480 |
app的图标icon对应的文件夹如下:
| 密度 | 默认 | ldpi | mdpi | hdpi | xhdpi | xxhdpi |
|---|---|---|---|---|---|---|
| 屏幕分辨率(宽x高) | ----- | 240x320 | 320x480 | 480x800 | 720x1280 | 1080x1920 |
| mipmap文件夹名称 | mipmap | mipmap-ldpi | mipmap-mdpi | mipmap-hdpi | mipmap-xhdpi | mipmap-xxhdpi |
| 密度值(dpi) | ----- | 120 | 160 | 240 | 320 | 480 |
当我们在开发的时候,若 ui 设计图出图基于屏幕分辨率480x800的话,那么该套ui图下的所有图片均放在drawable-hdpi文件夹下,而基于该分辨率的App对应的icon则放在mipmap-hdpi文件夹下。
三. 单套图及特殊图片的处理
由上面的讲解,我们可以知道为了让图片在屏幕上做到很好的适配,则一个项目中会有多套图:drawable,drawable-ldpi,drawable-mdpi等。这会造成一个弊端,那就是apk的包特别大。大部分情况下,我们都只会做一套切图,于是便建议在xdhpi中作图,即以分辨率720x1280的手机屏幕为基础作图。此尺寸兼顾了美观性、经济性和计算的简单。切图放在drawable-xhdpi文件夹下,然后计算的话直接 1dp=2px换算。
一般对于一个方块的图片,我们需要根据px判断需要放在哪个文件夹下,下面以48dp的图片在各屏幕分辨率下的px为例(宽x高):
| 48x48dp | 48x48dp | 48x48dp | 48x48dp |
|---|---|---|---|
| 48x48(px) | 72x72(px) | 96x96(px) | 144x144(px) |
| drawable-mdpi | drawable-hdpi | drawable-xhdpi | drawable-xxhdpi |
如果你希望一个图片在不同手机上显示的px数值不变,那么你可以将此图片放到drawable-nodpi文件夹中,假如你该图片在mdpi手机上宽度为10px(10dp),在xhdpi中宽度则是10px(5dp)
ok, 今天关于Android屏幕适配 中drawable与mipmap相关知识就介绍到这里了,谢谢大家。