2015-11-16 65 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

相關問題