web-dev-qa-db-ja.com

Paint.setTextSize()の単位を設定する方法

Paint.setTextSize()の単位を変更することは可能ですか?私の知る限り、ピクセルですが、複数の画面をサポートするためにDIPでテキストサイズを設定するのが好きです。

56
Yverman

このように変換する

// The gesture threshold expressed in dip
private static final float GESTURE_THRESHOLD_DIP = 16.0f;

// Convert the dips to pixels
final float scale = getContext().getResources().getDisplayMetrics().density;
mGestureThreshold = (int) (GESTURE_THRESHOLD_DIP * scale + 0.5f);

// Use mGestureThreshold as a distance in pixels

ここから http://developer.Android.com/guide/practices/screens_support.html#dips-pels

46
Alex Volovoy

私はこのトピックが古く、すでに答えられていることを知っていますが、このコードも提案したいと思います:

int MY_DIP_VALUE = 5; //5dp

int pixel= (int) TypedValue.applyDimension(TypedValue.COMPLEX_UNIT_DIP,
                              MY_DIP_VALUE, getResources().getDisplayMetrics());
90
Felipe Caldas

そして、表示メトリックを考慮して、dp-sをpx-elsに変換するさらに短い方法があります

https://developer.Android.com/reference/Android/content/res/Resources.html#getDimensionPixelSize(int)

3
pelotasplus

Paintオブジェクトを使用してCanvasにテキストを描画している場合、Canvasにスケーリングを処理させることができます。

Canvas.drawText() を呼び出すと、最初に渡されるPaintオブジェクトによってテキストサイズが決定されます。このオブジェクトは Paint.setTextSize()で設定できます 。テキストサイズは、キャンバス密度に基づいてCanvasによって自動的にスケーリングされます。これは、 Canvas.getDensity() を使用して見つけることができます。

Canvasに描画されるPaintオブジェクトのテキストサイズを設定するときは、dpまたはspの単位値を操作し、Canvasにスケーリングを処理させますあなたのために。

2
Tanner Perrien