Fix a few issues with ime adjust/minimized dock stack

- Do not override minimized state in SysUI when IME adjust change
comes in.
- Do not animate IME adjust if we are already animating for minimized.
This lead to problems that we animated the minimized state with the IME
adjust values.
- Make sure to update state after checking whether the IME adjust is
animating. This is to fix an issue where sometimes the IME adjust
animation didn't run because the old target was wrong.

Change-Id: Ie35e2f943a4cda99ffdc6f14663d892863759e46
Fixes: 28819201
This commit is contained in:
Jorim Jaggi
2016-05-17 16:41:32 -07:00
parent 3bed1c0ef8
commit 3070e77f91
2 changed files with 9 additions and 7 deletions

View File

@@ -169,10 +169,12 @@ public class Divider extends SystemUI {
if (mAdjustedForIme != adjustedForIme) {
mAdjustedForIme = adjustedForIme;
updateTouchable();
if (animDuration > 0) {
mView.setAdjustedForIme(adjustedForIme, animDuration);
} else {
mView.setAdjustedForIme(adjustedForIme);
if (!mMinimized) {
if (animDuration > 0) {
mView.setAdjustedForIme(adjustedForIme, animDuration);
} else {
mView.setAdjustedForIme(adjustedForIme);
}
}
}
});

View File

@@ -300,7 +300,7 @@ public class DockedStackDividerController implements DimLayerUser {
boolean animate, WindowState imeWin, int imeHeight) {
if (mAdjustedForIme != adjustedForIme || (adjustedForIme && mImeHeight != imeHeight)
|| mAdjustedForDivider != adjustedForDivider) {
if (animate) {
if (animate && !mAnimatingForMinimizedDockedStack) {
startImeAdjustAnimation(adjustedForIme, adjustedForDivider, imeWin);
} else {
// Animation might be delayed, so only notify if we don't run an animation.
@@ -547,8 +547,6 @@ public class DockedStackDividerController implements DimLayerUser {
private void startImeAdjustAnimation(
boolean adjustedForIme, boolean adjustedForDivider, WindowState imeWin) {
mAnimatingForIme = true;
mAnimationStarted = false;
// If we're not in an animation, the starting point depends on whether we're adjusted
// or not. If we're already in an animation, we start from where the current animation
@@ -562,6 +560,8 @@ public class DockedStackDividerController implements DimLayerUser {
mAnimationStart = mLastAnimationProgress;
mDividerAnimationStart = mLastDividerProgress;
}
mAnimatingForIme = true;
mAnimationStarted = false;
mAnimationTarget = adjustedForIme ? 1 : 0;
mDividerAnimationTarget = adjustedForDivider ? 1 : 0;