diff --git a/packages/SystemUI/aconfig/systemui.aconfig b/packages/SystemUI/aconfig/systemui.aconfig
index 2cb297ad13590bf02853e8d3e48455d7d3030871..919d7f081f9c9deb14579d0652abe48f3ed33fe5 100644
--- a/packages/SystemUI/aconfig/systemui.aconfig
+++ b/packages/SystemUI/aconfig/systemui.aconfig
@@ -803,6 +803,13 @@ flag {
     bug: "312899524"
 }
 
+flag {
+    name: "brightness_slider_focus_state"
+    namespace: "systemui"
+    description: "enables new focus outline for the brightness slider when focused on with physical keyboard"
+    bug: "329244723"
+}
+
 flag {
    name: "edgeback_gesture_handler_get_running_tasks_background"
     namespace: "systemui"
diff --git a/packages/SystemUI/res/drawable/brightness_mirror_background.xml b/packages/SystemUI/res/drawable/brightness_mirror_background.xml
index b5c181bd896c7e1e2a7a4807179bdd135a40c282..c4225f11f293992e6c9b09d7ff4dd3d103d2cb3b 100644
--- a/packages/SystemUI/res/drawable/brightness_mirror_background.xml
+++ b/packages/SystemUI/res/drawable/brightness_mirror_background.xml
@@ -14,7 +14,15 @@
   ~ See the License for the specific language governing permissions and
   ~ limitations under the License
   -->
-<shape xmlns:android="http://schemas.android.com/apk/res/android">
-    <solid android:color="?attr/underSurface" />
-    <corners android:radius="@dimen/rounded_slider_background_rounded_corner" />
-</shape>
+<layer-list xmlns:android="http://schemas.android.com/apk/res/android">
+    <item
+        android:left="@dimen/rounded_slider_boundary_offset"
+        android:right="@dimen/rounded_slider_boundary_offset"
+        android:top="@dimen/rounded_slider_boundary_offset"
+        android:bottom="@dimen/rounded_slider_boundary_offset">
+        <shape>
+            <solid android:color="?attr/underSurface" />
+            <corners android:radius="@dimen/rounded_slider_background_rounded_corner" />
+        </shape>
+    </item>
+</layer-list>
diff --git a/packages/SystemUI/res/drawable/brightness_slider_focus_bg.xml b/packages/SystemUI/res/drawable/brightness_slider_focus_bg.xml
new file mode 100644
index 0000000000000000000000000000000000000000..22406ec52d00dfbc81ebd23d297bae1da79ef418
--- /dev/null
+++ b/packages/SystemUI/res/drawable/brightness_slider_focus_bg.xml
@@ -0,0 +1,29 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+  ~ Copyright (C) 2024 The Android Open Source Project
+  ~
+  ~ Licensed under the Apache License, Version 2.0 (the "License");
+  ~ you may not use this file except in compliance with the License.
+  ~ You may obtain a copy of the License at
+  ~
+  ~      http://www.apache.org/licenses/LICENSE-2.0
+  ~
+  ~ Unless required by applicable law or agreed to in writing, software
+  ~ distributed under the License is distributed on an "AS IS" BASIS,
+  ~ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+  ~ See the License for the specific language governing permissions and
+  ~ limitations under the License.
+  -->
+
+<selector
+    xmlns:android="http://schemas.android.com/apk/res/android"
+    xmlns:androidprv="http://schemas.android.com/apk/prv/res/android">
+    <item android:state_focused="true">
+        <inset android:inset="-5dp">
+            <shape>
+                <corners android:radius="16dp"/>
+                <stroke android:width="3dp" android:color="?androidprv:attr/materialColorSecondaryFixed"/>
+            </shape>
+        </inset>
+    </item>
+</selector>
\ No newline at end of file
diff --git a/packages/SystemUI/res/layout/quick_settings_brightness_dialog.xml b/packages/SystemUI/res/layout/quick_settings_brightness_dialog.xml
index e95c6a79733c839c5a7288611afad2122ff39d0f..62ceb07d5a4e321fb0c855082a208e59e37f7091 100644
--- a/packages/SystemUI/res/layout/quick_settings_brightness_dialog.xml
+++ b/packages/SystemUI/res/layout/quick_settings_brightness_dialog.xml
@@ -17,19 +17,20 @@
         xmlns:android="http://schemas.android.com/apk/res/android"
         android:id="@+id/brightness_slider"
         android:layout_width="match_parent"
-        android:layout_height="@dimen/brightness_mirror_height"
+        android:layout_height="wrap_content"
         android:layout_gravity="center"
+        android:clipChildren="false"
+        android:clipToPadding="false"
         android:contentDescription="@string/accessibility_brightness"
         android:importantForAccessibility="no" >
 
         <com.android.systemui.settings.brightness.ToggleSeekBar
             android:id="@+id/slider"
             android:layout_width="match_parent"
-            android:layout_height="wrap_content"
+            android:layout_height="@dimen/brightness_mirror_height"
             android:layout_gravity="center_vertical"
             android:minHeight="48dp"
             android:thumb="@null"
-            android:background="@null"
             android:paddingStart="0dp"
             android:paddingEnd="0dp"
             android:progressDrawable="@drawable/brightness_progress_drawable"
diff --git a/packages/SystemUI/res/values/dimens.xml b/packages/SystemUI/res/values/dimens.xml
index 8ce20684d8920932768daf3327a644eb1d02890b..f6ab4c854614fad17a794a3b09aeec5a8833ce9f 100644
--- a/packages/SystemUI/res/values/dimens.xml
+++ b/packages/SystemUI/res/values/dimens.xml
@@ -1674,6 +1674,7 @@
     <dimen name="rounded_slider_background_padding">8dp</dimen>
     <!-- rounded_slider_corner_radius + rounded_slider_background_padding -->
     <dimen name="rounded_slider_background_rounded_corner">32dp</dimen>
+    <dimen name="rounded_slider_boundary_offset">16dp</dimen>
 
     <!-- Location on the screen of the center of the physical power button. This is a reasonable
     default that should be overridden by device-specific overlays. -->
diff --git a/packages/SystemUI/src/com/android/systemui/settings/brightness/BrightnessSliderView.java b/packages/SystemUI/src/com/android/systemui/settings/brightness/BrightnessSliderView.java
index 92006a473ed8c07e1e00c55516e2e53846c25275..a39d25a5ef30d1d2d5fa41304eb37a70cb920f67 100644
--- a/packages/SystemUI/src/com/android/systemui/settings/brightness/BrightnessSliderView.java
+++ b/packages/SystemUI/src/com/android/systemui/settings/brightness/BrightnessSliderView.java
@@ -67,6 +67,7 @@ public class BrightnessSliderView extends FrameLayout {
 
         mSlider = requireViewById(R.id.slider);
         mSlider.setAccessibilityLabel(getContentDescription().toString());
+        setBoundaryOffset();
 
         // Finds the progress drawable. Assumes brightness_progress_drawable.xml
         try {
@@ -80,6 +81,17 @@ public class BrightnessSliderView extends FrameLayout {
         }
     }
 
+    private void setBoundaryOffset() {
+         //  BrightnessSliderView uses hardware layer; if the background of its children exceed its
+         //  boundary, it'll be cropped. We need to expand its boundary so that the background of
+         //  ToggleSeekBar (i.e. the focus state) can be correctly rendered.
+        int offset = getResources().getDimensionPixelSize(R.dimen.rounded_slider_boundary_offset);
+        MarginLayoutParams lp = (MarginLayoutParams) getLayoutParams();
+        lp.setMargins(-offset, -offset, -offset, -offset);
+        setLayoutParams(lp);
+        setPadding(offset,  offset, offset,  offset);
+    }
+
     /**
      * Attaches a listener to relay touch events.
      * @param listener use {@code null} to remove listener
diff --git a/packages/SystemUI/src/com/android/systemui/settings/brightness/ToggleSeekBar.java b/packages/SystemUI/src/com/android/systemui/settings/brightness/ToggleSeekBar.java
index 84156eeb92643181d9000eaaae3acc1c312be114..30b6892731f11b8a618c7ec4b5e6d37c8c7d3118 100644
--- a/packages/SystemUI/src/com/android/systemui/settings/brightness/ToggleSeekBar.java
+++ b/packages/SystemUI/src/com/android/systemui/settings/brightness/ToggleSeekBar.java
@@ -16,12 +16,16 @@
 
 package com.android.systemui.settings.brightness;
 
+import static com.android.systemui.Flags.brightnessSliderFocusState;
+
 import android.content.Context;
 import android.util.AttributeSet;
 import android.view.MotionEvent;
 import android.view.accessibility.AccessibilityNodeInfo;
 import android.widget.SeekBar;
 
+import com.android.systemui.res.R;
+
 public class ToggleSeekBar extends SeekBar {
     private String mAccessibilityLabel;
 
@@ -61,6 +65,14 @@ public class ToggleSeekBar extends SeekBar {
         return true;
     }
 
+    @Override
+    protected void onFinishInflate() {
+        super.onFinishInflate();
+        if (brightnessSliderFocusState()) {
+            setBackground(mContext.getDrawable(R.drawable.brightness_slider_focus_bg));
+        }
+    }
+
     public void setAccessibilityLabel(String label) {
         mAccessibilityLabel = label;
     }