Paint.setTextSize()
の単位を変更することは可能ですか?私の知る限り、ピクセルですが、複数の画面をサポートするためにDIPでテキストサイズを設定するのが好きです。
このように変換する
// 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
私はこのトピックが古く、すでに答えられていることを知っていますが、このコードも提案したいと思います:
int MY_DIP_VALUE = 5; //5dp
int pixel= (int) TypedValue.applyDimension(TypedValue.COMPLEX_UNIT_DIP,
MY_DIP_VALUE, getResources().getDisplayMetrics());
そして、表示メトリックを考慮して、dp-sをpx-elsに変換するさらに短い方法があります
Paintオブジェクトを使用してCanvasにテキストを描画している場合、Canvasにスケーリングを処理させることができます。
Canvas.drawText()
を呼び出すと、最初に渡されるPaint
オブジェクトによってテキストサイズが決定されます。このオブジェクトは Paint.setTextSize()
で設定できます 。テキストサイズは、キャンバス密度に基づいてCanvas
によって自動的にスケーリングされます。これは、 Canvas.getDensity()
を使用して見つけることができます。
Canvasに描画されるPaintオブジェクトのテキストサイズを設定するときは、dp
またはsp
の単位値を操作し、Canvasにスケーリングを処理させますあなたのために。