【问题标题】:drawable folders - What resolutions do I need可绘制文件夹 - 我需要什么分辨率
【发布时间】:2014-03-21 19:00:28
【问题描述】:

我在应用程序中使用的所有图像都位于一个文件夹中 -> drawable-hdpi。我将它们用作按钮、布局和某些图像视图的背景。这些图像的尺寸从 50x50px 到 900x900px 不等。

我根据屏幕大小(以像素为单位)计算按钮和其他控件的大小(以像素为单位)。

伪代码:

 screenWidth = getScreenWidthInPixels();
 screenHeight = getScreenHeightInPixels();

 myButtons.setHeight(screenHeight * 0.1); //buttonHeight = 10 % of screenHeight
 ......
 ...
 ..

我希望我的图像质量(按钮背景、图像视图、布局背景……)在所有设备上都很好。 现在有 5 个不同的可绘制文件夹。据我所知,我现在可以将我的 drawable-hdpi 文件夹中已有的相同图像放在其他四个可绘制文件夹中,但分辨率不同。 我现在要弄清楚的是我必须为哪个文件夹选择什么分辨率。就像我说的,我的图像现在的分辨率从 50x50px 到 900x900px。

【问题讨论】:

  • 如果您只打算使用一组图像(这不是一个好主意,因为较大的图像会在低端设备上引发 OutOfMemoryErrors),那么您应该将它们全部放在您的可绘制文件夹。
  • 我不想使用一套。我想要 5 组图像,并且我想要 android 根据设备从正确的文件夹中选择图像。然后我像在我的伪代码中一样使用那个挑选的图像。
  • “我在我的应用程序中使用的所有图像都位于一个文件夹中 -> drawable-hdpi。”措辞一定让我感到困惑。
  • 是的,目前就是这样。这就是我想要改变的

标签: android android-layout


【解决方案1】:

这些是 dpi 中的分辨率:

ldpi:    120 dpi  
mdpi:    160 dpi  
hdpi:    240 dpi  
xhdpi:   320 dpi  
xxhdpi:  480 dpi  
xxxhdpi: 640 dpi  

您必须根据结果计算以像素为单位的尺寸:

比例因子:

ldpi:    0.75  
mdpi:    1.0  
hdpi:    1.5  
xhdpi:   2.0  
xxhdpi:  3.0  
xxxhdpi: 4.0

您可以将所有图像都放在 xxxhdpi 文件夹中,然后让 Android 缩小它们……但并非总是能得到很好的结果(Android 缩小 DOWN 很好,但不如预先调整大小的图像)。
现在我想一个 xxhdpi 分辨率就足够了,但是明天......
它将在 xxxhdpi 屏幕上按比例UP,结果不太好(可见像素化)。

一种解决方案是使用 svg 图形(这是基于 xml 的矢量标准),但您需要一个外部库(有几个开源/免费 - 您选择最适合的一个)来呈现它们标准控件。

【讨论】:

  • 因此,如果我的图像在 mdpi 中的分辨率为 50 x 100 像素,那么它在 hdpi 中的分辨率应该为 75 x 150 像素?
  • 是的,正确的。比例因子规则。你看,你可以将所有图像都放在 xxxhdpi 文件夹中,然后让 Android 缩小它们……但并不总是能得到很好的结果(Android 缩小 DOWN 很好,但不如预先调整大小的图像)。现在我想 xxhdpi 分辨率就足够了,但明天......它将在 xxxhdpi 屏幕上按比例UP,结果很糟糕(可见像素化)
【解决方案2】:

如果你在 mdpi 中有一个 100*100 像素的 icom,那么:

(3:4:6:8)

mdpi (4) = 100*100 像素(默认图片)

hdpi (6) = (100*6)/4 = 150*150 像素

xhdpi (8) = (100*8)/4 = 200*200 像素或 (150*8)/6 = 200*200

【讨论】:

  • 或者,更好的是:hdpi = mdpi * 1.5, xhdpi = mdpi * 2 ;)
  • 这是一种标准方法。例如:计算 mdpi,hdpi,xhdpi 中的 ic_launcher : 48 - 72 - 96
  • 是的,正确,但是您执行的计算比实际需要的要多(乘以十除)。我做更少的计算来得到相同的结果(我只乘以密度比例因子)。
猜你喜欢
  • 2014-09-07
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-06-27
  • 1970-01-01
相关资源
最近更新 更多