【发布时间】:2011-11-22 19:05:05
【问题描述】:
我有一个尺寸为 300*90 的按钮图形。hdpi/mdpi/ldpi 的尺寸必须是多少?谢谢
【问题讨论】:
-
developer.android.com/guide/practices/screens_support.html(见表 1)。 DPI 是一个转换因子。在不知道您希望按钮显示多大的情况下,无法回答此问题。
标签: android
我有一个尺寸为 300*90 的按钮图形。hdpi/mdpi/ldpi 的尺寸必须是多少?谢谢
【问题讨论】:
标签: android
谷歌suggests使用
3 : 4 : 6 : 8 : 12 : 16 的缩放比例
ldpi : mdpi : hdpi : xhdpi : xxhdpi : xxxhdpi 相应地。示例:
在您的示例中,如果提到的按钮大小适用于 hdpi,则正确的尺寸应该是:
【讨论】:
xxhdpi = 3:4:6:8:12
这取决于您设计该图形的设备屏幕尺寸。如果您希望它在 320x480 (HVGA) 画布上显示为 300x90,那么您的像素尺寸对于 MDPI 设备是正确的,并且您需要以下图像:
LDPI 是 MDPI 缩放的 75%,HDPI 是 MDPI 缩放的 150%。例如,如果您在 480x800 (WVGA) 画布上设计了这些图形尺寸,那么您的尺寸对于 HDPI 来说已经是正确的,您需要从那里缩小其他两个尺寸:
希望有帮助!
【讨论】:
创建所有资产文件夹图像的完整公式
首先,您必须决定要为哪个 DPI 创建图像,一旦您决定并创建图像,然后根据 Google Guide Lines 使用以下代码
public class DPICalculator {
private final float LDPI = 120;
private final float MDPI = 160;
private final float HDPI = 240;
private final float XHDPI = 320;
private final float BASE_DPI = MDPI;
public static void main(String[] args) {
DPICalculator cal = new DPICalculator();
cal.calculateDPI_baseUnitPixel(300, 90, cal.HDPI);
}
private float densityWidth;
private float densityHeight;
public void calculateDPI_baseUnitPixel(float width, float height, float currentDensity) {
densityWidth = getDensityPX(width, currentDensity);
densityHeight = getDensityPX(height, currentDensity);
this.calculateAllDP();
}
private float getDensityPX(float value, float currentDensity) {
return (value / (currentDensity / BASE_DPI));
}
public void calculateDPI_baseUnitDPI(float width, float height, float currentDensity) {
densityWidth = getDensityDPI(width, currentDensity);
densityHeight = getDensityDPI(height, currentDensity);
this.calculateAllDP();
}
private float getDensityDPI(float value, float currentDensity) {
return (value * (currentDensity / BASE_DPI));
}
private void calculateAllDP() {
// get all settings.
float low_pw = densityWidth * (LDPI / BASE_DPI);
float low_ph = densityHeight * (LDPI / BASE_DPI);
float med_pw = densityWidth * (MDPI / BASE_DPI);
float med_ph = densityHeight * (MDPI / BASE_DPI);
float high_pw = densityWidth * (HDPI / BASE_DPI);
float high_ph = densityHeight * (HDPI / BASE_DPI);
float xhigh_pw = densityWidth * (XHDPI / BASE_DPI);
float xhigh_ph = densityHeight * (XHDPI / BASE_DPI);
System.out.println("LDPI " + low_pw + " x " + low_ph);
System.out.println("MDPI " + med_pw + " x " + med_ph);
System.out.println("HDPI " + high_pw + " x " + high_ph);
System.out.println("XHDPI " + xhigh_pw + " x " + xhigh_ph);
}
}
结果
LDPI 150.0 x 45.0
MDPI 200.0 x 60.0
HDPI 300.0 x 90.0
XHDPI 400.0 x 120.0
【讨论】:
为此,您可以尝试我的工具,该工具用于缩放不同类型(png、jpg、gif、svg、psd、9-patch ..)的图像(单个或批量)。使用高质量的缩放算法并支持某些无损压缩工具,如 pngcrush。有 GUI 和命令行 ui。
【讨论】: