Rapporti tra dip, px e dpi

Se, in un file xml di layout, ho impostato la dimensione, ad esempio 12dip. Will che sempre essere 12px in mdpi e così 18px in hdpi?

Quindi è sempre vero per mdpi e scalare di conseguenza per altre densità?

  • animation per passare tra le viste con la rotazione sull'asse z con la percezione della profondità
  • Android, Come posso applicare CSS in WebView?
  • "Android.provider.Telephony.SMS_RECEIVED" non funziona sul mio dispositivo (HTC Wildfire) - come eseguire il debug?
  • Come importre set di icone nel progetto Android Studio
  • Come distriggersre lo scorrimento GridView in Android?
  • Imansible istanziare il ricevitore in BroadcastReceiver SMS
  • il richiamo saveInBackground non funziona
  • Conflitto del pacchetto durante la pubblicazione di app simili
  • Gettaxtbounds in android
  • Android: adb: Autorizzazione negata
  • CardView ha perso il margine quando si gonfia
  • Debugging di Android NDK
  • 2 Solutions collect form web for “Rapporti tra dip, px e dpi”

    Questa domanda è interamente coperta dalla documentazione ufficiale . Le relazioni tra dip, px e dpi sono coperti da questa sezione.

    Citazione:

    Pixel indipendenti dalla densità (dp)

    Un'unità pixel virtuale che le applicazioni possono utilizzare per definire il proprio UI, per esprimere size o posizioni di layout in modo indipendente dalla densità.

    Il pixel indipendente dalla densità è equivalente ad un pixel fisico su uno schermo a 160 dpi, la densità di base assunta dalla piattaforma (come descritto più avanti in questo documento). Al momento dell'esecuzione, la piattaforma gestisce in modo trasparente qualsiasi scalatura delle unità dp necessarie, in base alla densità reale dello schermo in uso. La conversione di unità dp ai pixel dello schermo è semplice: pixel = dps * (densità / 160). Ad esempio, sullo schermo a 240 dpi, 1 dp sarebbe pari a 1,5 pixel fisici. L'utilizzo di unità dp per definire l'interface utente dell'applicazione è altamente raccomandato, in modo da garantire una corretta visualizzazione dell'interface utente in diverse schermate.

    Così la dichiarazione:

    che sia sempre 12px in mdpi e quindi 18px in hdpi

    sembra essere corretto, secondo i documenti.

    12dp sarà 12px su un dispositivo con densità di 160 dpi. I documenti non dicono che tutti i dispositivi mdpi hanno esattamente 160 dpi, quindi sembra che potrebbero trovare dispositivi mdpi con altre densità (ad esempio 150 o 180 dpi). In questi casi, il rapporto 1dp = 1px non sarebbe vero.

    Puoi solo essere sicuri di questa relazione:

     px = dp * (dpi / 160) 

    Se un dispositivo ha una densità di 320 dpi, each dp corrisponde a 2 px, perché 320/160 è 2. Vorrei dire che 2 è il "fattore di densità", ma è anche quello che si ottiene con getResources().getDisplayMetrics().density , quindi è anche chiamata "densità".

    L'Android è un fan Android di Google, tutto su telefoni Android, Android Wear, Android Dev e applicazioni Android Games e così via.