diff --git a/packages/SystemUI/res/values-television/integers.xml b/packages/SystemUI/res/values-television/integers.xml index b265d7812229c..02f5d0d827f8e 100644 --- a/packages/SystemUI/res/values-television/integers.xml +++ b/packages/SystemUI/res/values-television/integers.xml @@ -18,8 +18,9 @@ - 21 + Value 21 corresponds to RIGHT|CENTER_VERTICAL. + Value 8388629 corresponds to END|CENTER_VERTICAL --> + 8388629 300 diff --git a/packages/SystemUI/src/com/android/systemui/volume/VolumeDialogImpl.java b/packages/SystemUI/src/com/android/systemui/volume/VolumeDialogImpl.java index fa3c73a26f7be..1d640db8652d1 100644 --- a/packages/SystemUI/src/com/android/systemui/volume/VolumeDialogImpl.java +++ b/packages/SystemUI/src/com/android/systemui/volume/VolumeDialogImpl.java @@ -288,6 +288,8 @@ public class VolumeDialogImpl implements VolumeDialog, Dumpable, private boolean mSeparateNotification; + private int mWindowGravity; + @VisibleForTesting int mVolumeRingerIconDrawableId; @VisibleForTesting @@ -514,7 +516,12 @@ public class VolumeDialogImpl implements VolumeDialog, Dumpable, lp.format = PixelFormat.TRANSLUCENT; lp.setTitle(VolumeDialogImpl.class.getSimpleName()); lp.windowAnimations = -1; - lp.gravity = mContext.getResources().getInteger(R.integer.volume_dialog_gravity); + + mWindowGravity = Gravity.getAbsoluteGravity( + mContext.getResources().getInteger(R.integer.volume_dialog_gravity), + mContext.getResources().getConfiguration().getLayoutDirection()); + lp.gravity = mWindowGravity; + mWindow.setAttributes(lp); mWindow.setLayout(WRAP_CONTENT, WRAP_CONTENT); @@ -525,7 +532,8 @@ public class VolumeDialogImpl implements VolumeDialog, Dumpable, mDialog.setOnShowListener(dialog -> { mDialogView.getViewTreeObserver().addOnComputeInternalInsetsListener(this); if (!shouldSlideInVolumeTray()) { - mDialogView.setTranslationX(mDialogView.getWidth() / 2.0f); + mDialogView.setTranslationX( + (isWindowGravityLeft() ? -1 : 1) * mDialogView.getWidth() / 2.0f); } mDialogView.setAlpha(0); mDialogView.animate() @@ -696,6 +704,10 @@ public class VolumeDialogImpl implements VolumeDialog, Dumpable, initODICaptionsH(); } + private boolean isWindowGravityLeft() { + return (mWindowGravity & Gravity.LEFT) == Gravity.LEFT; + } + private void initDimens() { mDialogWidth = mContext.getResources().getDimensionPixelSize( R.dimen.volume_dialog_panel_width); @@ -1495,7 +1507,10 @@ public class VolumeDialogImpl implements VolumeDialog, Dumpable, hideRingerDrawer(); }, 50)); - if (!shouldSlideInVolumeTray()) animator.translationX(mDialogView.getWidth() / 2.0f); + if (!shouldSlideInVolumeTray()) { + animator.translationX( + (isWindowGravityLeft() ? -1 : 1) * mDialogView.getWidth() / 2.0f); + } animator.setListener(getJankListener(getDialogView(), TYPE_DISMISS, mDialogHideAnimationDurationMs)).start(); checkODICaptionsTooltip(true);