2012-04-10 9 views
6

私のAndroidアプリケーションでは、ピクセル(69px)があり、このピクセルをdip(Density Independent Pixels)に変換する必要があります。Androidでピクセルをdip(Density Independent Pixels)に変換する方法

提案がありますか?これはちょうどDisplayMetrics.densityにより、ピクセル単位で、あなたの価値を分割

Resources r = getResources(); 
float dp = TypedValue.applyDimension(TypedValue.COMPLEX_UNIT_PX, 69, r.getDisplayMetrics()); 

答えて

7

ホープ。

+2

ありません、それが正しいか、どのディップ – user1195614

10

参考になります

+0

としてピクセルの平均値と同じvalue.Iを与えている:分割すると@ Khushbooの例のように掛け合わせるのか? –

+1

Divide。 @Khushbooで示される式は、dpをpxに変換します。 xhdpiディスプレイでは、DisplayMetrics.density == 2.0f。 mdpiディスプレイでは1 dp == 1 px、xhdpiディスプレイでは1 dp == 2 pxなので、別の方法ではなく、dpをpxに変換するために分割する必要があります。 –

7

あなたがこの試すことができます:

public int convertDiptoPx(int pixel){ 

    float scale = getResources().getDisplayMetrics().density; 
    int dips=(int) ((pixel * scale) + 0.5f); 
    logMessage("Px=" +pixel+" DipValue="+dips); 
    return dips; 
} 

Editted:

public int convertPxtoDip(int pixel){ 
    float scale = getResources().getDisplayMetrics().density; 
    int dips=(int) ((pixel/scale) + 0.5f); 
    return dips; 
} 
+0

@ Romain-Guyによると、これは間違っていると思われる –

+0

私は今コードを編集しました。間違って、私は反対の変換の答えを投稿しました。 – Khushboo

+0

このウェブサイトで変換を確認することができます: - http://labs.skinkers.com/content/android_dp_px_calculator/。 – Khushboo

関連する問題