Android: Warum getDimension und getDimensionPixelSize beide wieder den gleichen?
Ich finde die Methoden getDimension und getDimensionPixelSize verwirrend.
Würde es für mich Aussehen, als ob getDimension zurückkehren würde, der tatsächliche Wert gespeichert, in der dimension, zum Beispiel 10dp und getDimensionPixelSize zurückkehren würde, es konvertiert px.
Aber beide scheinen das gleiche zu tun...
- Vielleicht den Bildschirm des Geräts Dichte ist mdpi? Dann werden Sie die gleichen sein werden.
- Es ist eine sehr gute Frage. Ich fragte mich auch, über, die. Die Dokumentation von getDimension ist eigentlich suboptimal, weil die Formulierung und Namensgebung ist etwas unklar, und es ist nicht klar, welches Gerät die Ausgabe tatsächlich ist. Vielen Dank für diese Frage.
Du musst angemeldet sein, um einen Kommentar abzugeben.
getDimension()
gibt eine Gleitkomma-Zahl, die die dimen eingestellten Wert mit der aktuellen Anzeige von Metriken:getDimensionPixelSize()
gibt eine Ganzzahl zurück. Es ist das gleiche wiegetDimension()
gerundet auf eineint
mit nicht-null-dimension gewährleistet wird, um mindestens ein pixel in der Größe.Für ganzzahlige dimension, die Werte, die Sie beide wieder den gleichen numerischen Wert.
dp
Sie werden in Pixel umgewandelt, basierend auf die Dichte des Bildschirms. Zum Beispiel eine dimension von5dp
für einexhdpi
Bildschirm hätte eigentlich zurückgegeben werden, wie in 10 (Pixel). Ebenso für die Werte insp
usw. (obwohl die eigentliche Formel wird unterschiedlich für jeden)Es scheint mir offensichtlich, dass Sie tun Ihre tests auf einem mdpi - Gerät oder emulator.
Auf mdpi zeigt, 1px = 1dp.
So, einfach testen der Methoden an einem unterschiedlicher Dichte Bildschirm.
Beachten Sie, dass
Also, wenn Sie die Einheit px in Ihrer xml-layout-bekommen Sie die rohe px (unkonvertiert).
Andernfalls, wenn Sie richtig eingestellt, das Gerät in dp in Ihrer xml-layout, erhalten Sie die richtige Konvertierung zu px.