2010-11-25 8 views

答えて

162

ストレートコード

int padding_in_dp = 6; // 6 dps 
    final float scale = getResources().getDisplayMetrics().density; 
    int padding_in_px = (int) (padding_in_dp * scale + 0.5f); 
+1

こんにちは、私は質問があります。この式はパディングのみに使用されていますか?例えば矩形の余白またはdimmension? – Emerald214

+4

これは[dp単位をピクセル単位に変換する](http://developer.android.com/guide/practices/screens_support.html#dips-pels)の式です。どこでも使用できます –

+2

'getResources()'はアクティビティによって継承された関数だと仮定しますが、カスタムリストビューアダプタでこれらの行を使用しようとしています。 'getResources()'を呼び出せない場合、私はこれを行うことができる方法はありますか? –

0

私は同じ問題を抱えてきました。私が見つけた唯一の解決策(それは本当にあなたを助けません:))は、XMLファイルに設定することです。

コードから密度を得ることができる場合は、変換を使用することができます。「ディップ単位の画面ピクセルへの変換は簡単です。pixels = dips *(density/160)」

http://developer.android.com/guide/practices/screens_support.htmlから)編集:あなたがある(XMLファイル内(DPまたは任意で)ディメンションを定義した場合http://developer.android.com/reference/android/util/DisplayMetrics.html#densityDpi

78

へ:あなたは画面密度を得ることができますとにかく、少なくともほとんどの場合)、このコードを使用してピクセル値を取得できます。

context.getResources().getDimensionPixelSize(R.dimen.your_dimension_name) 
+5

これは、受け入れられた回答よりも優れた実践IMOです – Aphex

関連する問題