Umrechnung von Pixel in dp

Ich habe meine Anwendung mit der angegebenen Höhe und Breite in Pixeln für ein Pantech-Gerät mit einer Auflösung von 480x800 erstellt.

Ich muss Höhe und Breite für ein G1-Gerät konvertieren. Ich dachte, die Konvertierung in dp würde das Problem lösen und für beide Geräte die gleiche Lösung bieten.

Gibt es eine einfache Möglichkeit, Pixel in dp zu konvertieren? Irgendwelche Vorschläge?

// Converts 14 dip into its equivalent px
float dip = 14f;
Resources r = getResources();
float px = TypedValue.applyDimension(
    TypedValue.COMPLEX_UNIT_DIP,
    dip,
    r.getDisplayMetrics()
);
Kommentare (8)

Sie sollten dp genau so verwenden wie Sie Pixel verwenden würden. Das ist alles, was sie sind: anzeigeunabhängige Pixel. Verwenden Sie die gleichen Zahlen, die Sie auf einem Bildschirm mit mittlerer Dichte verwenden würden, und die Größe wird auf magische Weise auf einem Bildschirm mit hoher Dichte korrekt sein.

Es klingt jedoch so, als bräuchten Sie die Option fill_parent in Ihrem Layoutentwurf. Verwenden Sie fill_parent, wenn Sie möchten, dass sich Ihre Ansicht oder Ihr Steuerelement auf die gesamte verbleibende Größe im übergeordneten Container ausdehnt.

Kommentare (5)

PX" und "DP" sind unterschiedlich, aber ähnlich.

DP" ist die Auflösung, wenn Sie nur die physische Größe des Bildschirms berücksichtigen. Wenn Sie "DP" verwenden, wird Ihr Layout auf andere Bildschirme ähnlicher Größe mit unterschiedlicher Pixeldichte skaliert.

Gelegentlich will man aber tatsächlich "Pixel" haben, und wenn man mit Dimensionen im Code umgeht, hat man es immer mit echten "Pixeln" zu tun, es sei denn, man konvertiert sie.

Auf einem Android-Gerät mit normalem HDP-Bildschirm sind 800x480 Pixel 533x320 Pixel in DP (glaube ich). Um DP in Pixel /1.5 umzurechnen, muss man *1.5 zurückrechnen. Dies gilt nur für die eine Bildschirmgröße und dpi, es würde sich je nach Design ändern. Unsere Künstler geben mir jedoch "Pixel" und ich rechne sie mit der obigen "1,5"-Gleichung in "DP" um.

Kommentare (0)