Combien y-a-t-il de WindowInsets?

Je ne comprends pas les révisions de WindowInsets, car docs dit que:

L'insertion de la fenêtre du système représente la zone d'une fenêtre plein écran partiellement ou totalement obscurcie par la barre d'état, la barre de navigation, l'IME ou d'autres fenêtres du système.

  • Menu contextuel de la bibliothèque de support Android V7
  • Pourquoi la durée de validité n'est pas respectée par Android HttpURLConnection?
  • Socialeh android ResourceNotFound
  • SoapFault - code d'erreur: 'ns1: erreur inattendue' appel SOAP Android
  • Le thème Android XML héritant de deux thèmes parents?
  • Accélérer la vitesse d'animation 'Navigation Drawer' à la fermeture?
  • Ainsi, plusieurs WindowInsets peuvent être là chacun avec son propre rect (un pour la barre d'état, un autre pour la barre de navigation …) et comment puis-je les récupérer?

    Ou n'y a-t-il qu'un seul WindowInsets et ses coordonnées gauche-supérieure-droite-inférieure sont le rect de la fenêtre disponible pour l'application?

  • Modifiez le profil du clavier par programme
  • Comment puis-je utiliser Webview pour utiliser le cache HTML5?
  • Android: quel est le meilleur, le viewpager, la galerie, la vue de défilement horizontal ... ou?
  • ViewPager.setOffscreenPageLimit (0) ne fonctionne pas comme prévu
  • L'intention de la caméra renvoie une petite image
  • Capture de son pour l'analyse et la visualisation des fréquences en Android
  • 2 Solutions collect form web for “Combien y-a-t-il de WindowInsets?”

    WindowInsets décrit un ensemble d'inserts pour le contenu de la fenêtre. En d'autres termes, WindowInsets a un rect de la zone disponible pour l'application (et a d'autres informations comme isRound ). La zone disponible exclut le rect de StatusBar et NavigationBar .

    Si vous voulez juste connaître la hauteur de StatusBar et NavigationBar , vérifiez ceci .

    Vous pouvez obtenir WindowInsets comme suit. L'exemple suivant utilise WindowInsetsCompat pour la compatibilité.

    Dans votre style.xml:

     <style name="AppTheme" parent="Theme.AppCompat.NoActionBar"> ... <item name="android:windowTranslucentStatus">true</item> <item name="android:windowTranslucentNavigation">true</item> </style> 

    Dans votre AndroidManifest.xml

     <application ... android:theme="@style/AppTheme"> ... </application> 

    Dans votre mise en page xml: (fitsSystemWindows devrait être configuré pour obtenir WindowInsets.)

     <FrameLayout xmlns:android="http://schemas.android.com/apk/res/android" android:id="@+id/container" android:layout_width="match_parent" android:layout_height="match_parent" android:fitsSystemWindows="true"> <android.support.v7.widget.Toolbar android:layout_width="match_parent" android:layout_height="wrap_content"/> </FrameLayout> 

    Dans votre activité (ou n'importe quel lieu):

     public class MainActivity extends AppCompatActivity { @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); View container = findViewById(R.id.container); ViewCompat.setOnApplyWindowInsetsListener(container, new OnApplyWindowInsetsListener() { @Override public WindowInsetsCompat onApplyWindowInsets(View v, WindowInsetsCompat insets) { //you can do something with insets. int statusBar = insets.getSystemWindowInsetTop(); //this is height of statusbar int navigationBar = insets.getStableInsetBottom(); //this is height of navigationbar Log.d("MainActivity", String.format("%s %s", statusBar, navigationBar)); ViewCompat.onApplyWindowInsets(v, insets); return insets; } }); } } 

    WindowInsets est comme ceci:

    Entrez la description de l'image ici

    Il n'y a qu'un seul type de WindowInsets qui décrit un ensemble d'inserts pour le contenu de la fenêtre. Car il est immuable et peut être étendu pour inclure plus de types d'insertion dans le futur. Vous pouvez en créer davantage. Et vous pouvez également obtenir les inserts gauche, droite, etc., des fenêtres en pixels avec des méthodes comme getStableInsetBottom () etc.

    coAndroid est un fan Android de Google, tout sur les téléphones Android, Android Wear, Android Dev et Android Games Apps.