diff options
| author | 2019-05-23 22:01:40 +0000 | |
|---|---|---|
| committer | 2019-05-23 22:01:40 +0000 | |
| commit | 7e5f30f22037d64e31145384b66e7690fecd5034 (patch) | |
| tree | ad8daeb5ef6fb48b6234ce38b399ef3a1fe6fdb3 | |
| parent | 31b3161a4ef3923c11130297121a39b41d6e5bc5 (diff) | |
| parent | a8178f545412eefa732578b30860863fe628bc56 (diff) | |
Merge "HeadsUpAppearanceController: allow heads-up to draw beyond bounds" into qt-dev
| -rw-r--r-- | packages/SystemUI/src/com/android/systemui/statusbar/phone/HeadsUpAppearanceController.java | 42 |
1 files changed, 40 insertions, 2 deletions
diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/phone/HeadsUpAppearanceController.java b/packages/SystemUI/src/com/android/systemui/statusbar/phone/HeadsUpAppearanceController.java index 4baeeef1ffd0..66903fa531e0 100644 --- a/packages/SystemUI/src/com/android/systemui/statusbar/phone/HeadsUpAppearanceController.java +++ b/packages/SystemUI/src/com/android/systemui/statusbar/phone/HeadsUpAppearanceController.java @@ -23,6 +23,7 @@ import android.view.View; import android.view.WindowInsets; import com.android.internal.annotations.VisibleForTesting; +import com.android.internal.widget.ViewClippingUtil; import com.android.systemui.Dependency; import com.android.systemui.R; import com.android.systemui.plugins.DarkIconDispatcher; @@ -67,6 +68,13 @@ public class HeadsUpAppearanceController implements OnHeadsUpChangedListener, private final View.OnLayoutChangeListener mStackScrollLayoutChangeListener = (v, left, top, right, bottom, oldLeft, oldTop, oldRight, oldBottom) -> updatePanelTranslation(); + private final ViewClippingUtil.ClippingParameters mParentClippingParams = + new ViewClippingUtil.ClippingParameters() { + @Override + public boolean shouldFinish(View view) { + return view.getId() == R.id.status_bar; + } + }; private boolean mAnimationsEnabled = true; Point mPoint; @@ -239,6 +247,7 @@ public class HeadsUpAppearanceController implements OnHeadsUpChangedListener, if (mShown != isShown) { mShown = isShown; if (isShown) { + updateParentClipping(false /* shouldClip */); mHeadsUpStatusBarView.setVisibility(View.VISIBLE); show(mHeadsUpStatusBarView); hide(mClockView, View.INVISIBLE); @@ -256,25 +265,54 @@ public class HeadsUpAppearanceController implements OnHeadsUpChangedListener, if (mOperatorNameView != null) { show(mOperatorNameView); } - hide(mHeadsUpStatusBarView, View.GONE); + hide(mHeadsUpStatusBarView, View.GONE, () -> { + updateParentClipping(true /* shouldClip */); + }); } } } + private void updateParentClipping(boolean shouldClip) { + ViewClippingUtil.setClippingDeactivated( + mHeadsUpStatusBarView, !shouldClip, mParentClippingParams); + } + /** * Hides the view and sets the state to endState when finished. * * @param view The view to hide. * @param endState One of {@link View#INVISIBLE} or {@link View#GONE}. + * @see HeadsUpAppearanceController#hide(View, int, Runnable) * @see View#setVisibility(int) * */ private void hide(View view, int endState) { + hide(view, endState, null); + } + + /** + * Hides the view and sets the state to endState when finished. + * + * @param view The view to hide. + * @param endState One of {@link View#INVISIBLE} or {@link View#GONE}. + * @param callback Runnable to be executed after the view has been hidden. + * @see View#setVisibility(int) + * + */ + private void hide(View view, int endState, Runnable callback) { if (mAnimationsEnabled) { CrossFadeHelper.fadeOut(view, CONTENT_FADE_DURATION /* duration */, - 0 /* delay */, () -> view.setVisibility(endState)); + 0 /* delay */, () -> { + view.setVisibility(endState); + if (callback != null) { + callback.run(); + } + }); } else { view.setVisibility(endState); + if (callback != null) { + callback.run(); + } } } |