Ich sehe, das ist wahrscheinlich eine noob Frage, aber es verwirrt mich wirklich.
Ich lese Dokumente aus Google Material Design zusammen mit einigen Implementierungen in CSS. Die Spezifikation ist in Android geschrieben dp
, während CSS-Codes px
als Längeneinheit verwendet werden.
Was mich verwirrt ist, dass die CSS-Implementierungen oft den genauen Wert aus der Spezifikation verwenden, zum Beispiel sollte ein Toast Folgendes haben :
Einzeilige Snackbarhöhe: 48 dp hoch
Mindestbreite: 288 dp
2 dp abgerundete Ecke
min-height: 48px;
min-width: 288px;
...
border-radius: 2px;
Nach meinem derzeitigen Verständnis wird ein Android DP
im Allgemeinen in der Größe eines Pixels auf einem 160-dpi-Bildschirm angezeigt, während das CSS px
als visueller Winkel definiert ist. Also ist a px
zufällig dasselbe wie a, dp
wenn man in einiger Entfernung sieht? Wenn ja, ist das ein gängiges Muster px
wie dp
in CSS, oder habe ich den CSS-Code völlig falsch verstanden?
Ich weiß vorher nichts über Android-Entwicklung und keinen Designer. Vielen Dank für jede Hilfe.
em/rem
überall s verwenden und dann die Grundschriftgröße für jede Auflösung skalieren.Antworten:
Ich denke das akzeptierte ist falsch. Das css px ist tatsächlich ein geräteunabhängiges Pixel (dip), und es ist ein verbreitetes Muster, px als dp in css zu verwenden.
quelle
Ich glaube, die vollständige Antwort auf Ihre Frage finden Sie hier:
/programming/2025282/difference-between-px-dp-dip-and-sp-in-android
Um dp in px zu konvertieren, müssen Sie die Anzeigeabmessungen berücksichtigen, an die Sie sich wenden. Je höher der DPI-Wert, desto mehr Pixel müssen im selben Bereich verstopft werden, damit sie gut aussehen und Pixelbildung vermieden wird :
ldpi: 1 dp = 0,75 px
mdpi: 1 dp = 1 px
hdpi: 1 dp = 1,5 px
xhdpi: 1 dp = 2 px
xxhdpi: 1 dp = 3 px
xxxhdpi: 1 dp = 4 px
Z.B:
Ein 3x3 dp-Quadrat in CSS oder Photoshop muss sein:
2,25x2,25 px - ldpi
3x3 px - mdpi (Samsung ACE, Xperia X8)
6x6 px - xhdpi (Xperia S, Google Nexus 4)
9x9 px - xxhdpi (Samsung S4 - S5, HTC One)
12x12 px - xxxhdpi (diese Auflösung) wird auf Geräten der nächsten Generation verwendet)
Basierend auf dem oben Gesagten sollten Ihre Berechnungen mit einem 3x-dp-Multiplikator für XXHDPI-Bildschirme folgendermaßen aussehen:
Android verkleinert Bilder automatisch, wenn es feststellt, dass die Auflösung des verwendeten Geräts niedriger ist, sodass Sie sicher mit XXHDPI entwickeln können, da es die Mehrheit der heutigen High-End-Geräte auf dem Markt anspricht.
Hier ist ein einfacher Konverter, der die Arbeit für Sie erledigt : http://androidpixels.net/
quelle
W3C sagt :
Und obwohl es heißt:
Es heißt auch:
Unter Berücksichtigung der Tatsache, dass Bildschirmgeräte standardmäßig mit 96 dpi konfiguriert sind, ist dies die beste Voraussetzung für die Interpretation eines CSS-Pixels durch den Browser:
Und wir wissen, dass in Android:
So:
Und demnach:
Nun, ich dachte, das stimmte, bis ich die Toast- Größen von Google Polymer überprüfte :
Es handelt sich also um eine 1: 1-Konvertierung, von der wir erfahren haben, dass Android-Browser Folgendes verwenden:
96 css-px pro Zoll werden für andere Geräte wie Desktops und Laptops verwendet.
Fazit: CSS-Pixel sind unabhängig von der Auflösung des Geräts und auf Android-Geräten entspricht 1 CSS-Pixel 1 dpi.
quelle
Es gibt keine richtige Antwort, es gibt tatsächlich zwei:
Hinweis: Gesamtidee: am unteren Rand der Seite: Bildskalierung mit einigen Bildern zur Visualisierung der Verhältnisse für mehrere Schwellenwerte für die Bildschirmauflösung (Haltepunktbild)
Hier finden Sie detailliertere Informationen für diejenigen, die sich eingehender mit dem Thema befassen möchten. Dies ist jedoch eine Erklärung und Logik. Die obigen Ausführungen sind eine vollständige Antwort :
Die Sache ist, dass "Pixeldichte" laut dem offiziellen Leitfaden von Material Design (Layout> Einheiten und Maße) ist:
Die Pixeldichte ist also im Grunde genommen ein neuer Name für einen ppi-Wert oder ein dpi-Wert, den viele Leute nicht als eigenständiges Element erkennen.
Definition von 1dp nach dem gleichen Leitfaden:
Kernprinzip des Materialdesigns ist die Beibehaltung einheitlicher physischer Dimensionen über verschiedene Plattformen hinweg, was das Problem der Desktopauflösung, des ppi (/ dpi) und des css-Pixels aufwirft. In diesem Fall sollten Sie wie im Fall von Android bei der Berechnung des dp bleiben Geräte, und es ist nicht wahr, dass die meisten Bildschirme 96ppi sind (eine Annahme, die für CSS wichtig ist), ein großer Teil von ihnen hat ein etwas höheres ppi, und wenn Sie nicht nur traditionelle Desktops, sondern auch normale Laptops berücksichtigen Für Tablets oder "Convertibles" wie "Surface" ist eine Konvertierung erforderlich: Diese reichen normalerweise von 100 bis 130 ppi, wobei der Wert, den ich derzeit verwende, 127 ppi beträgt:
100% = 160ppi -> physikalische 1 Pixel Breite = 1dp -> Rechteck 100x100px = 100x100dp
79% = 127ppi -> physikalische 1 Pixel Breite = ca. 0,8dp -> Rechteck 100x100px = 80x80dp
Obwohl dp ein reines und neues Gerät nur für Android ist, sollten Sie einige Berechnungen durchführen, um die MD-Layouts anzupassen, die alle in dp enthalten sind. Wenn Sie eine genauere Vorstellung davon haben möchten, wie groß das spezifische Element im physischen Sinne sein wird, ist der Wert für den idealen Berührungsgrößenbereich in den Materialdesignrichtlinien für bestimmte Geräte der nützlichste für den Zweck der Frage eine physische. ** Der dp-Wert ändert sich, aber der physikalische Wert bleibt gleich.
Das Problem, warum Sie Einheiten berechnen müssen, wird im Android API-Handbuch (Konvertieren von dp-Einheiten in Pixeleinheiten) näher erläutert. Es gilt weiterhin für mit CSS gestaltete Elemente:
Die zuvor erwähnte Polymerumwandlung 1: 1 ist wahrscheinlich darauf zurückzuführen, dass die Dichte von 96 dpi oder sogar die von mir angegebene Dichte irgendwo in einer niedrigen Dichte oder sogar (wie im Fall von 96 dpi) darunter liegt. Unter Berücksichtigung der Tatsache, dass der dp-Wert nicht als CSS akzeptiert wird, ist es einfacher anzunehmen, dass das Dichteverhältnis (0,75 für niedrig, 1,0 für mittel usw.) dasjenige ist, das zur Vereinfachung und für mehrere Größen verwendet werden sollte Bildschirmunterstützung, die in der Gerätetabelle für Material Design (siehe oben) aufgeführt ist. Es wird sogar als eine der Best Practices im oben genannten Kapitel des Android API-Handbuchs erwähnt. Und hier könnte die Polymerumwandlung 1: 1 gut sein, da viele Geräte das Dichteverhältnis auf Stufe 1 haben.
Zurück zum letzten Dilemma: das CSS PX, wenn Sie sich entscheiden, in subtile Nuancen verschiedener Geräte einzutauchen. Wenn Sie nicht so anfragend sind, halten Sie sich einfach an das Dichteverhältnis aus der MD-Tabelle. Aber wenn Sie ein Perfektionist sind, hat dieser Zusammenhang zwischen CSS-Pixeln und physischen Dimensionen eine perfekte (und ziemlich einfache Erklärung) in einer W3C-Kandidatenempfehlung:
Diese neue Definition von px (unter Berücksichtigung der physischen Dimensionen) füllt die Lücke zwischen CSS-Pixeln und dps und lässt uns mithilfe einfacher Messberechnungen sicherstellen, dass die sogenannte Ausgabeumgebung, die in diesem Fall konsistent ist (im physischen Sinne) ) MD-Layout , bleibt auf verschiedenen Geräten und Plattformen gleich. Darüber hinaus verwenden sowohl die W3C- als auch die MD-Richtlinien Gerätebilder mit niedriger und hoher Auflösung, um die Grundidee der Pixel- / Punktabdeckung zu veranschaulichen. Auf einem hochauflösenden Gerät sind mehr Gerätepixel (Punkte) erforderlich, um einen Bereich von 1 x 1 Pixel abzudecken Dies bedeutet, dass die in CSS-Abfragen für die Retina-Anzeige weit verbreiteten Funktionen dasselbe sind, das Sie für Material Design und alle Mobilgeräte bereitstellen müssen (jedoch mit mehr Schwellenwerten).
Verwenden Sie abschließend entweder das von Google empfohlene MD-Dichteverhältnis oder, wenn Sie auf Präzision fixiert sind oder wenn Ihr Design in Bezug auf die physischen Größen absolut konsistent sein muss, die genaue Konvertierung unter Verwendung von ppi / dpi-Werten der spezifischen oder allgemeinen Werte Geräte (was ziemlich verrückt ist), was Sie leicht mit dem Google Resizer-Online-Tool testen können, da sie die in MD Guide empfohlenen gemeinsamen Schwellenwerte und Teilungsregeln für das Verhältnis und die relevanten Namen der Anzeigetypen (xlarge, medium und so weiter) einhalten ) implementiert.
Halten Sie sich also an die MD-Verhältnisse in der Tabelle, und denken Sie daran, dass die Referenz-Pixelgröße dp gleich der Auflösung von mdpi (160) entspricht .
quelle