Ist es sicher, .getWidth on Display zu verwenden, obwohl es veraltet ist?
Lesezeit: 2 Minuten
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
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;
12058700cookie-checkIst es sicher, .getWidth on Display zu verwenden, obwohl es veraltet ist?yes