app/src/main/java/am/project/x/privateapi/viewtreeobserver/ViewTreeObserverPrivateApis.java
/**
     * Register a callback to be invoked when the invoked when it is time to
     * compute the window's internal insets.
     *
     * @param listener The callback to add
     * @throws IllegalStateException If {@link ViewTreeObserver#isAlive()} returns false
     */
Register a callback to be invoked when the invoked when it is time to
compute the window's internal insets.

@param listener The callback to add
@throws IllegalStateException If  ViewTreeObserver#isAlive() returns false
Register a callback to be invoked when the invoked when it is time to compute the window ' s internal insets . @param listener The callback to add @throws IllegalStateException If ViewTreeObserver#isAlive () returns false
public static boolean addOnComputeInternalInsetsListener(ViewTreeObserver observer,
                                                             Object listener) {
        if (observer == null)
            return false;
        try {
            getDeclaredMethod(observer, "addOnComputeInternalInsetsListener",
                    getInnerOnComputeInternalInsetsListenerClass())
                    .invoke(observer, listener);
            return true;
        } catch (Exception e) {
            return false;
        }
    }
public static boolean addOnComputeInternalInsetsListener ( ViewTreeObserver observer , Object listener ) { if ( observer == null ) return false ; try { getDeclaredMethod ( observer , "addOnComputeInternalInsetsListener" , getInnerOnComputeInternalInsetsListenerClass ( ) ) . invoke ( observer , listener ) ; return true ; } catch ( Exception e ) { return false ; } }
Register a callback to be invoked when the invoked when it is time to
 compute the window's internal insets.
Register a callback to be invoked when the invoked when it is time to compute the window ' s internal insets .