Fixed a bug where the notification would fade out in a ugly way

am: a981d083f9

Change-Id: I736cfbbaec37e28817e3e40d0d09133dc4070acd
This commit is contained in:
Selim Cinek
2016-08-08 19:29:23 +00:00
committed by android-build-merger
3 changed files with 13 additions and 5 deletions

View File

@@ -57,6 +57,9 @@
<!-- The amount to scale each of the status bar icons by. A value of 1 means no scaling. --> <!-- The amount to scale each of the status bar icons by. A value of 1 means no scaling. -->
<item name="status_bar_icon_scale_factor" format="float" type="dimen">1.0</item> <item name="status_bar_icon_scale_factor" format="float" type="dimen">1.0</item>
<!-- max height of a notification such that the content can still fade out when closing -->
<dimen name="max_notification_fadeout_height">100dp</dimen>
<!-- Height of a small notification in the status bar--> <!-- Height of a small notification in the status bar-->
<dimen name="notification_min_height">92dp</dimen> <dimen name="notification_min_height">92dp</dimen>

View File

@@ -189,6 +189,7 @@ public class NotificationPanelView extends PanelView implements
private boolean mExpandingFromHeadsUp; private boolean mExpandingFromHeadsUp;
private boolean mCollapsedOnDown; private boolean mCollapsedOnDown;
private int mPositionMinSideMargin; private int mPositionMinSideMargin;
private int mMaxFadeoutHeight;
private int mLastOrientation = -1; private int mLastOrientation = -1;
private boolean mClosingWithAlphaFadeOut; private boolean mClosingWithAlphaFadeOut;
private boolean mHeadsUpAnimatingAway; private boolean mHeadsUpAnimatingAway;
@@ -278,6 +279,8 @@ public class NotificationPanelView extends PanelView implements
R.dimen.qs_falsing_threshold); R.dimen.qs_falsing_threshold);
mPositionMinSideMargin = getResources().getDimensionPixelSize( mPositionMinSideMargin = getResources().getDimensionPixelSize(
R.dimen.notification_panel_min_side_margin); R.dimen.notification_panel_min_side_margin);
mMaxFadeoutHeight = getResources().getDimensionPixelSize(
R.dimen.max_notification_fadeout_height);
} }
public void updateResources() { public void updateResources() {
@@ -552,7 +555,9 @@ public class NotificationPanelView extends PanelView implements
protected void flingToHeight(float vel, boolean expand, float target, protected void flingToHeight(float vel, boolean expand, float target,
float collapseSpeedUpFactor, boolean expandBecauseOfFalsing) { float collapseSpeedUpFactor, boolean expandBecauseOfFalsing) {
mHeadsUpTouchHelper.notifyFling(!expand); mHeadsUpTouchHelper.notifyFling(!expand);
setClosingWithAlphaFadeout(!expand && getFadeoutAlpha() == 1.0f); setClosingWithAlphaFadeout(!expand
&& mNotificationStackScroller.getFirstChildIntrinsicHeight() <= mMaxFadeoutHeight
&& getFadeoutAlpha() == 1.0f);
super.flingToHeight(vel, expand, target, collapseSpeedUpFactor, expandBecauseOfFalsing); super.flingToHeight(vel, expand, target, collapseSpeedUpFactor, expandBecauseOfFalsing);
} }

View File

@@ -701,7 +701,7 @@ public class NotificationStackScrollLayout extends ViewGroup
*/ */
private float getExpandTranslationStart() { private float getExpandTranslationStart() {
int startPosition = mTrackingHeadsUp || mHeadsUpManager.hasPinnedHeadsUp() int startPosition = mTrackingHeadsUp || mHeadsUpManager.hasPinnedHeadsUp()
? 0 : -getFirstChildMinHeight(); ? 0 : -getFirstChildIntrinsicHeight();
return startPosition - mTopPadding; return startPosition - mTopPadding;
} }
@@ -2140,17 +2140,17 @@ public class NotificationStackScrollLayout extends ViewGroup
} }
public int getLayoutMinHeight() { public int getLayoutMinHeight() {
int firstChildMinHeight = getFirstChildMinHeight(); int firstChildMinHeight = getFirstChildIntrinsicHeight();
return Math.min(firstChildMinHeight + mBottomStackPeekSize + mBottomStackSlowDownHeight, return Math.min(firstChildMinHeight + mBottomStackPeekSize + mBottomStackSlowDownHeight,
mMaxLayoutHeight - mTopPadding); mMaxLayoutHeight - mTopPadding);
} }
private int getFirstChildMinHeight() { public int getFirstChildIntrinsicHeight() {
final ExpandableView firstChild = getFirstChildNotGone(); final ExpandableView firstChild = getFirstChildNotGone();
int firstChildMinHeight = firstChild != null int firstChildMinHeight = firstChild != null
? firstChild.getIntrinsicHeight() ? firstChild.getIntrinsicHeight()
: mEmptyShadeView != null : mEmptyShadeView != null
? mEmptyShadeView.getMinHeight() ? mEmptyShadeView.getIntrinsicHeight()
: mCollapsedSize; : mCollapsedSize;
if (mOwnScrollY > 0) { if (mOwnScrollY > 0) {
firstChildMinHeight = Math.max(firstChildMinHeight - mOwnScrollY, mCollapsedSize); firstChildMinHeight = Math.max(firstChildMinHeight - mOwnScrollY, mCollapsedSize);