前言
上节我们讲到了屏幕适配的几个基本概念。大家感兴趣的可参考
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
相关知识就介绍到这里了,谢谢大家。