2015-11-16 64 views
0

当我在画布上的顶部不同分辨率位图上尝试相同的文字大小时。相同的文字大小在更大的分辨率下看起来很小,在小分辨率的图像上看起来更大请帮我理解这一点。在画布上了解不同分辨率图像上的文字大小android

+0

你应该使用dp作为单位。 –

+0

请参阅'android.util.TypedValue#applyDimension' – pskink

回答

-1

这是你可以在所有设备中使所有文本统一大小的方式。

canvas.drawText(hourText, getPx(TEXT_SIZE, activity), getPx(TEXT_SIZE/3, activity), nPaint); 

public static int getPx(int dp, Activity activity) { 
     DisplayMetrics metrics = new DisplayMetrics(); 
     activity.getWindowManager().getDefaultDisplay().getMetrics(metrics); 
     float logicalDensity = metrics.density; 
     return (int) Math.ceil(dp * logicalDensity); 
    } 
+0

drawText中的第二个和第三个参数是x和y坐标,您的文本需要绘制它如何影响文本大小? – gman

+0

提供您的drawtext方法 –

+0

http://developer.android.com/reference/android/graphics/Canvas.html#drawText%28java.lang.String,%20float,%20float,%20android.graphics.Paint%29 – gman

1

您需要设置正确的文本大小为您Paint,即占密度。 Paint.setTextSize(float),收入浮动值。您需要确保这不是一个常数值,而是一个说明密度的值。

如何获得密度?您从DisplayMetrics.scaledDensityDisplayMetrics.density获得该信息。获得该值后,将其与fontSize相乘,并将该值设置为文本大小。像下面的东西。

Paint.setTextSize(density * 10f); 

这样一个文本的10f字体大小在不同密度的所有设备中看起来都是一样的。你可以在这里找到关于densityscaledDensity的更多信息:http://developer.android.com/reference/android/util/DisplayMetrics.html#scaledDensity

相关问题