Ist es sicher, .getWidth on Display zu verwenden, obwohl es veraltet ist?

Lesezeit: 2 Minuten

Benutzer-Avatar
gabrjan

Ich habe also ein kleines Problem, ich schreibe eine Funktion, die die Bildschirmbreite an den Server senden muss. Ich habe alles zum Laufen gebracht und verwende:

Display display = getWindowManager().getDefaultDisplay(); 
int width = display.getWidth();

Breite zu bekommen. Die Funktion .getWidht() ist jedoch veraltet und es heißt, dass Sie Folgendes verwenden müssen:

Point size = new Point();
display.getSize(size);

Aber diese Funktion ist nur für API-Level 13 oder höher verfügbar, und mein Mindest-SDK ist 8. Was kann ich also tun? Ist es sicher, wenn ich bei getWidth bleibe? Warum neue Funktionen hinzufügen und nicht abwärtskompatibel machen?

Vielleicht ist dieser Ansatz hilfreich:

DisplayMetrics displaymetrics = new DisplayMetrics();
mContext.getWindowManager().getDefaultDisplay().getMetrics(displaymetrics);
int screenWidth = displaymetrics.widthPixels;
int screenHeight = displaymetrics.heightPixels;

  • getDefaultDisplay ist veraltet

    – Benutzer924

    23. Juni 2020 um 12:06 Uhr

  • wir können benutzen WindowManager.currentWindowMetrics.bounds für 30+ API

    – Benutzer924

    23. Juni 2020 um 12:28 Uhr

Sie können zur Laufzeit nach API-Ebene suchen und auswählen, welche verwendet werden soll, z.

final int version = android.os.Build.VERSION.SDK_INT;
final int width;
if (version >= 13)
{
    Point size = new Point();
    display.getSize(size);
    width = size.x;
}
else
{
    Display display = getWindowManager().getDefaultDisplay(); 
    width = display.getWidth();
}

  • hmm klingt ok, aber stehlen ist es in Ordnung, wenn ich nur getwidth verwende?

    – gabrjan

    8. Oktober 2012 um 11:05 Uhr

  • Ja, wenn es in älteren Versionen nicht verfügbar ist, haben Sie keine Option.

    – nmw

    8. Oktober 2012 um 11:07 Uhr


  • Sie können in den meisten Fällen mit getWidth() gut genug machen.

    – slesadav

    8. Oktober 2012 um 11:07 Uhr

Benutzer-Avatar
slezadav

Wenn Sie richtig liegen wollen, verwenden Sie diesen Ansatz:

int sdk = android.os.Build.VERSION.SDK_INT;
if (Build.VERSION.SDK_INT < Build.VERSION_CODES.HONEYCOMB_MR2) {
    Display display = getWindowManager().getDefaultDisplay();
    int width = display.getWidth();
} else {
    Point size = new Point();
    display.getSize(size);
}

  • Sie vergleichen dort ein int mit einem String (VERSION.RELEASE).

    – nmw

    9. Oktober 2012 um 20:50 Uhr

  • Wenn Sie korrekt sein wollten, würden Sie ein int nicht mit einem String vergleichen und Sie würden das int nicht in einer nicht finalen lokalen Variablen speichern, verdammt, Sie brauchen diese Variable nicht einmal, warum speichern Sie sie an erster Stelle. 😉 Sie wahrscheinlich tun möchten if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.HONEYCOMB_MR2) {

    – Martin Marconcini

    30. Mai 2014 um 19:26 Uhr


  • display.getSize ist ebenfalls veraltet

    – Sergio S. Filho

    12. September 2020 um 6:18 Uhr

Hier ist der neueste Code ohne Deprecation.

Kotlin

 val metrics: DisplayMetrics = this.getResources().getDisplayMetrics()
 val width = metrics.widthPixels

Java

  DisplayMetrics metrics = context.getResources().getDisplayMetrics();
  int width = metrics.widthPixels;
  int height = metrics.heightPixels;

1205870cookie-checkIst es sicher, .getWidth on Display zu verwenden, obwohl es veraltet ist?

This website is using cookies to improve the user-friendliness. You agree by using the website further.

Privacy policy