ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

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

2022-07-12 18:05:50  阅读:338  来源: 互联网

标签:mipmap 文件夹 drawable Android 资源 图片


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的对应资源那是最好,可以达到较好内存使用效果。如果提供的图片资源有限,那么图片资源应该尽量放在高密度文件夹下,这样可以节省图片的内存开支。

标签:mipmap,文件夹,drawable,Android,资源,图片
来源: https://www.cnblogs.com/Bytezero/p/16471015.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有