From 07304f52243d405a0ad79abb3cf49f889a2c2907 Mon Sep 17 00:00:00 2001 From: Selim Cinek Date: Thu, 19 May 2016 18:31:36 -0700 Subject: [PATCH] Fixed a flashing when the affordances were launched Because we can't draw it as source in that case. Change-Id: I14039959a5fedbc57358e2e343a3d0d185dcec17 Fixes: 28735933 --- .../phone/NotificationPanelView.java | 7 ++++ .../statusbar/phone/PhoneStatusBar.java | 1 + .../policy/BrightnessMirrorController.java | 4 +- .../stack/NotificationStackScrollLayout.java | 39 ++++++++++++------- 4 files changed, 36 insertions(+), 15 deletions(-) diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/phone/NotificationPanelView.java b/packages/SystemUI/src/com/android/systemui/statusbar/phone/NotificationPanelView.java index 9dbec6da2bc2c..6a37099d0b7da 100644 --- a/packages/SystemUI/src/com/android/systemui/statusbar/phone/NotificationPanelView.java +++ b/packages/SystemUI/src/com/android/systemui/statusbar/phone/NotificationPanelView.java @@ -39,6 +39,7 @@ import android.view.WindowInsets; import android.view.accessibility.AccessibilityEvent; import android.widget.FrameLayout; import android.widget.TextView; + import com.android.internal.logging.MetricsLogger; import com.android.keyguard.KeyguardStatusView; import com.android.systemui.AutoReinflateContainer; @@ -2291,6 +2292,12 @@ public class NotificationPanelView extends PanelView implements setLaunchingAffordance(false); } + @Override + public void setAlpha(float alpha) { + super.setAlpha(alpha); + mNotificationStackScroller.setParentFadingOut(alpha != 1.0f); + } + /** * Set whether we are currently launching an affordance. This is currently only set when * launched via a camera gesture. diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/phone/PhoneStatusBar.java b/packages/SystemUI/src/com/android/systemui/statusbar/phone/PhoneStatusBar.java index 73648387d2352..d0d21e335db76 100644 --- a/packages/SystemUI/src/com/android/systemui/statusbar/phone/PhoneStatusBar.java +++ b/packages/SystemUI/src/com/android/systemui/statusbar/phone/PhoneStatusBar.java @@ -3864,6 +3864,7 @@ public class PhoneStatusBar extends BaseStatusBar implements DemoMode, mScrimController.forceHideScrims(true /* hide */); updateMediaMetaData(false, true); mNotificationPanel.setAlpha(1); + mStackScroller.setParentFadingOut(true); mNotificationPanel.animate() .alpha(0) .setStartDelay(FADE_KEYGUARD_START_DELAY) diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/policy/BrightnessMirrorController.java b/packages/SystemUI/src/com/android/systemui/statusbar/policy/BrightnessMirrorController.java index ddded49d2e364..21d03fd8443af 100644 --- a/packages/SystemUI/src/com/android/systemui/statusbar/policy/BrightnessMirrorController.java +++ b/packages/SystemUI/src/com/android/systemui/statusbar/policy/BrightnessMirrorController.java @@ -53,7 +53,7 @@ public class BrightnessMirrorController { public void showMirror() { mBrightnessMirror.setVisibility(View.VISIBLE); - mStackScroller.setFadedOut(true); + mStackScroller.setFadingOut(true); mScrimBehind.animateViewAlpha(0.0f, TRANSITION_DURATION_OUT, Interpolators.ALPHA_OUT); outAnimation(mNotificationPanel.animate()) .withLayer(); @@ -67,7 +67,7 @@ public class BrightnessMirrorController { @Override public void run() { mBrightnessMirror.setVisibility(View.INVISIBLE); - mStackScroller.setFadedOut(false); + mStackScroller.setFadingOut(false); } }); } diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/stack/NotificationStackScrollLayout.java b/packages/SystemUI/src/com/android/systemui/statusbar/stack/NotificationStackScrollLayout.java index 891353089b768..7a5b242f70dbc 100644 --- a/packages/SystemUI/src/com/android/systemui/statusbar/stack/NotificationStackScrollLayout.java +++ b/packages/SystemUI/src/com/android/systemui/statusbar/stack/NotificationStackScrollLayout.java @@ -333,7 +333,8 @@ public class NotificationStackScrollLayout extends ViewGroup private PorterDuffXfermode mSrcMode = new PorterDuffXfermode(PorterDuff.Mode.SRC); private boolean mPulsing; private boolean mDrawBackgroundAsSrc; - private boolean mFadedOut; + private boolean mFadingOut; + private boolean mParentFadingOut; private boolean mGroupExpandedForMeasure; private View mForcedScroll; private float mBackgroundFadeAmount = 1.0f; @@ -470,7 +471,8 @@ public class NotificationStackScrollLayout extends ViewGroup } private void updateSrcDrawing() { - mBackgroundPaint.setXfermode(mDrawBackgroundAsSrc && !mFadedOut ? mSrcMode : null); + mBackgroundPaint.setXfermode(mDrawBackgroundAsSrc && (!mFadingOut && !mParentFadingOut) + ? mSrcMode : null); invalidate(); } @@ -1871,7 +1873,7 @@ public class NotificationStackScrollLayout extends ViewGroup } private void applyCurrentBackgroundBounds() { - if (!mFadedOut) { + if (!mFadingOut) { mScrimController.setExcludedBackgroundArea(mCurrentBounds); } invalidate(); @@ -3624,22 +3626,33 @@ public class NotificationStackScrollLayout extends ViewGroup updateNotificationAnimationStates(); } - public void setFadedOut(boolean fadingOut) { - if (fadingOut != mFadedOut) { - mFadedOut = fadingOut; - if (fadingOut) { - mScrimController.setExcludedBackgroundArea(null); - } else { - applyCurrentBackgroundBounds(); - } - updateSrcDrawing(); + public void setFadingOut(boolean fadingOut) { + if (fadingOut != mFadingOut) { + mFadingOut = fadingOut; + updateFadingState(); } } + public void setParentFadingOut(boolean fadingOut) { + if (fadingOut != mParentFadingOut) { + mParentFadingOut = fadingOut; + updateFadingState(); + } + } + + private void updateFadingState() { + if (mFadingOut || mParentFadingOut || mAmbientState.isDark()) { + mScrimController.setExcludedBackgroundArea(null); + } else { + applyCurrentBackgroundBounds(); + } + updateSrcDrawing(); + } + @Override public void setAlpha(@FloatRange(from = 0.0, to = 1.0) float alpha) { super.setAlpha(alpha); - setFadedOut(alpha != 1.0f); + setFadingOut(alpha != 1.0f); } /**