您的位置:首页 > 移动开发 > Android开发

android drawable总结

2016-05-10 21:04 483 查看
首先要了解几个单位

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 占的像素点就越多,越占内存。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: