Frage Was ist der Unterschied zwischen "px", "dip", "dp" und "sp"?


Was ist der Unterschied zwischen Android-Maßeinheiten?

  • px
  • tauchen
  • dp
  • sp

5152
2018-01-08 03:23


Ursprung


Antworten:


Von dem Android Entwickler Dokumentation:

  1. px
    Pixel - entspricht den tatsächlichen Pixeln auf dem Bildschirm.

  2. im
    Zoll - basierend auf der physischen Größe des Bildschirms.
      1 Zoll = 2,54 Zentimeter

  3. mm
    Millimeter - basierend auf der physischen Größe des Bildschirms.

  4. pt
    Punkte - 1/72 Zoll basierend auf der physischen Größe des Bildschirms.

  5. dp oder tauchen
    Dichte-unabhängige Pixel - eine abstrakte Einheit, die auf der physischen Dichte des Bildschirms basiert. Diese Einheiten sind relativ zu einer 160       dpi-Bildschirm, also ein dpi ist ein Pixel auf einem Bildschirm mit 160 dpi. Das Verhältnis von       dp-to-pixel ändert sich mit der Bildschirmdichte, aber nicht unbedingt       in direktem Verhältnis. Hinweis: Der Compiler akzeptiert sowohl "dip" als auch       "dp", obwohl "dp" konsistenter mit "sp" ist.

  6. sp
    Rahmen-unabhängige Pixel - Dies ist wie bei der DP-Einheit, aber es wird auch durch die bevorzugte Schriftgröße des Benutzers skaliert. Es wird dir empfohlen       Verwenden Sie dieses Gerät beim Festlegen von Schriftgrößen, damit sie angepasst werden       sowohl für die Bildschirmdichte als auch für die Benutzerpräferenz.

Von Understanding Density Independence In Android:

+----------------+----------------+---------------+-------------------------------+
| Density Bucket | Screen Density | Physical Size | Pixel Size                    | 
+----------------+----------------+---------------+-------------------------------+
| ldpi           | 120 dpi        | 0.5 x 0.5 in  | 0.5 in * 120 dpi = 60x60 px   | 
+----------------+----------------+---------------+-------------------------------+
| mdpi           | 160 dpi        | 0.5 x 0.5 in  | 0.5 in * 160 dpi = 80x80 px   | 
+----------------+----------------+---------------+-------------------------------+
| hdpi           | 240 dpi        | 0.5 x 0.5 in  | 0.5 in * 240 dpi = 120x120 px | 
+----------------+----------------+---------------+-------------------------------+
| xhdpi          | 320 dpi        | 0.5 x 0.5 in  | 0.5 in * 320 dpi = 160x160 px | 
+----------------+----------------+---------------+-------------------------------+
| xxhdpi         | 480 dpi        | 0.5 x 0.5 in  | 0.5 in * 480 dpi = 240x240 px | 
+----------------+----------------+---------------+-------------------------------+
| xxxhdpi        | 640 dpi        | 0.5 x 0.5 in  | 0.5 in * 640 dpi = 320x320 px | 
+----------------+----------------+---------------+-------------------------------+
+---------+-------------+---------------+-------------+--------------------+
| Unit    | Description | Units Per     | Density     | Same Physical Size | 
|         |             | Physical Inch | Independent | On Every Screen    | 
+---------+-------------+---------------+-------------+--------------------+
| px      | Pixels      | Varies        | No          | No                 | 
+---------+-------------+---------------+-------------+--------------------+
| in      | Inches      | 1             | Yes         | Yes                | 
+---------+-------------+---------------+-------------+--------------------+
| mm      | Millimeters | 25.4          | Yes         | Yes                | 
+---------+-------------+---------------+-------------+--------------------+
| pt      | Points      | 72            | Yes         | Yes                | 
+---------+-------------+---------------+-------------+--------------------+
| dp      | Density     | ~160          | Yes         | No                 | 
|         | Independent |               |             |                    | 
|         | Pixels      |               |             |                    | 
+---------+-------------+---------------+-------------+--------------------+
| sp      | Scale       | ~160          | Yes         | No                 | 
|         | Independent |               |             |                    | 
|         | Pixels      |               |             |                    | 
+---------+-------------+---------------+-------------+--------------------+

Weitere Informationen finden Sie auch in der Google Design-Dokumentation.

Um Dimensionen auf einem echten Gerät zu berechnen Dies App kann verwendet werden.


5187
2018-02-25 12:56



So ziemlich alles darüber und wie man die beste Unterstützung für mehrere Bildschirme mit unterschiedlichen Größen und Dichten erreicht, ist hier sehr gut dokumentiert:

Bildschirmgröße
  Tatsächliche physische Größe, gemessen als Bildschirmdiagonale.   Zur Vereinfachung gruppiert Android alle tatsächlichen Bildschirmgrößen in vier   verallgemeinerte Größen: klein, normal, groß und extra groß.

Bildschirmdichte
    Die Anzahl der Pixel in einem physischen Bereich des   Bildschirm; normalerweise als dpi (Punkte pro Zoll) bezeichnet. Beispiel: a   "Low" -Dichte Bildschirm hat weniger Pixel innerhalb eines gegebenen physikalischen Bereichs,   im Vergleich zu einem Bildschirm mit "normaler" oder "hoher" Dichte. Der Einfachheit halber   Android gruppiert alle tatsächlichen Bildschirmdichten in sechs generalisierte   Dichten: niedrig, mittel, hoch, extra-hoch, extra-extra-hoch, und   extra-extra-extra-hoch.

Orientierung
Die Ausrichtung des Bildschirms vom Benutzer aus   Aussicht. Dies ist entweder Landschaft oder Porträt, was bedeutet, dass der Bildschirm ist   Das Seitenverhältnis ist entweder breit oder hoch. Sei dir dessen bewusst   nur funktionieren unterschiedliche Geräte in unterschiedlichen Orientierungen   Standard, aber die Ausrichtung kann sich zur Laufzeit ändern, wenn der Benutzer   dreht das Gerät.

Auflösung
 Die Gesamtzahl der physischen Pixel an   ein Bildschirm. Wenn Sie Unterstützung für mehrere Bildschirme hinzufügen, tun dies Anwendungen   nicht direkt mit der Auflösung arbeiten; Anwendungen sollten betroffen sein   nur mit Bildschirmgröße und -dichte, wie durch das verallgemeinerte spezifiziert   Größen- und Dichtegruppen.

Dichteunabhängiges Pixel (dp)
 Ein virtueller   Pixeleinheit, die Sie beim Definieren des UI-Layouts verwenden sollten, um auszudrücken   Layout Dimensionen oder Position in einer Dichte-unabhängige Weise.   Das dichteunabhängige Pixel entspricht einem physischen Pixel auf einer 160   dpi-Bildschirm. Dies ist die Basisdichte, die vom System für a angenommen wird   "mittlerer" Dichte Bildschirm. Zur Laufzeit wird das System transparent behandelt   jede Skalierung der dp-Einheiten, falls erforderlich, basierend auf der tatsächlichen Dichte   des verwendeten Bildschirms. Die Umwandlung von dp-Einheiten in Bildschirmpixel ist   einfach:    px = dp * (dpi / 160).   Auf einem Bildschirm mit 240 dpi wird beispielsweise 1 dp   entspricht 1,5 physikalischen Pixeln. Sie sollten immer dp-Einheiten verwenden, wenn   Definieren Sie die Benutzeroberfläche Ihrer Anwendung, um sicherzustellen, dass Ihre Benutzeroberfläche korrekt angezeigt wird   Bildschirme mit unterschiedlichen Dichten.

Wenn Sie ernsthaft daran interessiert sind, eine Android-App für mehr als einen Gerätetyp zu entwickeln, sollten Sie mindestens einmal das Support-Entwicklungsdokument lesen. Darüber hinaus ist es immer eine gute Sache, die tatsächliche Anzahl aktiver Geräte zu kennen, die eine bestimmte Bildschirmkonfiguration haben.


606
2017-08-02 14:15



Ich werde näher darauf eingehen, wie genau dp in px konvertiert:

  • Wenn auf einem MDPI-Gerät ausgeführt wird, a 150 x 150 px Bild wird aufnehmen 150 * 150 dp von Bildschirmplatz.
  • Wenn auf einem HDPI-Gerät ausgeführt wird, a 150 x 150 px Bild wird aufnehmen 100 * 100 dp von Bildschirmplatz.
  • Wenn auf einem xhdpi-Gerät ausgeführt wird, a 150x150 px Bild wird aufnehmen 75 * 75 dp von Bildschirmplatz.

Anders herum: Sagen Sie, Sie möchten Ihrer Anwendung ein Bild hinzufügen, und Sie benötigen es, um ein Bild zu füllen 100 * 100 dp Steuerung. Sie müssen für die unterstützten Bildschirmgrößen Bilder in verschiedenen Größen erstellen:

  • 100 * 100 px Bild für MDPI
  • 150 * 150 px Bild für HDPI
  • 200 * 200 px Bild für xhdpi

280
2017-10-30 09:43



px Pixel - Punkt pro Skala entspricht den tatsächlichen Pixeln auf dem Bildschirm.

im Zoll - basierend auf der physischen Größe des Bildschirms.

mm Millimeter - basierend auf der physischen Größe des Bildschirms.

pt Punkte - 1/72 Zoll basierend auf der physischen Größe des Bildschirms.

dp Dichte - unabhängige Pixel - eine abstrakte Einheit, die auf der physischen Dichte des Bildschirms basiert. Diese Einheiten sind relativ zu einem Bildschirm mit 160 dpi, also eins dp ist ein Pixel auf einem Bildschirm mit 160 dpi. Das Verhältnis von Pixel zu Pixel ändert sich mit der Bildschirmdichte,  aber nicht unbedingt in direktem Verhältnis.  Hinweis: Der Compiler akzeptiert beides dip und dpobwohl dp ist konsistenter mit sp.

sp Skalierung-unabhängige Pixel - Das ist wie die dp Einheit,  aber es wird auch durch die Schriftgröße des Benutzers skaliert. Es wird empfohlen, dieses Gerät zu verwenden, wenn Sie Schriftgrößen festlegen,  Sie werden also sowohl für die Bildschirmdichte als auch für die Benutzereinstellungen angepasst.

Nehmen wir als Beispiel zwei Bildschirme, die dieselbe Größe haben, aber eine eine Bildschirmdichte von 160 dpi (Punkte pro Zoll, d. H. Pixel pro Zoll) und die andere 240 dpi aufweist.

                          Lower resolution   screen          Higher resolution, same size
Physical Width                      1.5 inches                        1.5 inches
Dots Per Inch (“dpi”)               160                               240
Pixels (=width*dpi)                 240                               360
Density (factor of baseline 160)    1.0                               1.5

Density-independent Pixels          240                               240
(“dip” or “dp” or “dps”)

Scale-independent pixels 
 (“sip” or “sp”)                  Depends on user font size settings    same

232
2017-07-26 21:19



Außerdem sollten Sie sich über die folgenden Konzepte klar sein:

Bildschirmgröße:

Tatsächliche physische Größe, gemessen als Bildschirmdiagonale. Der Einfachheit halber fasst Android alle tatsächlichen Bildschirmgrößen zusammen   vier verallgemeinerte Größen: klein, normal, groß und extra groß.

Bildschirmdichte: 

Die Anzahl der Pixel innerhalb eines physischen Bereichs des Bildschirms; normalerweise als dpi (Punkte pro Zoll) bezeichnet. Beispiel: a   "Low" -Dichte Bildschirm hat weniger Pixel innerhalb eines gegebenen physikalischen Bereichs,   im Vergleich zu einem Bildschirm mit "normaler" oder "hoher" Dichte. Der Einfachheit halber   Android gruppiert alle tatsächlichen Bildschirmdichten in vier verallgemeinerte   Dichten: niedrig, mittel, hoch und extra hoch.

Orientierung: 

Die Ausrichtung des Bildschirms aus der Sicht des Benutzers. Dies ist entweder Landschaft oder Porträt, was bedeutet, dass die   Das Seitenverhältnis des Bildschirms ist entweder breit oder hoch. Sei vorsichtig   dass nicht nur unterschiedliche Geräte in unterschiedlichen Orientierungen arbeiten   Standardmäßig kann sich die Ausrichtung zur Laufzeit beim Benutzer ändern   dreht das Gerät.

Auflösung:

Die Gesamtzahl der physischen Pixel auf einem Bildschirm. Wenn Sie Unterstützung für mehrere Bildschirme hinzufügen, funktionieren Anwendungen nicht direkt   mit Auflösung; Anwendungen sollten nur mit Bildschirm betroffen sein   Größe und Dichte, wie durch die generalisierte Größe und Dichte angegeben   Gruppen.

Dichteunabhängiges Pixel (dp): 

Eine virtuelle Pixeleinheit, die Sie beim Definieren des UI-Layouts verwenden sollten, um Layout-Dimensionen auszudrücken oder   positionsunabhängig positionieren. Das dichteunabhängige Pixel   entspricht einem physischen Pixel auf einem 160-dpi-Bildschirm, der das ist   Grundliniendichte, die das System für einen Bildschirm mit "mittlerer" Dichte annimmt.   Zur Laufzeit behandelt das System transparent jede Skalierung des DP   Einheiten, je nach Bedarf, basierend auf der tatsächlichen Dichte des verwendeten Bildschirms.   Die Umwandlung von dpi-Einheiten in Bildschirmpixel ist einfach: px = dp * (dpi   / 160). Auf einem Bildschirm mit 240 dpi entspricht 1 dp beispielsweise 1,5 physical   Pixel. Sie sollten immer dp-Einheiten verwenden, wenn Sie Ihre definieren   Benutzeroberfläche der Anwendung, um die ordnungsgemäße Anzeige Ihrer Benutzeroberfläche auf Bildschirmen mit   verschiedene Dichten.

Referenz: Android-Entwickler-Website


183
2017-10-17 12:47



dp ist dip. Verwenden Sie es für alles (Rand, Padding, etc.).

Benutzen sp nur für {text-size}.


Um die gleiche Größe bei unterschiedlichen Bildschirmdichten zu erhalten, setzt Android diese Einheiten zur Laufzeit in Pixel um, so dass Sie keine komplizierte Mathematik vorfinden müssen.


Sehen Sie den Unterschied zwischen px, dp und sp auf verschiedenen Bildschirmgrößen.

Enter image description here

Quelle: Android-Programmierung: Der Big Nerd Ranch Guide


168
2018-01-10 19:13



Ich habe die folgende Formel berechnet, um die Umrechnungen vorzunehmen dpi zu dp und sp enter image description here


118
2017-12-27 09:21



Definitionen

px oder Punkt ist ein Pixel auf dem physischen Bildschirm.

dpi sind Pixel pro Zoll auf dem physischen Bildschirm und repräsentieren die Dichte der Anzeige.

Android gibt Alias-Namen zu mehreren Dichten

  • LDpi (niedrig) ~ 120 dpi
  • MDPI (mittel) ~ 160dpi
  • hdpi (hoch) ~ 240 dpi
    • Die meisten Geräte im Jahr 2015 sind hier
  • xhdpi (extra hoch) ~ 320 dpi
    • Apple iPhone 4/5/6, Nexus 4
  • xxhdpi (extra-extra-hoch) ~ 480dpi
    • Nexus 5
  • xxxhdpi (extra-extra-extra-high) ~ 640 dpi

tauchen oder dp sind Dichte-indenpendant Pixelh. sie entsprechen mehr oder weniger Pixeln in Abhängigkeit von der physikalischen Dichte.

  • 1dp = 1px auf mdpi

enter image description here

sp oder Schluck ist ein skalenunabhängiges Pixel. Sie sind skaliert, wenn die Großer Text Option ist eingeschaltet in die Einstellungen > Zugänglichkeit

  • 1 sp = 1 dp
  • 1sp = 1.2dp mit Zugänglichkeit Großer Text

Was zu verwenden?

Benutzen sp für Textgröße.

Benutzen dp für alles andere.


106
2017-09-20 21:34



Quelle 1

Quelle 2

Quelle 3: (Daten von Quelle 3 sind unten angegeben)

Dies sind Dimensionswerte, die in XML definiert sind. Eine Dimension ist angegeben   mit einer Nummer gefolgt von einer Maßeinheit. Zum Beispiel: 10px, 2in,   5sp. Folgende Maßeinheiten werden von Android unterstützt:

dp

Dichteunabhängige Pixel - Eine abstrakte Einheit, die auf der   physische Dichte des Bildschirms. Diese Einheiten sind relativ zu 160 dpi   Bildschirm (Punkte pro Zoll), auf dem 1dp etwa 1px entspricht. Wann   Auf einem Bildschirm mit höherer Dichte wird die Anzahl der zum Zeichnen verwendeten Pixel angezeigt   1dp wird um einen Faktor hochskaliert, der für die Bildschirmauflösung geeignet ist.   Ebenso, wenn auf einem Bildschirm mit geringerer Dichte die Anzahl der verwendeten Pixel ist   für 1dp ist verkleinert. Das Verhältnis von Pixel zu Pixel wird sich mit dem ändern   Bildschirmdichte, aber nicht unbedingt in direktem Verhältnis. Mit dp   Einheiten (statt px Einheiten) ist eine einfache Lösung, um die Ansicht zu machen   Dimensionen in Ihrem Layout ändern Sie die Größe für verschiedene Bildschirme   Dichten. Mit anderen Worten, es bietet Konsistenz für die reale Welt   Größen Ihrer UI-Elemente auf verschiedenen Geräten.

sp

Maßstabsunabhängige Pixel - Dies ist wie die dp-Einheit, aber es ist auch   skaliert nach der Präferenz des Benutzers für die Schriftgröße. Es wird empfohlen, dass Sie verwenden   Diese Einheit bei der Festlegung der Schriftgrößen, so dass sie angepasst werden   sowohl die Bildschirmdichte als auch die Präferenz des Benutzers.

pt

Punkte - 1/72 Zoll basierend auf der physischen Größe des Bildschirms.

px

Pixel - Entspricht den tatsächlichen Pixeln auf dem Bildschirm. Diese Einheit von   Maßnahme wird nicht empfohlen, da die tatsächliche Darstellung variieren kann   über Geräte hinweg; Jedes Gerät kann eine andere Anzahl von Pixeln haben   Zoll und möglicherweise mehr oder weniger Gesamtpixel auf dem Bildschirm verfügbar.

mm

Millimeter - Basierend auf der physischen Größe des Bildschirms.

im

Zoll - Basierend auf der physischen Größe des Bildschirms.

Hinweis: Eine Dimension ist eine einfache Ressource, auf die mit dem im Attribut name angegebenen Wert verwiesen wird (nicht der Name der XML-Datei). Daher können Sie Dimensionsressourcen mit anderen einfachen Ressourcen in der einen XML-Datei unter einem Element kombinieren.


104
2018-04-02 06:35



Im Grunde genommen ist die einzige Zeit, in der px verwendet wird, ein px, und das ist, wenn Sie genau ein Pixel auf dem Bildschirm haben wollen, wie im Falle eines Teilers:

Bei> 160 dpi können Sie 2-3 Pixel erhalten,

Bei> 120 dpi wird auf 0 gerundet.


96
2017-07-09 05:46



px

Pixel - entspricht den tatsächlichen Pixeln auf dem Bildschirm.

dp oder dip

Dichteunabhängige Pixel - eine abstrakte Einheit, die auf der physischen Dichte des Bildschirms basiert. Diese Einheiten sind relativ zu einem 160-dpi-Bildschirm, so dass ein dpi ein Pixel auf einem 160-dpi-Bildschirm ist.

Verwendung von DP:

Dichte Unabhängigkeit - Ihre Anwendung erreicht "Dichteunabhängigkeit", wenn sie die physische Größe (aus der Sicht des Benutzers) von Benutzeroberflächenelementen bei der Anzeige auf Bildschirmen mit unterschiedlichen Dichten beibehält. (dh) Das Bild sollte in verschiedenen Bildschirmtypen die gleiche Größe haben (nicht vergrößert oder verkleinert).

sp

Skalierungsunabhängige Pixel - Dies ist wie bei der DP-Einheit, wird aber auch anhand der bevorzugten Schriftgröße des Benutzers skaliert.

http://developer.android.com/guide/topics/resources/more-resources.html#Dimension


81
2018-02-13 18:50