drawable 和 mipmap

来源:互联网 发布:网络诈骗的预防 编辑:程序博客网 时间:2024/05/21 22:22

阅读前提: 你需要提前了解 drawable 和 mipmap 是什么;

使用Android Studio IDE, 新建Android项目的时候,程序(APP)启动图标ic_launcher.png,没有在之前的老地方(drawable目录),而是出现在mipmap目录结构下;

为了一探究竟,翻阅了Android 开发者官网(http://developer.android.com);

找到以下解释:

<code class="hljs livecodeserver has-numbering" style="display: block; padding: 0px; color: inherit; box-sizing: border-box; font-family: 'Source Code Pro', monospace;font-size:undefined; white-space: pre; border-radius: 0px; word-wrap: normal; background: transparent;">main/res/    Contains application resources, such <span class="hljs-keyword" style="color: rgb(0, 0, 136); box-sizing: border-box;">as</span> drawable <span class="hljs-built_in" style="color: rgb(102, 0, 102); box-sizing: border-box;">files</span>, layout <span class="hljs-built_in" style="color: rgb(102, 0, 102); box-sizing: border-box;">files</span>, <span class="hljs-operator" style="box-sizing: border-box;">and</span> <span class="hljs-keyword" style="color: rgb(0, 0, 136); box-sizing: border-box;">string</span>                  values <span class="hljs-operator" style="box-sizing: border-box;">in</span> <span class="hljs-operator" style="box-sizing: border-box;">the</span> following <span class="hljs-built_in" style="color: rgb(102, 0, 102); box-sizing: border-box;">directories</span>. See Application Resources <span class="hljs-keyword" style="color: rgb(0, 0, 136); box-sizing: border-box;">for</span> more information.    drawable/For bitmap <span class="hljs-built_in" style="color: rgb(102, 0, 102); box-sizing: border-box;">files</span> (PNG, JPEG, <span class="hljs-operator" style="box-sizing: border-box;">or</span> GIF), <span class="hljs-number" style="color: rgb(0, 102, 102); box-sizing: border-box;">9</span>-Patch image <span class="hljs-built_in" style="color: rgb(102, 0, 102); box-sizing: border-box;">files</span>, <span class="hljs-operator" style="box-sizing: border-box;">and</span> XML <span class="hljs-built_in" style="color: rgb(102, 0, 102); box-sizing: border-box;">files</span> that describe Drawable shapes <span class="hljs-operator" style="box-sizing: border-box;">or</span> Drawable objects that contain multiple states (<span class="hljs-keyword" style="color: rgb(0, 0, 136); box-sizing: border-box;">normal</span>, pressed, <span class="hljs-operator" style="box-sizing: border-box;">or</span> focused). See <span class="hljs-operator" style="box-sizing: border-box;">the</span> Drawable resource type.    mipmap/For app launcher icons. The Android <span class="hljs-keyword" style="color: rgb(0, 0, 136); box-sizing: border-box;">system</span> retains <span class="hljs-operator" style="box-sizing: border-box;">the</span> resources <span class="hljs-operator" style="box-sizing: border-box;">in</span> this <span class="hljs-built_in" style="color: rgb(102, 0, 102); box-sizing: border-box;">folder</span> (<span class="hljs-operator" style="box-sizing: border-box;">and</span> density-specific <span class="hljs-built_in" style="color: rgb(102, 0, 102); box-sizing: border-box;">folders</span> such <span class="hljs-keyword" style="color: rgb(0, 0, 136); box-sizing: border-box;">as</span> mipmap-xxxhdpi) regardless <span class="hljs-operator" style="box-sizing: border-box;">of</span> <span class="hljs-operator" style="box-sizing: border-box;">the</span> screen resolution <span class="hljs-operator" style="box-sizing: border-box;">of</span> <span class="hljs-operator" style="box-sizing: border-box;">the</span> device where your app is installed. This behavior allows launcher apps <span class="hljs-built_in" style="color: rgb(102, 0, 102); box-sizing: border-box;">to</span> pick <span class="hljs-operator" style="box-sizing: border-box;">the</span> best resolution icon <span class="hljs-keyword" style="color: rgb(0, 0, 136); box-sizing: border-box;">for</span> your app <span class="hljs-built_in" style="color: rgb(102, 0, 102); box-sizing: border-box;">to</span> display <span class="hljs-command" style="box-sizing: border-box;"><span class="hljs-keyword" style="color: rgb(0, 0, 136); box-sizing: border-box;">on</span> <span class="hljs-title" style="box-sizing: border-box;">the</span> <span class="hljs-title" style="box-sizing: border-box;">home</span> <span class="hljs-title" style="box-sizing: border-box;">screen</span>. <span class="hljs-title" style="box-sizing: border-box;">For</span> <span class="hljs-title" style="box-sizing: border-box;">more</span> <span class="hljs-title" style="box-sizing: border-box;">information</span> <span class="hljs-title" style="box-sizing: border-box;">about</span> <span class="hljs-title" style="box-sizing: border-box;">using</span> <span class="hljs-title" style="box-sizing: border-box;">the</span> <span class="hljs-title" style="box-sizing: border-box;">mipmap</span> <span class="hljs-title" style="box-sizing: border-box;">folders</span>, <span class="hljs-title" style="box-sizing: border-box;">see</span> <span class="hljs-title" style="box-sizing: border-box;">Managing</span> <span class="hljs-title" style="box-sizing: border-box;">Launcher</span> <span class="hljs-title" style="box-sizing: border-box;">Icons</span> <span class="hljs-title" style="box-sizing: border-box;">as</span> <span class="hljs-title" style="box-sizing: border-box;">mipmap</span> <span class="hljs-title" style="box-sizing: border-box;">Resources</span>.</span></code><ul class="pre-numbering" style="box-sizing: border-box; position: absolute; width: 50px; top: 0px; left: 0px; margin: 0px; padding: 6px 0px 40px; border-right-width: 1px; border-right-style: solid; border-right-color: rgb(221, 221, 221); list-style: none; text-align: right; background-color: rgb(238, 238, 238);"><li style="box-sizing: border-box; padding: 0px 5px;">1</li><li style="box-sizing: border-box; padding: 0px 5px;">2</li><li style="box-sizing: border-box; padding: 0px 5px;">3</li><li style="box-sizing: border-box; padding: 0px 5px;">4</li><li style="box-sizing: border-box; padding: 0px 5px;">5</li><li style="box-sizing: border-box; padding: 0px 5px;">6</li><li style="box-sizing: border-box; padding: 0px 5px;">7</li><li style="box-sizing: border-box; padding: 0px 5px;">8</li></ul>

原文地址:http://developer.android.com/intl/zh-cn/tools/projects/index.html#ApplicationModules

<code class="hljs lasso has-numbering" style="display: block; padding: 0px; color: inherit; box-sizing: border-box; font-family: 'Source Code Pro', monospace;font-size:undefined; white-space: pre; border-radius: 0px; word-wrap: normal; background: transparent;">勉强使用工具翻译,大致内容如下:    drawable<span class="hljs-subst" style="color: rgb(0, 0, 0); box-sizing: border-box;">/</span>用于图片文件(PNG, JPEG , <span class="hljs-literal" style="color: rgb(0, 102, 102); box-sizing: border-box;">or</span> GIF), <span class="hljs-number" style="color: rgb(0, 102, 102); box-sizing: border-box;">.9</span>图片文件 和 <span class="hljs-built_in" style="color: rgb(102, 0, 102); box-sizing: border-box;">XML</span>文件;    mipmap<span class="hljs-subst" style="color: rgb(0, 0, 0); box-sizing: border-box;">/</span>用于App Launcher图标;</code><ul class="pre-numbering" style="box-sizing: border-box; position: absolute; width: 50px; top: 0px; left: 0px; margin: 0px; padding: 6px 0px 40px; border-right-width: 1px; border-right-style: solid; border-right-color: rgb(221, 221, 221); list-style: none; text-align: right; background-color: rgb(238, 238, 238);"><li style="box-sizing: border-box; padding: 0px 5px;">1</li><li style="box-sizing: border-box; padding: 0px 5px;">2</li><li style="box-sizing: border-box; padding: 0px 5px;">3</li><li style="box-sizing: border-box; padding: 0px 5px;">4</li><li style="box-sizing: border-box; padding: 0px 5px;">5</li></ul>

其他官网相关阅读地址: 
http://developer.android.com/intl/zh-cn/tools/projects/index.html#mipmap

http://developer.android.com/intl/zh-cn/guide/practices/screens_support.html#support


补充阅读: 
两者使用上没有任何区别,你把它当drawable用就好了。唯一的区别就是用mipmap系统会在缩放上提供一定的性能优化。

比如: 
Nexus 6 有 493 ppi,它刚好在 xxhdpi和xxxhdpi之间,所以显示的时候需要对xxxhdpi的资源进行缩小,如果你用了mipmap-xxxhdpi,那么这里会对sclae有一个优化,性能更好,占用内存更少。所以现在官方推荐使用mipmap.

0 0
原创粉丝点击