How to calculate dp from pixels in android programmatically [duplicate]
All the answers here show a dp->px conversion rather than px->dp, which is what the OP asked for.Note that TypedValue.applyDimension
cannot be used to convert px->dp, for that you must use the method described here: https://stackoverflow.com/a/17880012/504611 (quoted below for convenience).
fun Context.dpToPx(dp: Int): Int { return (dp * resources.displayMetrics.density).toInt()}fun Context.pxToDp(px: Int): Int { return (px / resources.displayMetrics.density).toInt()}
float ht_px = TypedValue.applyDimension(TypedValue.COMPLEX_UNIT_DIP, ht, getResources().getDisplayMetrics());float wt_px = TypedValue.applyDimension(TypedValue.COMPLEX_UNIT_DIP, wt, getResources().getDisplayMetrics());
This should give you the conversion pixels -> dp:
DisplayMetrics displaymetrics = new DisplayMetrics();int dp = (int) TypedValue.applyDimension( TypedValue.COMPLEX_UNIT_DIP, myPixels, displaymetrics );