2016-07-09 4 views
0

私はこの権利を守るのに苦労しています。複数のスクリーンサポートのためにdpをピクセルに変換する

基本的にImageViewを作成し、それにLayoutParameterを適用しています。

LayoutParams lp = new LayoutParams(width, height); 
lp.gravity = Gravity.CENTER; 

私はwidthheightパラメータは画素数を受け取ることを知っているので、私はDPに渡すと、使用して絶対的なピクセルに変換しています:

public int convertToPixels(float dpSize){ 
    final float density = getResources().getDisplayMetrics().density; 
    return ((int) (dpSize * density + 0.5f)); 
} 

として、私の知る、これは描画可能にすべきです別の画面で正確に同じ領域を塗りつぶすのでしょうか?残念ながら、それはまったく起こっていません。

私が使用しているこれらの方法には何か問題がありますか?

以下の2つのエミュレータは、同じイメージと同じDP量を持っています。 左のエミュレータは1.0の密度で、右のエミュレータは2.0です。なぜまだそれは と異なって見えるのですか? .. undertandないでください

enter image description here

答えて

1

用途:

パブリッククラスの変換{

public static float convertDpToPixel(float dp){ 
     DisplayMetrics metrics = Resources.getSystem().getDisplayMetrics(); 
     float px = dp * (metrics.densityDpi/160f); 
     return Math.round(px); 
     } 

}

ただ、静的な方法でそれを使用します。

float requiredPixel = Convert.convertDpToPixel(16.0); 

詳細:https://developer.android.com/guide/practices/screens_support.html

+0

Saini、私の編集を見てください。同じdpの金額でも正しく表示されないのはなぜですか? – AndroidDev

+0

は私のコードがあなたのために正しく働いていますか? – Saini

+0

それは計算が正しいと確信していますが、イメージはまだサイズのtermos – AndroidDev

関連する問題