如何计算 dp 从像素在机器人编程

我想从 px程序化地计算 dp。怎么做? 我的决心来自:

DisplayMetrics displaymetrics = new DisplayMetrics();
getWindowManager().getDefaultDisplay().getMetrics(displaymetrics);
ht = displaymetrics.heightPixels;
wt = displaymetrics.widthPixels;
109126 次浏览

这应该会给你转换像素-> dp:

DisplayMetrics displaymetrics = new DisplayMetrics();
int dp = (int) TypedValue.applyDimension( TypedValue.COMPLEX_UNIT_DIP, myPixels, displaymetrics );
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());
float ht_px = TypedValue.applyDimension(TypedValue.COMPLEX_UNIT_DIP, ht, getResources().getDisplayMetrics());
float wt_px = TypedValue.applyDimension(TypedValue.COMPLEX_UNIT_DIP, wt, getResources().getDisplayMetrics());

这里的所有答案都显示了 Dp-> px转换,而不是 OP 要求的 Px-> dp转换。 请注意,TypedValue.applyDimension不能用于转换 px-> 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()
}