WindowInsetsControllerCompat
class WindowInsetsControllerCompat
Provide simple controls of windows that generate insets. For SDKs >= 30, this class is a simple wrapper around WindowInsetsController. For lower SDKs, this class aims to behave as close as possible to the original implementation.
Summary
Nested types |
|---|
|
Listener to be notified when the set of controllable |
Constants |
|
|---|---|
const Int |
BEHAVIOR_DEFAULT = 1The default option for |
const Int |
This property is deprecated. Use |
const Int |
This property is deprecated. This is not supported on Android |
const Int |
Option for |
Public constructors |
|---|
WindowInsetsControllerCompat(window: Window, view: View) |
Public functions |
|
|---|---|
Unit |
addOnControllableInsetsChangedListener(Adds a |
Unit |
controlWindowInsetsAnimation(Lets the application control window inset animations in a frame-by-frame manner by modifying the position of the windows in the system causing insets directly using |
Int |
Retrieves the requested behavior of system bars. |
Unit |
Makes a set of windows causing insets disappear. |
Boolean |
Checks if the foreground of the navigation bar is set to light. |
Boolean |
Checks if the foreground of the status bar is set to light. |
Unit |
removeOnControllableInsetsChangedListener(Removes a |
Unit |
setAppearanceLightNavigationBars(isLight: Boolean)If true, changes the foreground color of the navigation bars to light so that the items on the bar can be read clearly. |
Unit |
setAppearanceLightStatusBars(isLight: Boolean)If true, changes the foreground color of the status bars to light so that the items on the bar can be read clearly. |
Unit |
setSystemBarsBehavior(behavior: Int)Controls the behavior of system bars. |
Unit |
Makes a set of windows that cause insets appear on screen. |
java-static WindowInsetsControllerCompat |
@RequiresApi(value = 30)This function is deprecated. Use |
Constants
BEHAVIOR_DEFAULT
const val BEHAVIOR_DEFAULT = 1: Int
The default option for setSystemBarsBehavior: Window would like to remain interactive when hiding navigation bars by calling hide or setInsetsAndAlpha.
When system bars are hidden in this mode, they can be revealed with system gestures, such as swiping from the edge of the screen where the bar is hidden from.
When the gesture navigation is enabled, the system gestures can be triggered regardless the visibility of system bars.
const val BEHAVIOR_SHOW_BARS_BY_SWIPE = 1: Int
Option for setSystemBarsBehavior: Window would like to remain interactive when hiding navigation bars by calling hide or setInsetsAndAlpha.
When system bars are hidden in this mode, they can be revealed with system gestures, such as swiping from the edge of the screen where the bar is hidden from.
const val BEHAVIOR_SHOW_BARS_BY_TOUCH = 0: Int
Option for setSystemBarsBehavior. System bars will be forcibly shown on any user interaction on the corresponding display if navigation bars are hidden by hide or setInsetsAndAlpha.
BEHAVIOR_SHOW_TRANSIENT_BARS_BY_SWIPE
const val BEHAVIOR_SHOW_TRANSIENT_BARS_BY_SWIPE = 2: Int
Option for setSystemBarsBehavior: Window would like to remain interactive when hiding navigation bars by calling hide or setInsetsAndAlpha.
When system bars are hidden in this mode, they can be revealed temporarily with system gestures, such as swiping from the edge of the screen where the bar is hidden from. These transient system bars will overlay app’s content, may have some degree of transparency, and will automatically hide after a short timeout.
Public constructors
WindowInsetsControllerCompat
WindowInsetsControllerCompat(window: Window, view: View)
Public functions
addOnControllableInsetsChangedListener
fun addOnControllableInsetsChangedListener(
listener: WindowInsetsControllerCompat.OnControllableInsetsChangedListener
): Unit
Adds a WindowInsetsController.OnControllableInsetsChangedListener to the window insets controller.
| Parameters | |
|---|---|
listener: WindowInsetsControllerCompat.OnControllableInsetsChangedListener |
The listener to add. |
controlWindowInsetsAnimation
fun controlWindowInsetsAnimation(
types: Int,
durationMillis: Long,
interpolator: Interpolator?,
cancellationSignal: CancellationSignal?,
listener: WindowInsetsAnimationControlListenerCompat
): Unit
Lets the application control window inset animations in a frame-by-frame manner by modifying the position of the windows in the system causing insets directly using setInsetsAndAlpha in the controller provided by the given listener.
This method only works on API >= 30 since there is no way to control the window in the system on prior APIs.
| Parameters | |
|---|---|
types: Int |
The |
durationMillis: Long |
Duration of animation in |
interpolator: Interpolator? |
The interpolator used for this animation, or |
cancellationSignal: CancellationSignal? |
A cancellation signal that the caller can use to cancel the request to obtain control, or once they have control, to cancel the control. |
listener: WindowInsetsAnimationControlListenerCompat |
The |
getSystemBarsBehavior
fun getSystemBarsBehavior(): Int
Retrieves the requested behavior of system bars.
| Returns | |
|---|---|
Int |
the system bar behavior controlled by this window. |
| See also | |
|---|---|
setSystemBarsBehavior |
hide
fun hide(types: Int): Unit
Makes a set of windows causing insets disappear.
Note that if the window currently doesn't have control over a certain type, it will apply the change as soon as the window gains control. The app can listen to the event by observing onApplyWindowInsets and checking visibility with isVisible.
| Parameters | |
|---|---|
types: Int |
A bitmask of |
isAppearanceLightNavigationBars
fun isAppearanceLightNavigationBars(): Boolean
Checks if the foreground of the navigation bar is set to light.
This method always returns false on API <26.
If this value is being set in the theme (via windowLightNavigationBar), then the correct value will only be returned once attached to the window.
Once this method is called, modifying `systemUiVisibility` directly to change the appearance is undefined behavior.
| Returns | |
|---|---|
Boolean |
true if the foreground is light |
| See also | |
|---|---|
setAppearanceLightNavigationBars |
isAppearanceLightStatusBars
fun isAppearanceLightStatusBars(): Boolean
Checks if the foreground of the status bar is set to light.
If this value is being set in the theme (via windowLightStatusBar), then the correct value will only be returned once attached to the window.
Once this method is called, modifying `systemUiVisibility` directly to change the appearance is undefined behavior.
| Returns | |
|---|---|
Boolean |
true if the foreground is light |
| See also | |
|---|---|
setAppearanceLightStatusBars |
removeOnControllableInsetsChangedListener
fun removeOnControllableInsetsChangedListener(
listener: WindowInsetsControllerCompat.OnControllableInsetsChangedListener
): Unit
Removes a WindowInsetsController.OnControllableInsetsChangedListener from the window insets controller.
| Parameters | |
|---|---|
listener: WindowInsetsControllerCompat.OnControllableInsetsChangedListener |
The listener to remove. |
setAppearanceLightNavigationBars
fun setAppearanceLightNavigationBars(isLight: Boolean): Unit
If true, changes the foreground color of the navigation bars to light so that the items on the bar can be read clearly. If false, reverts to the default appearance.
This method has no effect on API <26.
Once this method is called, modifying `systemUiVisibility` directly to change the appearance is undefined behavior.
| See also | |
|---|---|
isAppearanceLightNavigationBars |
setAppearanceLightStatusBars
fun setAppearanceLightStatusBars(isLight: Boolean): Unit
If true, changes the foreground color of the status bars to light so that the items on the bar can be read clearly. If false, reverts to the default appearance.
Once this method is called, modifying `systemUiVisibility` directly to change the appearance is undefined behavior.
| See also | |
|---|---|
isAppearanceLightStatusBars |
setSystemBarsBehavior
fun setSystemBarsBehavior(behavior: Int): Unit
Controls the behavior of system bars.
| Parameters | |
|---|---|
behavior: Int |
Determines how the bars behave when being hidden by the application. |
| See also | |
|---|---|
getSystemBarsBehavior |
show
fun show(types: Int): Unit
Makes a set of windows that cause insets appear on screen.
Note that if the window currently doesn't have control over a certain type, it will apply the change as soon as the window gains control. The app can listen to the event by observing onApplyWindowInsets and checking visibility with isVisible.
| Parameters | |
|---|---|
types: Int |
A bitmask of |
@RequiresApi(value = 30)
java-static funtoWindowInsetsControllerCompat(
insetsController: WindowInsetsController
): WindowInsetsControllerCompat
Wrap a WindowInsetsController into a WindowInsetsControllerCompat for compatibility purpose.
| Parameters | |
|---|---|
insetsController: WindowInsetsController |
The |
| Returns | |
|---|---|
WindowInsetsControllerCompat |
The provided |