Documentation

Unity Engine


User Manual

Script Reference

Unity Engine


onWindowInsetsChanged

A callback to detect changes in the window insets when the application is running.
Read time 1 minuteLast updated 6 days ago

Definition

public static event Action<AndroidWindowInsets> onWindowInsetsChanged

Remarks

Notes:
  • The callback is only supported on Android 11 (API 30) or later versions. On older devices, you need to detect changes in the insets manually as demonstrated in the following code example.
  • Querying insets manually using _currentWindowInsets is a slow operation.

Examples

using UnityEngine;using UnityEngine.Android;public class Controller : MonoBehaviour{ private bool InsetsCallbackSupported => AndroidBuild.Version.apiLevel >= 30; private bool StatusBars; private bool NavigationBars; public void Start() { if (InsetsCallbackSupported) AndroidApplication.onWindowInsetsChanged += OnInsetsChanged; else { var insets = AndroidApplication.currentWindowInsets; StatusBars = insets.IsVisible(AndroidWindowInsets.Type.StatusBars); NavigationBars = insets.IsVisible(AndroidWindowInsets.Type.NavigationBars); } } public void Update() { if (!InsetsCallbackSupported) { var insets = AndroidApplication.currentWindowInsets; var currentStatusBars = insets.IsVisible(AndroidWindowInsets.Type.StatusBars); var currentNavigationBars = insets.IsVisible(AndroidWindowInsets.Type.NavigationBars); if (StatusBars != currentStatusBars || NavigationBars != currentNavigationBars) { OnInsetsChanged(insets); StatusBars = currentStatusBars; NavigationBars = currentNavigationBars; } } } public void OnDisable() { if (InsetsCallbackSupported) AndroidApplication.onWindowInsetsChanged -= OnInsetsChanged; } void OnInsetsChanged(AndroidWindowInsets insets) { Debug.Log($"NavigationBars visible " + insets.IsVisible(AndroidWindowInsets.Type.NavigationBars)); Debug.Log($"StatusBars visible " + insets.IsVisible(AndroidWindowInsets.Type.StatusBars)); }}