2011-01-20 10 views
5

私はptユニットをXMLファイルに使用しています。今では、実行時に要素の幅を設定する必要があります。ポイントごとに幅を設定すると、他の場所で使用していたものと同じ単位になります。私は解像度とdpiを掛ける必要があると思う。コードサンプルが最適です。Android:ポイントをピクセルに変換する

+0

ポイントをピクセルに変換することについては、http://systemdotrun.blogspot.co.uk/2014/09/whats-point-in-font-sizing.htmlを参照してください。 – Dori

答えて

10

初のdipを使用することができます。途中で

http://developer.android.com/guide/practices/screens_support.html

右をあなたは見つけることができます

コードにハードコードされたピクセル値を使用しないでください。

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

2行目に「+ 0.5f」が表示されるのはなぜですか?その例のマジックナンバー、またはピクセルをdpに正しく変換する必要がありますか? – C0deAttack

+3

式が整数に変換されるとき、最も近い整数に丸めます。 – Blrfl

+0

Blrflはこれを最も近い整数に丸めます。 – Yahel

1

あなたが本当にAndroidの開発者用ドキュメントから、次の綿密な記事読んでください代わりにpt

+1

私はdipの代わりにptを使用しています。なぜなら、非プログラマーにとっては意味があるからです。もし誰かがそれをどれくらい大きく尋ねるなら、私は12ポイントを言うことができ、彼らはそれが何であるかを知ることができます。私がピクセルと言うなら、アンドロイドのピクセルはPC上にあるよりはるかに小さいとわからないかもしれません。そして、私がディップを言うならば、彼らは新しい単語に直面します。すべてのことを脇に。実行時にdipを使用することはできますか? ptをdipに変換できますか? –

+0

実行時の質問にお答えします。はい、できますが、PixelsをDPに変換するには、ピクセルにcontext()。getResources()。getDisplayMetrics()。densityで取得できるスクリーンの倍率を掛けなければなりません。 – C0deAttack

関連する問題