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:
@@ -372,6 +372,7 @@ public abstract class PanelView extends FrameLayout {
|
||||
}
|
||||
|
||||
protected void onTrackingStarted() {
|
||||
mClosing = false;
|
||||
mTracking = true;
|
||||
mCollapseAfterPeek = false;
|
||||
mBar.onTrackingStarted(PanelView.this);
|
||||
|
||||
@@ -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);
|
||||
}
|
||||
});
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -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);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user