1 /** 2 * Copyright (c) 2016, The Android Open Source Project 3 * 4 * Licensed under the Apache License, Version 2.0 (the "License"); 5 * you may not use this file except in compliance with the License. 6 * You may obtain a copy of the License at 7 * 8 * http://www.apache.org/licenses/LICENSE-2.0 9 * 10 * Unless required by applicable law or agreed to in writing, software 11 * distributed under the License is distributed on an "AS IS" BASIS, 12 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13 * See the License for the specific language governing permissions and 14 * limitations under the License. 15 */ 16 17 package android.view; 18 19 import android.content.pm.ParceledListSlice; 20 import android.graphics.Rect; 21 import android.view.IPinnedStackController; 22 23 /** 24 * Listener for changes to the pinned stack made by the WindowManager. 25 * 26 * @hide 27 */ 28 oneway interface IPinnedStackListener { 29 30 /** 31 * Called when the listener is registered and provides an interface to call back to the pinned 32 * stack controller to update the controller of the pinned stack state. 33 */ onListenerRegistered(IPinnedStackController controller)34 void onListenerRegistered(IPinnedStackController controller); 35 36 /** 37 * Called when the window manager has detected a change that would cause the movement bounds 38 * to be changed (ie. after configuration change, aspect ratio change, etc). It then provides 39 * the components that allow the listener to calculate the movement bounds itself. The 40 * {@param normalBounds} are also the default bounds that the PiP would be entered in its 41 * current state with the aspect ratio applied. The {@param animatingBounds} are provided 42 * to indicate the current target bounds of the pinned stack (the final bounds if animating, 43 * the current bounds if not), which may be helpful in calculating dependent animation bounds. 44 * 45 * The {@param displayRotation} is provided so that the client can verify when making certain 46 * calls that it will not provide stale information based on an old display rotation (ie. if 47 * the WM has changed in the mean time but the client has not received onMovementBoundsChanged). 48 */ onMovementBoundsChanged(in Rect insetBounds, in Rect normalBounds, in Rect animatingBounds, boolean fromImeAdjustment, boolean fromShelfAdjustment, int displayRotation)49 void onMovementBoundsChanged(in Rect insetBounds, in Rect normalBounds, in Rect animatingBounds, 50 boolean fromImeAdjustment, boolean fromShelfAdjustment, int displayRotation); 51 52 /** 53 * Called when window manager decides to adjust the pinned stack bounds because of the IME, or 54 * when the listener is first registered to allow the listener to synchronized its state with 55 * the controller. This call will always be followed by a onMovementBoundsChanged() call 56 * with fromImeAdjustement set to {@code true}. 57 */ onImeVisibilityChanged(boolean imeVisible, int imeHeight)58 void onImeVisibilityChanged(boolean imeVisible, int imeHeight); 59 60 /** 61 * Called when window manager decides to adjust the pinned stack bounds because of the shelf, or 62 * when the listener is first registered to allow the listener to synchronized its state with 63 * the controller. This call will always be followed by a onMovementBoundsChanged() call 64 * with fromShelfAdjustment set to {@code true}. 65 */ onShelfVisibilityChanged(boolean shelfVisible, int shelfHeight)66 void onShelfVisibilityChanged(boolean shelfVisible, int shelfHeight); 67 68 /** 69 * Called when window manager decides to adjust the minimized state, or when the listener 70 * is first registered to allow the listener to synchronized its state with the controller. 71 */ onMinimizedStateChanged(boolean isMinimized)72 void onMinimizedStateChanged(boolean isMinimized); 73 74 /** 75 * Called when the set of actions for the current PiP activity changes, or when the listener 76 * is first registered to allow the listener to synchronized its state with the controller. 77 */ onActionsChanged(in ParceledListSlice actions)78 void onActionsChanged(in ParceledListSlice actions); 79 } 80