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