Wir haben in letzter Zeit eine Datenanomalie festgestellt, bei der eine Reihe von Geräten ihre xdpi und ydpi über DisplayMetrics falsch meldet.
Als spezifisches Beispiel melden alle SPH-L710 Sprint Galaxy S III-Geräte, die 4.4.2 ausführen, ein xdpi und ein ydpi von ~ 160. Bei einer Auflösung von 1280x720 würde dies eine Bildschirmgröße von ~ 9 Zoll ergeben, was offensichtlich nicht der Fall ist. Vor Version 4.4.2 hat dieses Gerätemodell seine xdpi und ydpi: ~ 304 bzw. ~ 306 ordnungsgemäß gemeldet.
Wir greifen auf diese Informationen über DisplayMetrics wie folgt zu:
%Vor%Hat jemand anderes bemerkt, dass diese Metriken inkonsistent / unzuverlässig sind? Gibt es eine genauere Möglichkeit, auf diese Informationen zuzugreifen?
Bearbeiten: Ich habe diesen Beitrag gefunden bezüglich xdpi / ydpi Ungenauigkeiten. Sowohl Romain als auch Dianne scheinen das Problem anzuerkennen. Die Tatsache, dass die DisplayMetrics-Dokumente diese unzuverlässigen Eigenschaften nicht zur Kenntnis nehmen, scheint mir völlig unverantwortlich zu sein.
Ab API 17 können Sie getRealMetrics
aufrufen, um genauere Ergebnisse zu erhalten.
public void getRealMetrics (DisplayMetrics outMetrics)
Hinzugefügt in API-Ebene 17 Ruft Anzeigemetriken basierend auf der tatsächlichen Größe von ab diese Anzeige.
Die Größe wird basierend auf der aktuellen Drehung des Displays angepasst.
Die tatsächliche Größe ist möglicherweise kleiner als die physische Größe des Bildschirms Der Fenstermanager emuliert eine kleinere Anzeige (mit adb shell am Display-Größe).
Parameter outMetrics Ein DisplayMetrics-Objekt zum Empfangen der Metriken.
Tags und Links android android-4.4-kitkat galaxy samsung-mobile dpi