关于Android Studio中的drawable和mipmap的混淆来自书中的旧例子

Joo*_*oop 5 java android drawable mipmaps android-drawable

[免责声明:首先我知道有很多关于drawable和mipmap文件夹的帖子,我读了一堆血统]

从"Android编程 - 大书呆子牧场指南"一书中可以看出,我必须在一些文本旁边插入一个图标Button.对于更高分辨率的屏幕,包含多个尺寸的图标是有意义的.在他们的解决方案中,他们将所有图像放在许多不同的Drawable文件夹中,并且图像的分辨率大小不同.

我通过在很多试验和错误之后将图标放在drawable文件夹中来使它在mipmap文件夹中工作,从而使它工作:

<Button
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:id="@+id/next_button"
    android:text="@string/next_button"
    android:drawableRight="@drawable/arrow_right/"/>
Run Code Online (Sandbox Code Playgroud)

但是,我对它的工作方式感到困惑:

  1. 人们经常说应该只将应用程序图标放在mipmap文件夹中,这是真的吗?什么是应用程序图标?其他人说只有发射器图标应该放在那里,而有些人说只有图标应放在那里.它是哪一个,它们是互斥的选择!
  2. 我无法自动完成Android Studio中的mipmap文件夹,这让我觉得我必须将所有内容放入我的drawable文件夹,因为Android Studio会为我自动完成.但是,默认情况下,drawable文件夹没有子文件夹.这让我相信可绘制的文件夹不应该再用于不同分辨率的图像,因为为什么默认情况下没有文件夹,所以每个人都可以犯拼写错误..
  3. 什么时候以不同的分辨率提供图标没有意义?我无法想象有人不想要尽可能高的分辨率.

这里我得到了一些困惑:

mipmap文件夹仅用于放置应用程序图标.

那是什么意思?从谷歌翻译我得到:

icon:程序,选项或窗口的屏幕上的符号或图形表示,尤指用于选择的几个中的一个.

Joo*_*oop 12

mipmap和drawable文件夹的不同用途

我终于通过查看资源文件夹(res /)的官方google文档来理解mipmap和drawable文件夹之间的区别.

他们说何时使用mipmap:

用于不同启动器图标密度的可绘制文件.有关使用mipmap /文件夹管理启动器图标的详细信息,请参阅管理项目概述.

什么时候把东西放在你的drawable文件夹中:

位图文件(.png,.9.png,.jpg,.gif)或编译为以下可绘制资源子类型的XML文件:

位图文件

  • 项目清单
  • Nine-Patches(重新调整大小的位图)
  • 状态列表形状动画
  • 可绘
  • 其他drawables
  • 请参阅Drawable Resources

附加到文件夹名称的限定符在android中具有特殊含义

另外值得注意的是,默认情况下,启动器图标有多个具有不同分辨率的文件夹,但对于可绘制文件夹则没有.Android OS会使用名为限定符的特殊名称查找这些文件夹.例如,对于drawable文件夹,有以下限定符和更多:

  • LDPI
  • 华电国际
  • xdpi

这些限定符附加到这些资源文件夹名称,如drawable-ldpi,drawable-hdpi和drawable-xdpi,因此android操作系统将查看这些文件夹以查找文件夹中文件的最佳分辨率.


要回答上面的问题:

  1. 当人们实际上意味着启动器图标时,人们会错误地使用术语图标.启动器图标应放在mipmap中并默认存在.
  2. 除了启动器图标之外,什么都不应该放在mipmap中
  3. Android提供配置限定符,以便根据屏幕分辨率和屏幕方向等特定设备设置更轻松地更改应用程序.包含不同大小的版本很有意义,因为缩小和升级可以更精确地完成,以适应所有类型的屏幕尺寸.

希望这有助于任何人.我发现很难找到.