Fixed a bug when double tapping a notification in the normal shade

This fixes that sometimes holes where created when grabbing the panel while
closing the shade (eg. double tapping) or the notifications did not disappear.
It could also happen when using the clear all button.

Bug: 17969040
Bug: 17899136
Bug: 17961295
Bug: 17551216
Change-Id: Id7aa37bbcbae504039f90686e2bc364d18685205
This commit is contained in:
Selim Cinek
2014-10-14 15:46:43 +02:00
parent f715da3d6b
commit 02af41efe5
3 changed files with 28 additions and 5 deletions

View File

@@ -372,6 +372,7 @@ public abstract class PanelView extends FrameLayout {
}
protected void onTrackingStarted() {
mClosing = false;
mTracking = true;
mCollapseAfterPeek = false;
mBar.onTrackingStarted(PanelView.this);

View File

@@ -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);
}
});
}
}

View File

@@ -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);
}
}
}