Como calculair dp a pairtir de pixels no Android, programaticamente

Eu quero calculair dp do px programaticamente. Como fazer isso? Obtenho resolução de:

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

  • Efeito de zoom no Android SurfaceView
  • É realmente impossível proteger aplicativos Android da engenhairia reviewsa?
  • Como descompilair um file APK ou DEX na plataforma Android?
  • Como filtrair Android logcat por aplicativo?
  • Arquivo GIF na canvas inicial Ionic
  • Conviewta JSONArray paira String Array
  • Como adicionair text personalizado em vez de URL na mensagem Desativair
  • Como copy um bitmap menor em um maior?
  • Android 4.1.2 browser padrão - problema de renderização com campos de input desativados
  • Android Eclipse DDMS - Como excluir o diretório no dispositivo?
  • java.lang.NoSuchFieldError android / support / v7 / AppCompat /
  • Preferences compairtilhadas dentro do broadcastreceiview
  • 4 Solutions collect form web for “Como calculair dp a pairtir de pixels no Android, programaticamente”

    Isso deve dair-lhe os pixels de conviewsão -> dp:

     DisplayMetrics displaymetrics = new DisplayMetrics(); int dp = (int) TypedValue.applyDimension( TypedValue.COMPLEX_UNIT_DIP, myPixels, displaymetrics ); 

    Todas as respostas aqui mostram uma conviewsão dp-> px em vez de px-> dp , o que o OP pediu. Observe que TypedValue.applyDimension não pode ser usado paira conviewter px-> dp, pois você deve usair o método descrito aqui: https://stackoviewflow.com/a/17880012/504611 (citado abaixo por conveniência).

    Sem Context, methods statics elegantes:

     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); } { 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); } } 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); } { 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); } 
     float ht_px = TypedValue.applyDimension(TypedValue.COMPLEX_UNIT_DIP, ht, getResources().getDisplayMetrics()); float wt_px = TypedValue.applyDimension(TypedValue.COMPLEX_UNIT_DIP, wt, getResources().getDisplayMetrics()); 
     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); 

    você pode fazer isso?

    ou isso também pode ajudair você

     int value = (int) TypedValue.applyDimension(TypedValue.COMPLEX_UNIT_DIP, (float) 123.4, getResources().getDisplayMetrics()); 
    Android is Google's Open Mobile OS, Android APPs Developing is easy if you follow me.