2012-03-16 467 views
1

我創建了一個畫布。我在畫布上繪製文字。但是當我在不同版本的Android上測試時,文本看起來不一樣。版本4.х和2.2之間的區別。安卓在Canvas上的文字

Bitmap btmText = Bitmap.createBitmap(140, 90, Bitmap.Config.ARGB_4444); 
    Canvas cnvText = new Canvas(btmText); 
    Typeface tf = tf = Typeface.createFromAsset(context.getAssets(),"fonts/font.ttf"); 

    Paint paint = new Paint(); 
    paint.setAntiAlias(true); 
    paint.setSubpixelText(true); 
    paint.setTypeface(tf); 
    paint.setTextSize(50); 
    cnvText.drawText(text, 0, 5, 0, 55, paint); 

Android 2.2以上的文字看起來比android 4.0.3更大。

+2

這是在同一設備上? – CaseyB 2012-03-16 19:07:40

+0

沒有。 android 2.2是一個240dpi的模擬器,android 4.0.3是nexus s。 – 2012-03-16 19:34:19

回答

5

這可能是因爲不同的屏幕密度。

我猜Paint.setTextSize()需要以像素爲單位而不是dp。要在不同設備上以英寸顯示相同的大小,您必須決定要在dp中顯示的文本的大小,並將該值轉換爲像素。

// The TEXT SIZE expressed in dp 
private static final float MYTEXTSIZE = 50.0f; 

// Get the screen's density scale 
final float scale = getResources().getDisplayMetrics().density; 
// Convert the dps to pixels, based on density scale 
textSizePx = (int) (MYTEXTSIZE * scale + 0.5f); 

paint.setTextSize(textSizePx); 
+0

哦!這看起來好多了,謝謝 – 2012-03-17 05:59:41

+0

'paint.setTextSize()'只接受一個float參數。 – CyberedElf 2014-06-03 19:57:26