diff --git a/packages/CarSystemUI/res/drawable/notification_handle_bar.xml b/packages/CarSystemUI/res/drawable/notification_handle_bar.xml
new file mode 100644
index 0000000000000..5ed7499952edd
--- /dev/null
+++ b/packages/CarSystemUI/res/drawable/notification_handle_bar.xml
@@ -0,0 +1,26 @@
+
+
+
+ -
+
+
+
+
+
+
\ No newline at end of file
diff --git a/packages/CarSystemUI/res/layout/notification_center_activity.xml b/packages/CarSystemUI/res/layout/notification_center_activity.xml
index 5c915b874dde6..55b0d875de414 100644
--- a/packages/CarSystemUI/res/layout/notification_center_activity.xml
+++ b/packages/CarSystemUI/res/layout/notification_center_activity.xml
@@ -23,24 +23,27 @@
android:background="@color/notification_shade_background_color">
+ android:id="@+id/glass_pane"
+ android:layout_width="match_parent"
+ android:layout_height="match_parent"
+ android:translationZ="2dp"
+ app:layout_constraintBottom_toBottomOf="parent"
+ app:layout_constraintEnd_toEndOf="parent"
+ app:layout_constraintStart_toStartOf="parent"
+ app:layout_constraintTop_toTopOf="parent"
+ />
+ app:layout_constraintTop_toTopOf="parent"/>
+
+
diff --git a/packages/CarSystemUI/res/layout/notification_handle_bar.xml b/packages/CarSystemUI/res/layout/notification_handle_bar.xml
new file mode 100644
index 0000000000000..99c3a02091dbc
--- /dev/null
+++ b/packages/CarSystemUI/res/layout/notification_handle_bar.xml
@@ -0,0 +1,30 @@
+
+
+
+
+
+
\ No newline at end of file
diff --git a/packages/CarSystemUI/res/values/colors.xml b/packages/CarSystemUI/res/values/colors.xml
index 83ec3514c01a6..0d69fbba5b633 100644
--- a/packages/CarSystemUI/res/values/colors.xml
+++ b/packages/CarSystemUI/res/values/colors.xml
@@ -34,7 +34,7 @@
@color/status_bar_background_color
- #99000000
+ #DD000000
@*android:color/notification_action_list
diff --git a/packages/CarSystemUI/res/values/dimens.xml b/packages/CarSystemUI/res/values/dimens.xml
index 8789c8a924b38..0358357b9c1a7 100644
--- a/packages/CarSystemUI/res/values/dimens.xml
+++ b/packages/CarSystemUI/res/values/dimens.xml
@@ -88,4 +88,14 @@
1dp
@*android:dimen/car_padding_4
@*android:dimen/car_radius_3
+
+
+ 10dp
+ 20dp
+ 500dp
+ 500dp
+ 20dp
+ 10dp
+ 0dp
+
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 9b6ab06c47083..7cf725d443e9a 100644
--- a/packages/CarSystemUI/src/com/android/systemui/statusbar/car/CarStatusBar.java
+++ b/packages/CarSystemUI/src/com/android/systemui/statusbar/car/CarStatusBar.java
@@ -131,6 +131,8 @@ public class CarStatusBar extends StatusBar implements
// The container for the notifications.
private CarNotificationView mNotificationView;
private RecyclerView mNotificationList;
+ // The handler bar view at the bottom of notification shade.
+ private View mHandleBar;
// The controller for the notification view.
private NotificationViewController mNotificationViewController;
// The state of if the notification list is currently showing the bottom.
@@ -464,6 +466,7 @@ public class CarStatusBar extends StatusBar implements
mNotificationView = mStatusBarWindow.findViewById(R.id.notification_view);
View glassPane = mStatusBarWindow.findViewById(R.id.glass_pane);
+ mHandleBar = mStatusBarWindow.findViewById(R.id.handle_bar);
mNotificationView.setClickHandlerFactory(mNotificationClickHandlerFactory);
mNotificationView.setNotificationDataManager(mNotificationDataManager);
@@ -521,7 +524,7 @@ public class CarStatusBar extends StatusBar implements
boolean handled = closeGestureDetector.onTouchEvent(event);
boolean isTracking = mIsTracking;
- Rect rect = mNotificationList.getClipBounds();
+ Rect rect = mNotificationView.getClipBounds();
float clippedHeight = 0;
if (rect != null) {
clippedHeight = rect.bottom;
@@ -609,7 +612,7 @@ public class CarStatusBar extends StatusBar implements
to = mNotificationView.getHeight();
}
- Rect rect = mNotificationList.getClipBounds();
+ Rect rect = mNotificationView.getClipBounds();
if (rect != null) {
float from = rect.bottom;
animate(from, to, velocity, isClosing);
@@ -653,7 +656,7 @@ public class CarStatusBar extends StatusBar implements
if (isClosing) {
mStatusBarWindowController.setPanelVisible(false);
mNotificationView.setVisibility(View.INVISIBLE);
- mNotificationList.setClipBounds(null);
+ mNotificationView.setClipBounds(null);
mNotificationViewController.setIsInForeground(false);
// let the status bar know that the panel is closed
setPanelExpanded(false);
@@ -1012,8 +1015,12 @@ public class CarStatusBar extends StatusBar implements
Rect clipBounds = new Rect();
clipBounds.set(0, 0, mNotificationView.getWidth(), height);
// Sets the clip region on the notification list view.
- mNotificationList.setClipBounds(clipBounds);
-
+ mNotificationView.setClipBounds(clipBounds);
+ if (mHandleBar != null) {
+ ViewGroup.MarginLayoutParams lp =
+ (ViewGroup.MarginLayoutParams) mHandleBar.getLayoutParams();
+ mHandleBar.setTranslationY(height - mHandleBar.getHeight() - lp.bottomMargin);
+ }
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