2012-03-16 11 views
1

私はキャンバスを作成しました。私はキャンバスにテキストを描きます。しかし、Androidのさまざまなバージョンでテストしているとき、テキストは異なって見えます。バージョン4.хと2.2の違い。キャンバスにAndroidのテキスト

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); 

テキストはアンドロイド4.0.3よりも大きく見えます。

+2

これは同じデバイスにありますか? – CaseyB

+0

番号。アンドロイド2.2は240dpiのエミュレータ、アンドロイド4.0.3はネクサスです。 –

答えて

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

ああ!これははるかに良く見えます、ありがとう –

+0

'paint.setTextSize()'はfloat引数だけを受け入れます。 – CyberedElf

関連する問題