Androidのピクセルからdpをプログラムで計算する方法 [重複] 質問する

Androidのピクセルからdpをプログラムで計算する方法 [重複] 質問する

dpプログラムで計算したいのですpxが、どうすればいいでしょうか? 解像度は次のようになります:

DisplayMetrics displaymetrics = new DisplayMetrics();
getWindowManager().getDefaultDisplay().getMetrics(displaymetrics);
ht = displaymetrics.heightPixels;
wt = displaymetrics.widthPixels;

ベストアンサー1

ここでの回答はすべてdp->px変換ではなくピクセル->dp、それが OP が求めていたものです。ご了承くださいTypedValue.applyDimensionpx->dp の変換には使用できません。そのためには、ここで説明する方法を使用する必要があります。https://stackoverflow.com/a/17880012/504611(便宜上、以下に引用します)。

fun Context.dpToPx(dp: Int): Int {
    return (dp * resources.displayMetrics.density).toInt()
}

fun Context.pxToDp(px: Int): Int {
    return (px / resources.displayMetrics.density).toInt()
}

おすすめ記事