From 245bd12b2c5745f75190b331db6b761aed573042 Mon Sep 17 00:00:00 2001 From: Priyank Singh Date: Sun, 21 Apr 2019 15:42:44 -0700 Subject: [PATCH] Notification shade glass pane should fade in as its being opened. Bug: 130168660 Test: Manual Change-Id: I12d09d5fd1a9d23f5219bbb217deccaabd39fdfc --- .../systemui/statusbar/car/CarStatusBar.java | 21 ++++++++++++++----- 1 file changed, 16 insertions(+), 5 deletions(-) diff --git a/packages/CarSystemUI/src/com/android/systemui/statusbar/car/CarStatusBar.java b/packages/CarSystemUI/src/com/android/systemui/statusbar/car/CarStatusBar.java index 4818227c18c9a..a7f8933bf44eb 100644 --- a/packages/CarSystemUI/src/com/android/systemui/statusbar/car/CarStatusBar.java +++ b/packages/CarSystemUI/src/com/android/systemui/statusbar/car/CarStatusBar.java @@ -471,7 +471,7 @@ public class CarStatusBar extends StatusBar implements handled = closeGestureDetector.onTouchEvent(event); } boolean isTracking = mIsTracking; - Rect rect = mNotificationView.getClipBounds(); + Rect rect = mNotificationList.getClipBounds(); float clippedHeight = rect.bottom; if (!handled && event.getActionMasked() == MotionEvent.ACTION_UP && mIsSwipingVerticallyToClose) { @@ -540,11 +540,11 @@ public class CarStatusBar extends StatusBar implements /** * Animates the notification shade from one position to other. This is used to either open or - * close the notification shade completely with a velocity. Id the animation is to close the + * close the notification shade completely with a velocity. If the animation is to close the * notification shade this method also makes the view invisible after animation ends. */ private void animateNotificationPanel(float velocity, boolean isClosing) { - Rect rect = mNotificationView.getClipBounds(); + Rect rect = mNotificationList.getClipBounds(); if (rect == null) { return; } @@ -575,7 +575,7 @@ public class CarStatusBar extends StatusBar implements if (isClosing) { mStatusBarWindowController.setPanelVisible(false); mNotificationView.setVisibility(View.INVISIBLE); - mNotificationView.setClipBounds(null); + mNotificationList.setClipBounds(null); // let the status bar know that the panel is closed setPanelExpanded(false); } else { @@ -933,7 +933,18 @@ public class CarStatusBar extends StatusBar implements private void setNotificationViewClipBounds(int height) { Rect clipBounds = new Rect(); clipBounds.set(0, 0, mNotificationView.getWidth(), height); - mNotificationView.setClipBounds(clipBounds); + // Sets the clip region on the notification list view. + mNotificationList.setClipBounds(clipBounds); + + if (mNotificationView.getHeight() > 0) { + // Calculates the alpha value for the background based on how much of the notification + // shade is visible to the user. When the notification shade is completely open then + // alpha value will be 1. + float alpha = (float) height / mNotificationView.getHeight(); + Drawable background = mNotificationView.getBackground(); + + background.setAlpha((int) (alpha * 255)); + } } private void calculatePercentageFromBottom(float height) {