关于Android图像和资产大小

我需要澄清一些关于我的应用程序的图像资产的疑问,

如果我在xml文件中指定了[图像视图]的高度是50的垂度

我应该从资源文件夹中select哪种types的屏幕?

drawable, hdpi, ldpi, mdpi, xhdpi, 

具有50像素高度的图像,

以及与基本图像相比更大,更小尺寸图像的百分比是多less,

就像在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 

尽pipe除非专门为Google TV或原始的Nexus 7开发,否则您并不需要担心tvdpi ,但即使Googlebuild议您仅使用hdpi资产。

这意味着如果你正在做一个48dip的图像,并计划支持xxhdpi resolution ,你应该从144px图像开始(192px,如果你想为xxxhdpi的本地资源),并为密度制作以下图像:

 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-xhdpidrawable-hdpi等)

作为参考,这些像素密度是:

 ldpi | mdpi | tvdpi | hdpi | xhdpi | xxhdpi | xxxhdpi 120 | 160 | 213 | 240 | 320 | 480 | 640 

基于kcoppock的回答,我创build了下面的shell脚本来自动调整所有图像的大小,并将其复制到相应的Android drawable- * – 文件夹中!

创build一个shell脚本并粘贴下面的代码:

createAndroidImages.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 "*[AZ]*"); do mv "$i" "$(echo $i | tr AZ az)"; 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 

在terminal中运行shell脚本: sh createAndroidImages.sh

要将创build的图像直接复制到您的Android Studio项目中:

 cp -R drawable-* ~/AndroidStudioProjects/ESCRating/app/src/main/res/ 

你完成了! 希望这可以帮助别人!

PS请注意,原始图像的像素宽度应至less为所需的四倍宽度(例如4(因子xxxhdpi)* 30dpi => 120px)以获得最佳效果。

kcoppock做了很好的解释Andorid屏幕密度。 我只想就原来的问题再补充一点。

Android平板电脑发射器图标使用一个密度桶。

根据谷歌的开发者尼克·布彻的Google+的post

Nexus 10上的华丽屏幕属于XHDPI密度桶。 在平板电脑上,启动器使用来自一个密度桶的图标[0]来渲染它们稍大一些。 为了确保你的启动器图标(可以说是你的应用程序最重要的资产)是清脆的,你需要在drawable-xxhdpi或drawable-480dpi文件夹中添加一个144 * 144px的图标。

在这里find源

这里是我的计算放大和缩小的图像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)