android drawable总结

首先要了解几个单位
px:屏幕像素
dpi: 屏幕密度,每英寸包含的像素数量(例如各种 drawable-dpi)
dp: 与屏幕密度无关,不同屏幕密度的设备上显示的大小相同
dip: 就是dp
sp: 与屏幕密度无关,字体大小

dp和px换算
将屏幕密度为160dpi的中密度设备屏幕作为基准屏幕,在这个屏幕中1dp=1px
在hdpi设备下1dp等于1.5px
在xxhdpi设备下1dp=3px

关于mipmap
用于放置icon的,那么要放多大的呢?新建一个项目,查看一下就好了。。

手机用的是哪个drawable下的图片呢?
1、先获得屏幕宽高的dpi:
float xdpi = getResources().getDisplayMetrics().xdpi;
float ydpi = getResources().getDisplayMetrics().ydpi;
2、根据dpi 查表
0dpi ~ 120dpi ———->ldpi
120dpi ~ 160dpi——–>mdpi
160dpi ~ 240dpi——–>hdpi
240dpi ~ 320dpi——–>xhdpi
320dpi ~ 480dpi——–>xxhdpi
480dpi ~ 640dpi——–>xxxhdpi

如果对应的drawable下没有我们需要的图片呢?
系统会在更高密度的目录下找这张图片。如果没有,系统在较低密度目录下依次寻找,寻找顺序举例:drawable-xhdpi -> drawable-hdpi -> drawable-mdpi -> drawable-ldpi。如果还没有,系统会在drawable-nodpi目录下寻找,如果还没有,就会报错喽。
总结:优先加载像素更高的

图片推荐放在哪个drawable下呢?
如果有多套图:放在对应的目录下,有利于适配
如果只有一套图:推荐按放在drawable-xxhdpi目录下来做,来节省内存开支 原因:
同一部手机,同一张图,放在dpi越低的目录下,图片在手机上显示的就越大,so 占的像素点就越多,越占内存。

你可能感兴趣的:(android)