From 40f95d33214363a076f530559ffff4627ce0c5fc Mon Sep 17 00:00:00 2001 From: Sergey Nikolaienkov Date: Fri, 14 Feb 2020 14:03:33 +0100 Subject: [PATCH] Fix VolumeDialog position and appearance on TVs Create layout-land-television/volume_dialog.xml layout file that describes layout for VolumeDialog on TVs. (layout-television does not work since the orientation dimension seems to have priority over form factor dimension). The new layout file is a copy of layout-land/volume_dialog.xml but does not contain ringer and settings_container. Also adding volume_dialog_gravity integer value which specifies position of the volume dialog on the screen. The default position (values/integer.xml) - RIGHT|CENTER_VERTICAL, TV specific position (values-television) - BOTTOM|CENTER_HORIZONTAL. Exempt-From-Owner-Approval: TV Branch Change-Id: Ie73b59f0b25b6cc9f16e24cfd48d38c401647017 Bug: 146436981 Bug: 146188087 Test: make SystemUI Test: change volume and see Volume dialog at the bottom & center of the screen, see it does not have bell and setting icons (cherry picked from commit 7269e9e32f7a2af5590cbe0ff8673ed8608d58e7) --- .../layout-land-television/volume_dialog.xml | 101 ++++++++++++++++++ .../res/values-television/integers.xml | 22 ++++ packages/SystemUI/res/values/integers.xml | 4 + .../systemui/volume/VolumeDialogImpl.java | 5 +- 4 files changed, 129 insertions(+), 3 deletions(-) create mode 100644 packages/SystemUI/res/layout-land-television/volume_dialog.xml create mode 100644 packages/SystemUI/res/values-television/integers.xml diff --git a/packages/SystemUI/res/layout-land-television/volume_dialog.xml b/packages/SystemUI/res/layout-land-television/volume_dialog.xml new file mode 100644 index 0000000000000..e0d158d757b3f --- /dev/null +++ b/packages/SystemUI/res/layout-land-television/volume_dialog.xml @@ -0,0 +1,101 @@ + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/packages/SystemUI/res/values-television/integers.xml b/packages/SystemUI/res/values-television/integers.xml new file mode 100644 index 0000000000000..91e83ccbbe791 --- /dev/null +++ b/packages/SystemUI/res/values-television/integers.xml @@ -0,0 +1,22 @@ + + + + + 81 + \ No newline at end of file diff --git a/packages/SystemUI/res/values/integers.xml b/packages/SystemUI/res/values/integers.xml index 4171cd9741326..f35f3513d5305 100644 --- a/packages/SystemUI/res/values/integers.xml +++ b/packages/SystemUI/res/values/integers.xml @@ -40,4 +40,8 @@ 2 + + 21 \ No newline at end of file diff --git a/packages/SystemUI/src/com/android/systemui/volume/VolumeDialogImpl.java b/packages/SystemUI/src/com/android/systemui/volume/VolumeDialogImpl.java index af218c499d629..ce032e2ceaeca 100644 --- a/packages/SystemUI/src/com/android/systemui/volume/VolumeDialogImpl.java +++ b/packages/SystemUI/src/com/android/systemui/volume/VolumeDialogImpl.java @@ -65,7 +65,6 @@ import android.util.Log; import android.util.Slog; import android.util.SparseBooleanArray; import android.view.ContextThemeWrapper; -import android.view.Gravity; import android.view.MotionEvent; import android.view.View; import android.view.View.AccessibilityDelegate; @@ -224,7 +223,7 @@ public class VolumeDialogImpl implements VolumeDialog, lp.format = PixelFormat.TRANSLUCENT; lp.setTitle(VolumeDialogImpl.class.getSimpleName()); lp.windowAnimations = -1; - lp.gravity = Gravity.RIGHT | Gravity.CENTER_VERTICAL; + lp.gravity = mContext.getResources().getInteger(R.integer.volume_dialog_gravity); mWindow.setAttributes(lp); mWindow.setLayout(WRAP_CONTENT, WRAP_CONTENT); @@ -825,7 +824,7 @@ public class VolumeDialogImpl implements VolumeDialog, } protected void updateRingerH() { - if (mState != null) { + if (mRinger != null && mState != null) { final StreamState ss = mState.states.get(AudioManager.STREAM_RING); if (ss == null) { return;