am bbc580b0: Fixed layer trashing when opening / closing the shade

* commit 'bbc580b0bf557aee265b3126cdfc78e7b5834ad5':
  Fixed layer trashing when opening / closing the shade
This commit is contained in:
Selim Cinek
2015-06-04 15:40:05 +00:00
committed by Android Git Automerger
2 changed files with 30 additions and 16 deletions

View File

@@ -196,6 +196,7 @@ public class NotificationPanelView extends PanelView implements
private boolean mCollapsedOnDown;
private int mPositionMinSideMargin;
private int mLastOrientation = -1;
private boolean mClosingWithAlphaFadeOut;
private Runnable mHeadsUpExistenceChangedRunnable = new Runnable() {
@Override
@@ -527,6 +528,7 @@ public class NotificationPanelView extends PanelView implements
protected void flingToHeight(float vel, boolean expand, float target,
float collapseSpeedUpFactor, boolean expandBecauseOfFalsing) {
mHeadsUpTouchHelper.notifyFling(!expand);
setClosingWithAlphaFadeout(!expand && getFadeoutAlpha() == 1.0f);
super.flingToHeight(vel, expand, target, collapseSpeedUpFactor, expandBecauseOfFalsing);
}
@@ -1584,26 +1586,22 @@ public class NotificationPanelView extends PanelView implements
}
}
private void updateNotificationTranslucency() {
float alpha;
if (mExpandingFromHeadsUp || mHeadsUpManager.hasPinnedHeadsUp()) {
alpha = 1f;
} else {
alpha = (getNotificationsTopY() + mNotificationStackScroller.getItemHeight())
/ (mQsMinExpansionHeight + mNotificationStackScroller.getBottomStackPeekSize()
- mNotificationStackScroller.getCollapseSecondCardPadding());
alpha = Math.max(0, Math.min(alpha, 1));
alpha = (float) Math.pow(alpha, 0.75);
}
if (alpha != 1f && mNotificationStackScroller.getLayerType() != LAYER_TYPE_HARDWARE) {
mNotificationStackScroller.setLayerType(LAYER_TYPE_HARDWARE, null);
} else if (alpha == 1f
&& mNotificationStackScroller.getLayerType() == LAYER_TYPE_HARDWARE) {
mNotificationStackScroller.setLayerType(LAYER_TYPE_NONE, null);
float alpha = 1f;
if (mClosingWithAlphaFadeOut && !mExpandingFromHeadsUp && !mHeadsUpManager.hasPinnedHeadsUp()) {
alpha = getFadeoutAlpha();
}
mNotificationStackScroller.setAlpha(alpha);
}
private float getFadeoutAlpha() {
float alpha = (getNotificationsTopY() + mNotificationStackScroller.getItemHeight())
/ (mQsMinExpansionHeight + mNotificationStackScroller.getBottomStackPeekSize()
- mNotificationStackScroller.getCollapseSecondCardPadding());
alpha = Math.max(0, Math.min(alpha, 1));
alpha = (float) Math.pow(alpha, 0.75);
return alpha;
}
@Override
protected float getOverExpansionAmount() {
return mNotificationStackScroller.getCurrentOverScrollAmount(true /* top */);
@@ -2260,6 +2258,12 @@ public class NotificationPanelView extends PanelView implements
protected void onClosingFinished() {
super.onClosingFinished();
resetVerticalPanelPosition();
setClosingWithAlphaFadeout(false);
}
private void setClosingWithAlphaFadeout(boolean closing) {
mClosingWithAlphaFadeOut = closing;
mNotificationStackScroller.forceNoOverlappingRendering(closing);
}
/**

View File

@@ -225,6 +225,7 @@ public class NotificationStackScrollLayout extends ViewGroup
private HeadsUpManager mHeadsUpManager;
private boolean mTrackingHeadsUp;
private ScrimController mScrimController;
private boolean mForceNoOverlappingRendering;
public NotificationStackScrollLayout(Context context) {
this(context, null);
@@ -2732,6 +2733,15 @@ public class NotificationStackScrollLayout extends ViewGroup
mScrimController = scrimController;
}
public void forceNoOverlappingRendering(boolean force) {
mForceNoOverlappingRendering = force;
}
@Override
public boolean hasOverlappingRendering() {
return !mForceNoOverlappingRendering && super.hasOverlappingRendering();
}
/**
* A listener that is notified when some child locations might have changed.
*/