web-dev-qa-db-ja.com

プログラムでAndroidのピクセルからdpを計算する方法

dpからpxをプログラムで計算したい。どうやるか?私はから解像度を取得します:

DisplayMetrics displaymetrics = new DisplayMetrics();
getWindowManager().getDefaultDisplay().getMetrics(displaymetrics);
ht = displaymetrics.heightPixels;
wt = displaymetrics.widthPixels;
116
Dawid Hyży

ここでのすべての答えは、px-> dpではなくdp-> px変換を示していますOPが求めたものです。px-> dpの変換に TypedValue.applyDimension を使用できないことに注意してください。ここで説明する方法を使用する必要があります。- https://stackoverflow.com/a/17880012/504611 (便宜上、以下に引用)。

Contextオブジェクトなしのエレガントな静的メソッド:

public static int dpToPx(int dp) {
    return (int) (dp * Resources.getSystem().getDisplayMetrics().density);
}

public static int pxToDp(int px) {
    return (int) (px / Resources.getSystem().getDisplayMetrics().density);
}
326
Vicky Chijwani
float ht_px = TypedValue.applyDimension(TypedValue.COMPLEX_UNIT_DIP, ht, getResources().getDisplayMetrics());
float wt_px = TypedValue.applyDimension(TypedValue.COMPLEX_UNIT_DIP, wt, getResources().getDisplayMetrics());
53
Vladimir

これにより、変換ピクセル-> dpが得られます。

DisplayMetrics displaymetrics = new DisplayMetrics();
int dp = (int) TypedValue.applyDimension( TypedValue.COMPLEX_UNIT_DIP, myPixels, displaymetrics );
40
kaspermoerch
DisplayMetrics dm = new DisplayMetrics();
        getWindowManager().getDefaultDisplay().getMetrics(dm);
        String str_ScreenSize = "The Android Screen is: "
                    + dm.widthPixels
                    + " x "
                    + dm.heightPixels;

        TextView mScreenSize = (TextView) findViewById(R.id.strScreenSize);
        mScreenSize.setText(str_ScreenSize);

チェックしてください。

またはこれはあなたを助けるかもしれない

int value = (int) TypedValue.applyDimension(TypedValue.COMPLEX_UNIT_DIP, 
                     (float) 123.4, getResources().getDisplayMetrics());
2
NikhilReddy