Android:理解drawable文件夹

20

我有一张250*70像素的图片存放在drawable文件夹中(我刚开始做安卓开发,所以在res下创建了drawable文件夹),同时我还有同样的但较大尺寸的图片存放在drawable-large文件夹中;但是这张图片的显示效果并不如我预期。

有人能解释一下为什么要使用3个drawable文件夹的原因或目的吗?

我应该将我的图片存放在哪里,才能在横屏和竖屏模式下以及所有手机(包括平板)上正常显示?

我想让我的图片根据设备屏幕大小动态缩放。

有人能分享你的观点或链接供查询吗?


你应该阅读这篇文章 - C. Leung
6个回答

31

文件夹名称需要如下:

  • /drawable-ldpi 适用于低密度屏幕
  • /drawable-mdpi 适用于中等密度屏幕
  • /drawable-hdpi 适用于高分辨率屏幕
  • /drawable-xhdpi 适用于超高分辨率屏幕

/drawable文件夹应该保留用于以下两种情况: (1) 您不关心哪个设备或 (2) xml drawable资源。

此外,您可以使用配置限定符基于配置提供不同的资源,您可以在此处阅读有关此的所有内容 http://developer.android.com/guide/topics/resources/providing-resources.html

例如,您可以为横向布局提供高分辨率资源,其文件夹名称为

  • /drawable-land-hdpi

希望这有所帮助


16

默认情况下,Android会为不同分辨率的图片维护三个文件夹,其原因是应用程序要在Android设备上执行时所使用的分辨率。

"hdpi" 图片文件夹维护了适用于Android宽屏集或具有更高分辨率的Android手机的图片。

"ldpi" 图片文件夹维护了较低质量的图片,这些图片适用于较早版本的Android设备。

"mdpi" 图片文件夹维护了中等质量的图片。

"xhdi" 图片文件夹则用于分辨率最大的设备。

Android操作系统通过检查兼容设备和其分辨率来自动选择相应的图片。

希望对您有所帮助。如果解释清楚了,请接受。


我可以把所有的图片放在同一个文件夹里,但是给它们适当的结尾吗?例如 xxx_ldpi.png、xxx_mdpi.png、xxx_hdpi.png...... - sami_analyst

7

drawable-ldpi: 低密度的屏幕,分辨率通常为 240x320 像素。

drawable-mdpi: 中等密度的屏幕,分辨率通常为 320x480 像素。

drawable-hdpi: 高密度的屏幕,分辨率通常为 480x800 像素。

drawable-xhdpi: 超高密度的屏幕,分辨率通常为 720x1280 像素。

drawable-tvdpi: 电视屏幕用的 drawable,通常与 mdpi 的尺寸相同。

drawable-nodpi: 没有密度限制的 drawable,这些图像的大小不会根据设备的密度而变化。

drawable-xxhdpi: 更高的超高密度屏幕,分辨率通常为 1080x1920 像素。

drawable-xxxhdpi: 最高的超高密度屏幕,分辨率通常为 1440x2560 像素。

We can also use "drawable-xxhdpi"
xxhdpi (480dpi, Android 4.1 or later)

请参阅以下链接中的“Android表格列”:http://en.wikipedia.org/wiki/Smartphone 请参阅以下链接中的“表1”(xxxhdpi):http://developer.android.com/guide/practices/screens_support.html#xxxhdpi-note。注意:drawable-xxxhdpi限定符仅在提供可在xxhdpi设备上显示更大的启动器图标时才是必需的。 您无需为应用程序的所有图像提供xxxhdpi资源。
有关注意事项,请参见以下链接:http://developer.android.com/design/style/iconography.html#xxxhdpi-launcher

现在,每个人的最小SDK目标都是15或更高,这意味着ldpi、mdpi和hdpi文件夹甚至都不会被考虑。我的建议是排除这些文件夹中的可绘制资源。实际上,除非您有非常小的、微小的详细资产,否则您只需将可绘制资源放置在xhdpi中即可获得足够的效果,并节省一些空间。 - portfoliobuilder
如果用户想要节省空间,那么可以使用“Nine Patch”图像。因为这样可以节省很多空间。 - Sakthimuthiah

1

你应该使用drawable-hdpi文件夹,而不是drawable-large

此外,支持多屏幕页面可能对你有帮助。


如果你有一部xhdpi的手机,加载一个在320dpi下宽度为100px的图片,那么在mdpi(160)下这张图片就是50px,对吗?如果我的手机是xhdpi而平板是mdpi,那么如果屏幕密度更低,我该如何让图片看起来更大呢?我需要两个image.png吗?image_phone.png和image_tablet.png?我应该将其存储在drawable-xlarge-mdpi中吗?如果是这样,那么这是否意味着我需要近32个文件夹才能支持mdpi、hdpi、xhdpi、xxhdpi、small、normal、large、xlarge(3.2以下)和sw320dp、sw480dp、sw600dp、sw780dp?我错在哪里了? - cjayem13

1

0

1) 不同的可绘制文件夹背后的原因是为了增强用户在使用我们的应用程序时的体验,通过适应每个设备的屏幕密度。

2) “我应该把图片存储在哪里…” - 理想情况下,您应该为每个存在的屏幕密度存储具有适当大小的图像。如果您是初学者,只需使用一个文件夹,现在不必担心它。

4) 图像缩放 这是一份很棒的指南,可以帮助您在应用程序内进行图像缩放: https://thoughtbot.com/blog/android-imageview-scaletype-a-visual-guide

3) 链接: https://material.io/tools/devices/ - 所有设备和密度的列表


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接