Is het veilig om .getWidth on Display te gebruiken, ook al is het verouderd

Dus ik heb een klein probleem, ik schrijf een functie die de schermbreedte naar de server moet sturen. Ik heb het allemaal werkend gekregen en ik gebruik:

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

om breedte te krijgen. De functie .getWidht() is echter verouderd en er staat dat u het volgende moet gebruiken:

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

Maar die functie is alleen beschikbaar voor api-niveau 13 of hoger, en mijn minimale sdk is 8. Dus wat kan ik doen? Is het veilig als ik bij getWidth blijf? Waarom een ​​nieuwe functie toevoegen en ze niet achterwaarts compatibel maken?


Antwoord 1, autoriteit 100%

Misschien is deze aanpak nuttig:

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

Antwoord 2, autoriteit 9%

U kunt tijdens runtime het API-niveau controleren en kiezen welke u wilt gebruiken, bijvoorbeeld:

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();
}

Antwoord 3, autoriteit 3%

Als je gelijk wilt hebben, gebruik dan deze benadering:

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);
}

Antwoord 4, autoriteit 2%

Hier is de nieuwste Code zonder Beëindiging.

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;

Other episodes