drawable与mipmap的区别

drawable与mipmap的区别(android资源文件放置位置)

2017年11月07日 19:07:38 阅读数:2656

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/wk_beicai/article/details/78471187

今天在网上浏览博客,看到这一个问题,我们的图片资源到底放在drawable还是mipmap目录中,网上的争议很大,

今天打算就我的观点说一下这个问题,如果我的回答让大神们有所质疑,希望多多提点。

首先我们应该知道他们的意义:

1.Drawable

Android 把可绘制的对象抽象为Drawable,不同的图形图像代表着不同的darwable类型,

通常我们在代码中不会直接接触drawable实现类的,是由android FrameWork提供了一些

具体的drawable的实现。

我们在实际开发中,会把drawable的资源放在res/drawable目录上,当需要使用图片资源时

可以通过@drawable或者id引入这些drawable资源

drawable是默认共享的,不同的地方使用了相同资源drawable,他们会指向相同的资源,相同

的状态,如果drawable被修改了,其他都被修改了,

 

2.mipmap

在使用android Studio 创建项目的时候,常常会看到系统吧ic_launcher.png图片放在mipmap-xxhdpi

目录下,mip来源于拉丁文中的mulium in parvo 意为在一个小空间的多数,MIP map是一种电脑图形图像技术,用于在三维图像的二维代替物中达到立体感效果

mipmap目录的图标会忽略屏幕密度,回去匹配大一点的,然后系统自动对图片进行缩放,从而优化显示和节省资源。官方建议如下类型的图片资源放在mipmap目录:

launcher icons

action bar and tab icons

Notification icons

 

3.针对于drawable 与 mipmap都有了一定的认识,那么我们在实际开发中,到底把图片资源放在drawable下还是mipmap下?

答案:mipmap文件夹方应用图标,其实需要使用drawable资源像之前一样对应的放到drawable文件夹,

根据这篇google的博文: 

It’s best practice to place your app icons in mipmap- folders (not the drawable- folders) because they are used at resolutions different from the device’s current density. 

应用的启动图标最好放到mipmap文件夹(不是drawable文件夹),因为它们用在不同分辨率的设备上。 

When referencing the mipmap- folders ensure you are using the following reference: 

当引用mipmap文件夹的资源时,需要使用下面的方式:

android:icon="@mipmap/ic_launcher"

结论: 

mipmap仅仅用于应用启动图标,可以根据不同分辨率进行优化。其他的图标资源,还是要放到drawable文件夹中。

 

Android 官方解释[3]:

Note: You should place all launcher icons in the res/mipmap-[density]/ folders, rather than drawable/ folders to ensure launcher apps use the best resolution icon. 

注意:你应当将虽有启动图标放到res/mipmap-[density]/文件夹中,而不是drawable/文件夹,来确保启动图片使用最好的分辨率图标。

 

在网上查阅两道面试题,希望能加深一下大家的印象:

Android资源目录的读取顺序?

Android资源文件可以定义在不同分辨率、屏幕方向、语言等(甚至还有夜间模式),当我们的应用需要使用一个资源,这个资源(图片、Layout或者别的)可能在很多res下的子目录中都存在,那么Android系统是如何确认使用哪一个资源呢?

这就是一个Android应用的资源查找的顺序问题,其实简单说,在查找时会先去掉有冲突的资源目录(上图第1步),然后再按MCC、MNC、语言等指定的优先级进行查找,直到确认一个匹配资源。根据屏幕尺寸限定符选择资源时,如果没有更好的匹配资源,则系统将使用专为小于当前屏幕的屏幕而设计的资源。

图片放错目录会产生的问题吗?

这一点可能很多人都不会注意,觉得只要往一个drawable目录中放了需要的资源就好了。而我们可以自己做一个简单的测试,把同一个图片资源放在不同的dpi目录,会发现它们使用的内存是不一样的。简单说就是高密度(density)的系统去使用低密度目录下的图片资源时,会将图片长宽自动放大以去适应高密度的精度,当然图片占用的内存会更大。

所以如果能提各种dpi的对应资源那是最好,可以达到较好内存使用效果。如果提供的图片资源有限,那么图片资源应该尽量放在高密度文件夹下,这样可以节省图片的内存开支。

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值