web-dev-qa-db-fra.com

Est-il sûr d'utiliser .getWidth sur l'affichage même si son obsolète

J'ai donc un petit problème, j'écris une fonction qui doit envoyer la largeur de l'écran au serveur. J'ai tout fait fonctionner et j'utilise:

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

pour obtenir la largeur. Cependant, la fonction .getWidht () est obsolète et indique que vous devez utiliser:

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

Mais cette fonction n'est disponible que pour le niveau d'api 13 ou plus, et mon sdk minimum est 8. Alors, que puis-je faire? Est-ce sûr si je reste avec getWidth? Pourquoi ajouter de nouvelles fonctions et ne pas les rendre rétrocompatibles?

50
gabrjan

Peut-être que cette approche sera utile:

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

Vous pouvez vérifier le niveau d'API au moment de l'exécution et choisir lequel utiliser, par exemple:

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

Si vous voulez être correct, utilisez cette approche>

           int sdk = Android.os.Build.VERSION.SDK_INT;
            if (sdk < Android.os.Build.VERSION.RELEASE) {
                Display display = getWindowManager().getDefaultDisplay();
                int width = display.getWidth();

            } else {
                Point size = new Point();
                display.getSize(size);

            }
4
slezadav