Adjusting PiP for the TV IME.

Bug: 63898225
Test: Ensure that PiP does not overlap with the IME on TV
Change-Id: I6aced6331b56cd92599cbdb9c13d04ae9138c59b
This commit is contained in:
Winson Chung
2017-08-24 13:35:24 -07:00
parent f15c825dfb
commit 44315c64ed

View File

@@ -127,6 +127,10 @@ public class PipManager implements BasePipManager {
private PipNotification mPipNotification;
private ParceledListSlice mCustomActions;
// Keeps track of the IME visibility to adjust the PiP when the IME is visible
private boolean mImeVisible;
private int mImeHeightAdjustment;
private final PinnedStackListener mPinnedStackListener = new PinnedStackListener();
private final Runnable mResizePinnedStackRunnable = new Runnable() {
@@ -175,7 +179,22 @@ public class PipManager implements BasePipManager {
public void onListenerRegistered(IPinnedStackController controller) {}
@Override
public void onImeVisibilityChanged(boolean imeVisible, int imeHeight) {}
public void onImeVisibilityChanged(boolean imeVisible, int imeHeight) {
if (mState == STATE_PIP) {
if (mImeVisible != imeVisible) {
if (imeVisible) {
// Save the IME height adjustment, and offset to not occlude the IME
mPipBounds.offset(0, -imeHeight);
mImeHeightAdjustment = imeHeight;
} else {
// Apply the inverse adjustment when the IME is hidden
mPipBounds.offset(0, mImeHeightAdjustment);
}
mImeVisible = imeVisible;
resizePinnedStack(STATE_PIP);
}
}
}
@Override
public void onMinimizedStateChanged(boolean isMinimized) {}