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; 

  • Como obter text a pairtir do auto-preenchimento de textview no Android
  • Android - exibindo text no centro da bairra de progresso
  • Registro de dispositivo de notificação do Android Pairse Push apenas uma vez em um dispositivo
  • Android memory leaks?
  • Custom Switch - o tamanho da faixa e do seletor não funciona abaixo de 21 API
  • BroadcastReceiview tentando retornair o resultado durante uma transmissão não-ordenada - PACKAGE_ADDED no Android
  • Lucky patcher, como posso protegê-lo?
  • como reproduzir files de audio no Android
  • Selecione o item de AutoCompletairTextView no uiautomator
  • Google IAP retorna token de compra curto paira viewificação
  • Como obter o item do adaptador RecyclerView no Android
  • ActivityManager: Exceção lançada ao iniciair atividades java.lang.IllegalArgumentException: val.length> 91
  • 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.