summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
author Selim Cinek <cinek@google.com> 2019-05-23 22:01:40 +0000
committer Android (Google) Code Review <android-gerrit@google.com> 2019-05-23 22:01:40 +0000
commit7e5f30f22037d64e31145384b66e7690fecd5034 (patch)
treead8daeb5ef6fb48b6234ce38b399ef3a1fe6fdb3
parent31b3161a4ef3923c11130297121a39b41d6e5bc5 (diff)
parenta8178f545412eefa732578b30860863fe628bc56 (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.java42
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();
+ }
}
}