web-dev-qa-db-fra.com

Comment obtenir la hauteur de la barre d'état et de la barre des touches de fonction?

Existe-t-il un moyen dans Android pour obtenir la taille de la barre des boutons logiciels et de la barre d'état ensemble? Ou un moyen d'aller chercher la hauteur de l'écran sans la hauteur de ces deux barres? (Elles ne sont pas toujours les mêmes, regardez le nexus 7 par exemple)

17
Joske369

Hauteur de la barre d'état

La hauteur de la barre d'état dépend de la taille de l'écran, par exemple dans un appareil avec 240 X 320 taille d'écran, la hauteur de la barre d'état est 20 px , pour un appareil avec taille d'écran 320 X 480 la hauteur de la barre d'état est 25px , pour un appareil avec 480 x 800 la hauteur de la barre d'état doit être de 38px

donc je recommande d'utiliser ce script pour obtenir la hauteur de la barre d'état

Rect rectangle = new Rect();
Window window = getWindow();
window.getDecorView().getWindowVisibleDisplayFrame(rectangle);
int statusBarHeight = rectangle.top;
int contentViewTop = window.findViewById(Window.ID_Android_CONTENT).getTop();
int titleBarHeight= contentViewTop - statusBarHeight;

Log.i("*** Value :: ", "StatusBar Height= " + statusBarHeight + " , TitleBar Height = " + titleBarHeight); 

pour obtenir la hauteur de la barre d'état sur la méthode onCreate() de votre activité, utilisez cette méthode:

public int getStatusBarHeight() { 
      int result = 0;
      int resourceId = getResources().getIdentifier("status_bar_height", "dimen", "Android");
      if (resourceId > 0) {
          result = getResources().getDimensionPixelSize(resourceId);
      } 
      return result;
} 

Barre des touches de fonction

Cette méthode est très utile pour définir le remplissage de la disposition dans Android KitKat (4.4). En utilisant cela, vous pouvez éviter que la barre des boutons programmables ne chevauche votre disposition.

La méthode getRealMetrics n'est disponible qu'avec les API 17 et +

@SuppressLint("NewApi")
private int getSoftButtonsBarHeight() {
    // getRealMetrics is only available with API 17 and +
    if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.JELLY_BEAN_MR1) {
        DisplayMetrics metrics = new DisplayMetrics();
        getWindowManager().getDefaultDisplay().getMetrics(metrics);
        int usableHeight = metrics.heightPixels;
        getWindowManager().getDefaultDisplay().getRealMetrics(metrics);
        int realHeight = metrics.heightPixels;
        if (realHeight > usableHeight)
            return realHeight - usableHeight;
        else
            return 0;
    }
    return 0;
}

Référence:

Hauteur de la barre d'état dans Android

Dimension de la barre des boutons programmables

37