我需要澄清对我的应用程序的图像资产的一些疑问,
如果我在 xml 文件中指定某物 [图像视图] 的高度为 50 倾角高度
我应该从资源文件夹中选择哪种类型的屏幕?
drawable, hdpi, ldpi, mdpi, xhdpi,
拥有 50 px 高度的图像,
与基本图像相比,更大、更小尺寸的图像的百分比是多少,
就像在 iOS 中一样,@2x 实际上是图像大小的 2 倍,而您以编程方式说是正常大小,
谢谢!
我需要澄清对我的应用程序的图像资产的一些疑问,
如果我在 xml 文件中指定某物 [图像视图] 的高度为 50 倾角高度
我应该从资源文件夹中选择哪种类型的屏幕?
drawable, hdpi, ldpi, mdpi, xhdpi,
拥有 50 px 高度的图像,
与基本图像相比,更大、更小尺寸的图像的百分比是多少,
就像在 iOS 中一样,@2x 实际上是图像大小的 2 倍,而您以编程方式说是正常大小,
谢谢!
mdpi
是参考密度——也就是说,mdpi
显示器上的 1 px 等于 1 dip。资产缩放比例为:
ldpi | mdpi | tvdpi | hdpi | xhdpi | xxhdpi | xxxhdpi
0.75 | 1 | 1.33 | 1.5 | 2 | 3 | 4
尽管除非您是专门为 Google TV 或最初的 Nexus 7 开发,否则您实际上不需要担心tvdpi
——但即使是 Google 也建议简单地使用hdpi
资产。
这意味着如果您正在制作 48dip 图像并计划支持高达xxhdpi resolution
,则应从 144px 图像开始(如果您想要 xxxhdpi 的原生资源,则为 192px)并为密度制作以下图像:
ldpi | mdpi | tvdpi | hdpi | xhdpi | xxhdpi | xxxhdpi
36 x 36 | 48 x 48 | 64 x 64 | 72 x 72 | 96 x 96 | 144 x 144 | 192 x 192
并且这些应该在任何设备上以大致相同的大小显示,前提是您已将它们放置在特定于密度的文件夹中(例如drawable-xhdpi
,drawable-hdpi
等)
作为参考,这些像素密度为:
ldpi | mdpi | tvdpi | hdpi | xhdpi | xxhdpi | xxxhdpi
120 | 160 | 213 | 240 | 320 | 480 | 640
根据kcoppock的回答,我创建了以下 shell 脚本,以自动将所有图像调整为正确的大小,并将它们复制到相应的 Android drawable-* - 文件夹中!
创建一个 shell 脚本并粘贴以下代码:
创建AndroidImages.sh
#!/bin/bash
read -p "Please enter the subfolder of the original images? " folder
read -p "How many DP (width) should the image have? " dp
for i in $(find $folder/. -type f -name "*[A-Z]*"); do mv "$i" "$(echo $i | tr A-Z a-z)"; done
mkdir drawable-ldpi
mkdir drawable-mdpi
mkdir drawable-tvdpi
mkdir drawable-hdpi
mkdir drawable-xhdpi
mkdir drawable-xxhdpi
mkdir drawable-xxxhdpi
cp $folder/* drawable-ldpi/
cp $folder/* drawable-mdpi/
cp $folder/* drawable-tvdpi/
cp $folder/* drawable-hdpi/
cp $folder/* drawable-xhdpi/
cp $folder/* drawable-xxhdpi/
cp $folder/* drawable-xxxhdpi/
sips -Z $(echo $dp*3/4 | bc) drawable-ldpi/*
sips -Z $(echo $dp | bc) drawable-mdpi/*
sips -Z $(echo $dp*4/3 | bc) drawable-tvdpi/*
sips -Z $(echo $dp*3/2 | bc) drawable-hdpi/*
sips -Z $(echo $dp*2 | bc) drawable-xhdpi/*
sips -Z $(echo $dp*3 | bc) drawable-xxhdpi/*
sips -Z $(echo $dp*4 | bc) drawable-xxxhdpi/*
将您的脚本放在一个文件夹中,将您的原始图像放在一个子文件夹中,例如:
/
.. createAndroidImages.sh
.. originalImages/
....a123.png
....b456.png
在终端中运行 shell 脚本:sh createAndroidImages.sh
要将创建的图像直接复制到您的 Android Studio 项目中:
cp -R drawable-* ~/AndroidStudioProjects/ESCRating/app/src/main/res/
你完成了!希望这对某人有帮助!
PS 请注意,为了获得最佳效果,原始图像的像素宽度应至少是所需宽度 dpi 的四倍(例如 4(因子 xxxhdpi)* 30dpi => 120px)。
kcoppock 在解释 Andorid 屏幕密度方面做得很好。我只想就原始问题再补充一点。
Android 平板电脑启动器图标使用一个密度桶。
根据 Google 的开发者 Nick Butcher 在 Google+ 上的帖子
Nexus 10 上华丽的屏幕属于 XHDPI 密度桶。在平板电脑上,Launcher 使用上一个密度桶 [0] 中的图标来使它们稍微变大。为了确保您的启动器图标(可以说是您的应用程序最重要的资产)清晰,您需要在 drawable-xxhdpi 或 drawable-480dpi 文件夹中添加一个 144*144px 的图标。
在此处查找来源
这是我为 android 放大和缩小图像的计算结果-
ldpi(120 dpi,低密度屏幕)- 36px x 36px (0.19) (1)
mdpi(160 dpi,中等密度屏幕)- 48px x 48px (0.25) (1.33)
hdpi(240 dpi,高密度屏幕)- 72px x 72px (0.38) (2)
xhdpi (320 dpi, 超高密度屏幕) - 96px x 96px (0.5) (2.67)
xxhdpi(480 dpi,超超高密度屏幕)- 144px x 144px (0.75) (4)
xxxhdpi(640 dpi,超超超高密度屏幕)- 192px x 192px (1.0) (5.33)
当有多个图像时,我的短文有助于使用 imagemagick 创建图像资源。