diff options
Diffstat (limited to 'packages/SystemUI/src')
3 files changed, 28 insertions, 5 deletions
diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/phone/PanelView.java b/packages/SystemUI/src/com/android/systemui/statusbar/phone/PanelView.java index d8c99f8..a7ff0bd 100644 --- a/packages/SystemUI/src/com/android/systemui/statusbar/phone/PanelView.java +++ b/packages/SystemUI/src/com/android/systemui/statusbar/phone/PanelView.java @@ -372,6 +372,7 @@ public abstract class PanelView extends FrameLayout { } protected void onTrackingStarted() { + mClosing = false; mTracking = true; mCollapseAfterPeek = false; mBar.onTrackingStarted(PanelView.this); diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/stack/StackScrollAlgorithm.java b/packages/SystemUI/src/com/android/systemui/statusbar/stack/StackScrollAlgorithm.java index e4a1c27..853628e 100644 --- a/packages/SystemUI/src/com/android/systemui/statusbar/stack/StackScrollAlgorithm.java +++ b/packages/SystemUI/src/com/android/systemui/statusbar/stack/StackScrollAlgorithm.java @@ -738,8 +738,9 @@ public class StackScrollAlgorithm { if (mExpandedOnStart) { // We are collapsing the shade, so the first child can get as most as high as the - // current height. - mFirstChildMaxHeight = mFirstChildWhileExpanding.getActualHeight(); + // current height or the end value of the animation. + mFirstChildMaxHeight = StackStateAnimator.getFinalActualHeight( + mFirstChildWhileExpanding); } else { updateFirstChildMaxSizeToMaxHeight(); } @@ -801,9 +802,14 @@ public class StackScrollAlgorithm { this.mIsExpanded = isExpanded; } - public void notifyChildrenChanged(ViewGroup hostView) { + public void notifyChildrenChanged(final ViewGroup hostView) { if (mIsExpansionChanging) { - updateFirstChildHeightWhileExpanding(hostView); + hostView.post(new Runnable() { + @Override + public void run() { + updateFirstChildHeightWhileExpanding(hostView); + } + }); } } diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/stack/StackStateAnimator.java b/packages/SystemUI/src/com/android/systemui/statusbar/stack/StackStateAnimator.java index a69390e..433357e 100644 --- a/packages/SystemUI/src/com/android/systemui/statusbar/stack/StackStateAnimator.java +++ b/packages/SystemUI/src/com/android/systemui/statusbar/stack/StackStateAnimator.java @@ -709,7 +709,7 @@ public class StackStateAnimator { }; } - private <T> T getChildTag(View child, int tag) { + private static <T> T getChildTag(View child, int tag) { return (T) child.getTag(tag); } @@ -848,4 +848,20 @@ public class StackStateAnimator { currentAnimator.cancel(); } } + + /** + * Get the end value of the height animation running on a view or the actualHeight + * if no animation is running. + */ + public static int getFinalActualHeight(ExpandableView view) { + if (view == null) { + return 0; + } + ValueAnimator heightAnimator = getChildTag(view, TAG_ANIMATOR_HEIGHT); + if (heightAnimator == null) { + return view.getActualHeight(); + } else { + return getChildTag(view, TAG_END_HEIGHT); + } + } } |