Android: Falsche Bildschirmauflösung anzeigen

Ich habe versucht, die Bildschirmauflösung von Android-Handys, mit diesem Code zu bekommen

DisplayMetrics dm = new DisplayMetrics(); getWindowManager().getDefaultDisplay().getMetrics(dm); str_ScreenSize = dm.widthPixels + " x " + dm.heightPixels; str_ScreenSize = "dd" + " x " + dm.heightPixels; 

Als ich diesen Code in meinem Galaxy S Telefon ausprobiert habe, bekam ich die Bildschirmauflösung als 320×533 px, aber in Wirklichkeit hat die Galaxy S eine Bildschirmauflösung von 480×800 px. Also, was ist los mit dem Code?

  • Widgets nach App-Update gegangen
  • Vermeidung von Inhaltstyp Probleme beim Herunterladen einer Datei über Browser auf Android
  • Android: Scheme 'http' nicht auf ICS 4.0.4 w / Proxy registriert
  • Wie kann man WHERE-Klausel hinzufügen, um auf Android zu suchen
  • Was ist der Unterschied zwischen einigen "Android Development / SDK Tools"?
  • Schatten aus der Symbolleiste entfernen, wenn die Navigationsschublade offen ist - Material Design Support Bibliothek
  • Wie bekomme ich die tatsächliche Bildschirmauflösung eines bestimmten Gerätes?

  • Android Zwei Fragmente in der gleichen Aktivität
  • Android Actionbar Sherlock mit Tabs
  • Scrollview vertikal und horizontal in android
  • Anzeigen von Benachrichtigungstext in Statusleiste - Android
  • Gleiten Bild Lade Timeout erhöhen
  • S3 Transfer Manager Beispiel zeigt Fehler: Nicht authentifizierter Zugriff wird nicht unterstützt
  • 6 Solutions collect form web for “Android: Falsche Bildschirmauflösung anzeigen”

    Schließlich nach 2 Tagen der Suche und Prüfung, habe ich endlich geschafft, herauszufinden, was ist die eigentliche Frage hier .. Alle diese oben Codierung wird richtige Auflösung geben. Aber das Wichtigste ist, dass wir das Ziel-SDK in der Manifest-Datei erwähnen müssen. Andernfalls wird es falsches Ergebnis geben, wenn die Dichte mehr als 1 ist.

     <uses-sdk android:minSdkVersion="3" android:targetSdkVersion="8" /> 

    Müssen die targetSDK-Version von irgendetwas zwischen 4-9 .. hoffen, dies wird dazu beitragen, einige in der Zukunft mit dem gleichen Problem.

    Versuchen Sie, dies zu benutzen:

     width = getResources().getDisplayMetrics().widthPixels; height = getResources().getDisplayMetrics().heightPixels; 

    Scheint, wie du das Pixel nach der Division der Dichte (1.5) von Galaxy S. bekommst.

     480 / 1.5 = 320 799.5 / 1.5 = 533 

    Bearbeiten:

     density = getResources().getDisplayMetrics().density; 

    Deaktivieren Sie die Vor-Skalierung, indem Sie diese Zeile zu Ihrer Manifestdatei hinzufügen:

     <supports-screens android:anyDensity="true" /> 

    Position:

     <?xml version="1.0" encoding="utf-8"?> <manifest xmlns:android="http://schemas.android.com/apk/res/android" package="...." android:versionCode="1" android:versionName="1.0"> <supports-screens android:anyDensity="true" /> <application android:label="@string/app_name" > ... 

    Danach wird Ihr Display nicht mehr skaliert und Sie erhalten auch die richtige Bildschirmauflösung.

    Versuche dies..

      Display display = getWindowManager().getDefaultDisplay(); int ScreenHeight = display.getHeight(); int ScreenWidth = display.getWidth(); 

    Das scheint zu funktionieren .. obwohl ich nicht weiß, ob es eine richtige Methode ..

     DisplayMetrics dm = new DisplayMetrics(); getWindowManager().getDefaultDisplay().getMetrics(dm); density=dm.densityDpi; width=(density/160)*dm.widthPixels; height=(density/160)*dm.heightPixels; 

    Hier ist, wie ich es getan habe:

     Display dis = getWindowManager().getDefaultDisplay(); Point point= new Point(); dis.getSize(point); int width = point.x; int height = point.y; 

    Wenn nicht in einer Aktivität:

     WindowManager wm = (WindowManager) ctx.getSystemService(Context.WINDOW_SERVICE); Display display = wm.getDefaultDisplay(); 

    Bevor getSize eingeführt wurde (in API Level 13), können Sie die getWidth- und getHeight-Methoden verwenden, die jetzt veraltet sind:

     Display display = getWindowManager().getDefaultDisplay(); int width = display.getWidth(); // deprecated int height = display.getHeight(); // deprecated 
    Das Android ist ein Google Android Fan-Website, Alles ├╝ber Android Phones, Android Wear, Android Dev und Android Spiele Apps und so weiter.