diff --git a/packages/SystemUI/res/drawable/tv_volume_dialog_background.xml b/packages/SystemUI/res/drawable/tv_volume_dialog_background.xml
index fee6e57d2e864..3705d918c538b 100644
--- a/packages/SystemUI/res/drawable/tv_volume_dialog_background.xml
+++ b/packages/SystemUI/res/drawable/tv_volume_dialog_background.xml
@@ -18,7 +18,7 @@
-
-
+
+
diff --git a/packages/SystemUI/res/layout-land-television/volume_dialog.xml b/packages/SystemUI/res/layout-land-television/volume_dialog.xml
index 8179bf48e7ab7..8adc6eb753b53 100644
--- a/packages/SystemUI/res/layout-land-television/volume_dialog.xml
+++ b/packages/SystemUI/res/layout-land-television/volume_dialog.xml
@@ -40,14 +40,15 @@
android:translationZ="@dimen/volume_dialog_elevation"
android:clipChildren="false"
android:clipToPadding="false"
- android:background="@drawable/tv_volume_dialog_background">
+ android:background="@android:color/transparent">
+ android:orientation="horizontal"
+ android:background="@drawable/tv_volume_dialog_background">
diff --git a/packages/SystemUI/res/values-land-television/dimens.xml b/packages/SystemUI/res/values-land-television/dimens.xml
index 8c905739b9919..220ed5cce83e0 100644
--- a/packages/SystemUI/res/values-land-television/dimens.xml
+++ b/packages/SystemUI/res/values-land-television/dimens.xml
@@ -22,9 +22,9 @@
24dp
4dp
@dimen/volume_dialog_slider_width
+ 100dp
36dp
- 36dp
6dp
16sp
24dp
diff --git a/packages/SystemUI/res/values-television/colors.xml b/packages/SystemUI/res/values-television/colors.xml
new file mode 100644
index 0000000000000..e5f3b4768fe24
--- /dev/null
+++ b/packages/SystemUI/res/values-television/colors.xml
@@ -0,0 +1,22 @@
+
+
+
+ #E61F232B
+ #C71F232B
+
diff --git a/packages/SystemUI/res/values-television/config.xml b/packages/SystemUI/res/values-television/config.xml
index b02d8b8cf7e42..70bd850361980 100644
--- a/packages/SystemUI/res/values-television/config.xml
+++ b/packages/SystemUI/res/values-television/config.xml
@@ -60,4 +60,7 @@
400
+
+
+ true
diff --git a/packages/SystemUI/res/values-television/styles.xml b/packages/SystemUI/res/values-television/styles.xml
index 4cf7034a29bfd..97a42d9bc1d29 100644
--- a/packages/SystemUI/res/values-television/styles.xml
+++ b/packages/SystemUI/res/values-television/styles.xml
@@ -25,5 +25,6 @@
diff --git a/packages/SystemUI/res/values/colors.xml b/packages/SystemUI/res/values/colors.xml
index 4e3e64ac79f4b..b587513577c94 100644
--- a/packages/SystemUI/res/values/colors.xml
+++ b/packages/SystemUI/res/values/colors.xml
@@ -243,6 +243,10 @@
#FF9900
#7F000000
+
+ @android:color/transparent
+ @android:color/transparent
+
#80ffffff
?android:attr/colorAccent
diff --git a/packages/SystemUI/res/values/colors_tv.xml b/packages/SystemUI/res/values/colors_tv.xml
index 64c942de88754..51b57bdacc9f3 100644
--- a/packages/SystemUI/res/values/colors_tv.xml
+++ b/packages/SystemUI/res/values/colors_tv.xml
@@ -26,7 +26,6 @@
#33FFFFFF
#FFCC0000
- #E61F232B
#08FFFFFF
#1AFFFFFF
#40000000
diff --git a/packages/SystemUI/res/values/config.xml b/packages/SystemUI/res/values/config.xml
index 6e61148f4ac87..d685d93931439 100644
--- a/packages/SystemUI/res/values/config.xml
+++ b/packages/SystemUI/res/values/config.xml
@@ -599,4 +599,7 @@
false
+
+
+ false
diff --git a/packages/SystemUI/res/values/dimens.xml b/packages/SystemUI/res/values/dimens.xml
index d5c6398dd7195..43d636d8b8654 100644
--- a/packages/SystemUI/res/values/dimens.xml
+++ b/packages/SystemUI/res/values/dimens.xml
@@ -484,6 +484,8 @@
9dp
+ 0dp
+
76dp
32dp
diff --git a/packages/SystemUI/src/com/android/systemui/volume/VolumeDialogImpl.java b/packages/SystemUI/src/com/android/systemui/volume/VolumeDialogImpl.java
index 044d8285b079b..1026a5ca1be54 100644
--- a/packages/SystemUI/src/com/android/systemui/volume/VolumeDialogImpl.java
+++ b/packages/SystemUI/src/com/android/systemui/volume/VolumeDialogImpl.java
@@ -76,6 +76,7 @@ import android.view.ContextThemeWrapper;
import android.view.MotionEvent;
import android.view.View;
import android.view.View.AccessibilityDelegate;
+import android.view.View.OnAttachStateChangeListener;
import android.view.ViewGroup;
import android.view.ViewPropertyAnimator;
import android.view.ViewStub;
@@ -95,6 +96,7 @@ import android.widget.SeekBar.OnSeekBarChangeListener;
import android.widget.TextView;
import android.widget.Toast;
+import com.android.internal.graphics.drawable.BackgroundBlurDrawable;
import com.android.settingslib.Utils;
import com.android.systemui.Dependency;
import com.android.systemui.Interpolators;
@@ -115,6 +117,7 @@ import com.android.systemui.util.RoundedCornerProgressDrawable;
import java.io.PrintWriter;
import java.util.ArrayList;
import java.util.List;
+import java.util.function.Consumer;
/**
* Visual presentation of the volume dialog.
@@ -214,6 +217,10 @@ public class VolumeDialogImpl implements VolumeDialog,
private ViewStub mODICaptionsTooltipViewStub;
private View mODICaptionsTooltipView = null;
+ private final boolean mUseBackgroundBlur;
+ private Consumer mCrossWindowBlurEnabledListener;
+ private BackgroundBlurDrawable mDialogRowsViewBackground;
+
public VolumeDialogImpl(Context context) {
mContext =
new ContextThemeWrapper(context, R.style.volume_dialog_theme);
@@ -233,6 +240,20 @@ public class VolumeDialogImpl implements VolumeDialog,
mContext.getResources().getInteger(R.integer.config_dialogShowAnimationDurationMs);
mDialogHideAnimationDurationMs =
mContext.getResources().getInteger(R.integer.config_dialogHideAnimationDurationMs);
+ mUseBackgroundBlur =
+ mContext.getResources().getBoolean(R.bool.config_volumeDialogUseBackgroundBlur);
+
+ if (mUseBackgroundBlur) {
+ final int dialogRowsViewColorAboveBlur = mContext.getColor(
+ R.color.volume_dialog_background_color_above_blur);
+ final int dialogRowsViewColorNoBlur = mContext.getColor(
+ R.color.volume_dialog_background_color);
+ mCrossWindowBlurEnabledListener = (enabled) -> {
+ mDialogRowsViewBackground.setColor(
+ enabled ? dialogRowsViewColorAboveBlur : dialogRowsViewColorNoBlur);
+ mDialogRowsView.invalidate();
+ };
+ }
mRingerDrawerItemSize = mContext.getResources().getDimensionPixelSize(
R.dimen.volume_ringer_drawer_item_size);
mShowVibrate = mController.hasVibrator();
@@ -356,6 +377,32 @@ public class VolumeDialogImpl implements VolumeDialog,
});
mDialogRowsView = mDialog.findViewById(R.id.volume_dialog_rows);
+ if (mUseBackgroundBlur) {
+ mDialogView.addOnAttachStateChangeListener(new OnAttachStateChangeListener() {
+ @Override
+ public void onViewAttachedToWindow(View v) {
+ mWindow.getWindowManager().addCrossWindowBlurEnabledListener(
+ mCrossWindowBlurEnabledListener);
+
+ mDialogRowsViewBackground = v.getViewRootImpl().createBackgroundBlurDrawable();
+
+ final Resources resources = mContext.getResources();
+ mDialogRowsViewBackground.setCornerRadius(
+ mContext.getResources().getDimensionPixelSize(Utils.getThemeAttr(
+ mContext, android.R.attr.dialogCornerRadius)));
+ mDialogRowsViewBackground.setBlurRadius(resources.getDimensionPixelSize(
+ R.dimen.volume_dialog_background_blur_radius));
+ mDialogRowsView.setBackground(mDialogRowsViewBackground);
+ }
+
+ @Override
+ public void onViewDetachedFromWindow(View v) {
+ mWindow.getWindowManager().removeCrossWindowBlurEnabledListener(
+ mCrossWindowBlurEnabledListener);
+ }
+ });
+ }
+
mRinger = mDialog.findViewById(R.id.ringer);
if (mRinger != null) {
mRingerIcon = mRinger.findViewById(R.id.ringer_icon);