diff options
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 d8c99f83ec28..a7ff0bde678b 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 e4a1c27471e1..853628eaf6b7 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 a69390ef0f89..433357ecb934 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); +        } +    }  } |