Style changes for Pointer fill color settings.

Fix: 362455374
Test: Manual. Visual Changes only.
Flag: android.view.flags.enable_vector_cursor_a11y_settings
Change-Id: Id7a9d7eef540ea33f6bb47451b3d5c25328f9707
diff --git a/res/drawable/pointer_fill_check_24dp.xml b/res/drawable/pointer_fill_check_24dp.xml
new file mode 100644
index 0000000..c4b39d1
--- /dev/null
+++ b/res/drawable/pointer_fill_check_24dp.xml
@@ -0,0 +1,24 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright 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.
+-->
+<vector xmlns:android="http://schemas.android.com/apk/res/android"
+        android:width="24dp"
+        android:height="24dp"
+        android:viewportWidth="24.0"
+        android:viewportHeight="24.0">
+    <path
+        android:pathData="M9,16.17L4.83,12l-1.42,1.41L9,19 21,7l-1.41,-1.41z"
+        android:fillColor="@android:color/white"/>
+</vector>
diff --git a/res/drawable/pointer_icon_fill_color_background.xml b/res/drawable/pointer_icon_fill_color_background.xml
new file mode 100644
index 0000000..20deb5c
--- /dev/null
+++ b/res/drawable/pointer_icon_fill_color_background.xml
@@ -0,0 +1,28 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+     Copyright 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.
+-->
+<inset xmlns:android="http://schemas.android.com/apk/res/android"
+    android:insetBottom="@dimen/pointer_fill_style_circle_offset"
+    android:insetLeft="@dimen/pointer_fill_style_circle_offset"
+    android:insetRight="@dimen/pointer_fill_style_circle_offset"
+    android:insetTop="@dimen/pointer_fill_style_circle_offset">
+    <shape android:shape="oval">
+        <size
+            android:width="@dimen/pointer_fill_style_circle_inner_diameter"
+            android:height="@dimen/pointer_fill_style_circle_inner_diameter" />
+        <solid android:color="@android:color/white" />
+    </shape>
+</inset>
diff --git a/res/drawable/pointer_icon_fill_color_foreground.xml b/res/drawable/pointer_icon_fill_color_foreground.xml
new file mode 100644
index 0000000..3d41620
--- /dev/null
+++ b/res/drawable/pointer_icon_fill_color_foreground.xml
@@ -0,0 +1,67 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+     Copyright 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">
+    <item android:state_selected="true" android:state_hovered="true">
+        <layer-list>
+            <item>
+                <shape android:shape="oval">
+                    <size android:width="@dimen/pointer_fill_style_circle_hover_selected_diameter"
+                        android:height="@dimen/pointer_fill_style_circle_hover_selected_diameter" />
+                    <stroke android:width="@dimen/pointer_fill_style_shape_hovered_stroke"
+                        android:color="@color/pointer_fill_outline_color" />
+                </shape>
+            </item>
+            <item
+                android:top="@dimen/pointer_fill_style_checkmark_hovered_padding"
+                android:left="@dimen/pointer_fill_style_checkmark_hovered_padding"
+                android:bottom="@dimen/pointer_fill_style_checkmark_hovered_padding"
+                android:right="@dimen/pointer_fill_style_checkmark_hovered_padding"
+                android:drawable="@drawable/pointer_fill_check_24dp" />
+        </layer-list>
+    </item>
+    <item android:state_selected="true">
+        <layer-list>
+            <item>
+                <inset android:insetTop="@dimen/pointer_fill_style_circle_selected_offset"
+                    android:insetLeft="@dimen/pointer_fill_style_circle_selected_offset"
+                    android:insetBottom="@dimen/pointer_fill_style_circle_selected_offset"
+                    android:insetRight="@dimen/pointer_fill_style_circle_selected_offset">
+                    <shape android:shape="oval">
+                        <size android:width="@dimen/pointer_fill_style_circle_selected_diameter"
+                            android:height="@dimen/pointer_fill_style_circle_selected_diameter" />
+                        <stroke android:width="@dimen/pointer_fill_style_shape_selected_stroke"
+                            android:color="@color/pointer_fill_outline_color" />
+                    </shape>
+                </inset>
+            </item>
+            <item
+                android:top="@dimen/pointer_fill_style_checkmark_selected_padding"
+                android:left="@dimen/pointer_fill_style_checkmark_selected_padding"
+                android:bottom="@dimen/pointer_fill_style_checkmark_selected_padding"
+                android:right="@dimen/pointer_fill_style_checkmark_selected_padding"
+                android:drawable="@drawable/pointer_fill_check_24dp" />
+        </layer-list>
+    </item>
+    <item android:state_hovered="true">
+        <shape android:shape="oval">
+            <size android:width="@dimen/pointer_fill_style_circle_hover_diameter"
+                android:height="@dimen/pointer_fill_style_circle_hover_diameter" />
+            <stroke android:width="@dimen/pointer_fill_style_shape_hovered_stroke"
+                android:color="@color/pointer_fill_outline_color" />
+        </shape>
+    </item>
+</selector>
diff --git a/res/drawable/pointer_icon_fill_style_background.xml b/res/drawable/pointer_icon_fill_container_background.xml
similarity index 87%
rename from res/drawable/pointer_icon_fill_style_background.xml
rename to res/drawable/pointer_icon_fill_container_background.xml
index 1e98cf5..ca930a7 100644
--- a/res/drawable/pointer_icon_fill_style_background.xml
+++ b/res/drawable/pointer_icon_fill_container_background.xml
@@ -17,6 +17,6 @@
 <shape xmlns:android="http://schemas.android.com/apk/res/android"
     xmlns:androidprv="http://schemas.android.com/apk/prv/res/android"
     android:shape="rectangle">
-    <corners android:radius="16dp" />
-    <solid android:color="?androidprv:attr/materialColorSurface"/>
+    <corners android:radius="20dp" />
+    <solid android:color="?androidprv:attr/materialColorSurfaceContainerHigh"/>
 </shape>
diff --git a/res/layout/pointer_icon_fill_style_layout.xml b/res/layout/pointer_icon_fill_style_layout.xml
index 1fa9baf..63c8ebd 100644
--- a/res/layout/pointer_icon_fill_style_layout.xml
+++ b/res/layout/pointer_icon_fill_style_layout.xml
@@ -16,6 +16,7 @@
   -->
 
 <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
+    xmlns:androidprv="http://schemas.android.com/apk/prv/res/android"
     android:layout_width="match_parent"
     android:layout_height="wrap_content"
     android:gravity="center_vertical"
@@ -30,73 +31,149 @@
         android:layout_height="wrap_content"
         android:layout_marginTop="@dimen/pointer_fill_style_circle_padding"
         android:text="@string/pointer_fill_style"
+        android:textSize="14sp"
+        android:textColor="?androidprv:attr/materialColorPrimary"
         android:textAlignment="viewStart"
-        android:textAppearance="?android:attr/textAppearanceListItem" />
+        android:fontWeight="500" />
 
-    <HorizontalScrollView
-        android:layout_width="match_parent"
-        android:layout_height="wrap_content">
+    <LinearLayout
+        android:id="@+id/button_holder"
+        android:layout_width="@dimen/pointer_fill_container_max_width"
+        android:layout_height="@dimen/pointer_fill_container_height"
+        android:layout_marginBottom="@dimen/pointer_fill_style_circle_padding"
+        android:layout_marginTop="@dimen/pointer_fill_style_circle_padding"
+        android:background="@drawable/pointer_icon_fill_container_background"
+        android:gravity="center"
+        android:paddingTop="@dimen/pointer_fill_style_container_padding"
+        android:paddingBottom="@dimen/pointer_fill_style_container_padding">
 
-        <LinearLayout
-            android:id="@+id/button_holder"
-            android:layout_width="wrap_content"
-            android:layout_height="wrap_content"
-            android:layout_marginBottom="@dimen/pointer_fill_style_circle_padding"
-            android:layout_marginTop="@dimen/pointer_fill_style_circle_padding"
-            android:background="@drawable/pointer_icon_fill_style_background"
-            android:gravity="center_horizontal"
-            android:padding="@dimen/pointer_fill_style_circle_padding">
+        <View
+            android:layout_width="0dp"
+            android:layout_height="match_parent"
+            android:focusable="false"
+            android:clickable="false"
+            android:importantForAccessibility="no"
+            android:layout_weight="4" />
 
-            <ImageView
-                android:id="@+id/button_black"
-                android:layout_width="@dimen/pointer_fill_style_circle_diameter"
-                android:layout_height="@dimen/pointer_fill_style_circle_diameter"
-                android:layout_margin="@dimen/pointer_fill_style_circle_padding"
-                android:adjustViewBounds="true"
-                android:maxWidth="@dimen/pointer_fill_style_circle_diameter"
-                android:contentDescription="@string/pointer_fill_style_black_button"
-                android:scaleType="fitCenter" />
+        <ImageView
+            android:id="@+id/button_black"
+            android:layout_width="@dimen/pointer_fill_style_circle_diameter"
+            android:layout_weight="0"
+            android:layout_height="@dimen/pointer_fill_style_circle_diameter"
+            android:adjustViewBounds="true"
+            android:maxWidth="@dimen/pointer_fill_style_circle_diameter"
+            android:contentDescription="@string/pointer_fill_style_black_button"
+            android:scaleType="center"
+            android:background="@drawable/pointer_icon_fill_color_background"
+            android:src="@drawable/pointer_icon_fill_color_foreground" />
 
-            <ImageView
-                android:id="@+id/button_green"
-                android:layout_width="@dimen/pointer_fill_style_circle_diameter"
-                android:layout_height="@dimen/pointer_fill_style_circle_diameter"
-                android:layout_margin="@dimen/pointer_fill_style_circle_padding"
-                android:adjustViewBounds="true"
-                android:maxWidth="@dimen/pointer_fill_style_circle_diameter"
-                android:contentDescription="@string/pointer_fill_style_green_button"
-                android:scaleType="fitCenter" />
+        <View
+            android:layout_width="0dp"
+            android:layout_height="match_parent"
+            android:focusable="false"
+            android:clickable="false"
+            android:importantForAccessibility="no"
+            android:layout_weight="3" />
 
-            <ImageView
-                android:id="@+id/button_yellow"
-                android:layout_width="@dimen/pointer_fill_style_circle_diameter"
-                android:layout_height="@dimen/pointer_fill_style_circle_diameter"
-                android:layout_margin="@dimen/pointer_fill_style_circle_padding"
-                android:adjustViewBounds="true"
-                android:maxWidth="@dimen/pointer_fill_style_circle_diameter"
-                android:contentDescription="@string/pointer_fill_style_yellow_button"
-                android:scaleType="fitCenter" />
+        <ImageView
+            android:id="@+id/button_green"
+            android:layout_width="@dimen/pointer_fill_style_circle_diameter"
+            android:layout_weight="0"
+            android:layout_height="@dimen/pointer_fill_style_circle_diameter"
+            android:adjustViewBounds="true"
+            android:maxWidth="@dimen/pointer_fill_style_circle_diameter"
+            android:contentDescription="@string/pointer_fill_style_green_button"
+            android:scaleType="center"
+            android:background="@drawable/pointer_icon_fill_color_background"
+            android:src="@drawable/pointer_icon_fill_color_foreground" />
 
-            <ImageView
-                android:id="@+id/button_pink"
-                android:layout_width="@dimen/pointer_fill_style_circle_diameter"
-                android:layout_height="@dimen/pointer_fill_style_circle_diameter"
-                android:layout_margin="@dimen/pointer_fill_style_circle_padding"
-                android:adjustViewBounds="true"
-                android:maxWidth="@dimen/pointer_fill_style_circle_diameter"
-                android:contentDescription="@string/pointer_fill_style_pink_button"
-                android:scaleType="fitCenter" />
+        <View
+            android:layout_width="0dp"
+            android:layout_height="match_parent"
+            android:focusable="false"
+            android:clickable="false"
+            android:importantForAccessibility="no"
+            android:layout_weight="3" />
 
-            <ImageView
-                android:id="@+id/button_blue"
-                android:layout_width="@dimen/pointer_fill_style_circle_diameter"
-                android:layout_height="@dimen/pointer_fill_style_circle_diameter"
-                android:layout_margin="@dimen/pointer_fill_style_circle_padding"
-                android:adjustViewBounds="true"
-                android:maxWidth="@dimen/pointer_fill_style_circle_diameter"
-                android:contentDescription="@string/pointer_fill_style_blue_button"
-                android:scaleType="fitCenter" />
-        </LinearLayout>
-    </HorizontalScrollView>
+        <ImageView
+            android:id="@+id/button_red"
+            android:layout_width="@dimen/pointer_fill_style_circle_diameter"
+            android:layout_weight="0"
+            android:layout_height="@dimen/pointer_fill_style_circle_diameter"
+            android:adjustViewBounds="true"
+            android:maxWidth="@dimen/pointer_fill_style_circle_diameter"
+            android:contentDescription="@string/pointer_fill_style_red_button"
+            android:scaleType="center"
+            android:background="@drawable/pointer_icon_fill_color_background"
+            android:src="@drawable/pointer_icon_fill_color_foreground" />
+
+        <View
+            android:layout_width="0dp"
+            android:layout_height="match_parent"
+            android:focusable="false"
+            android:clickable="false"
+            android:importantForAccessibility="no"
+            android:layout_weight="3" />
+
+        <ImageView
+            android:id="@+id/button_pink"
+            android:layout_width="@dimen/pointer_fill_style_circle_diameter"
+            android:layout_weight="0"
+            android:layout_height="@dimen/pointer_fill_style_circle_diameter"
+            android:adjustViewBounds="true"
+            android:maxWidth="@dimen/pointer_fill_style_circle_diameter"
+            android:contentDescription="@string/pointer_fill_style_pink_button"
+            android:scaleType="center"
+            android:background="@drawable/pointer_icon_fill_color_background"
+            android:src="@drawable/pointer_icon_fill_color_foreground" />
+
+        <View
+            android:layout_width="0dp"
+            android:layout_height="match_parent"
+            android:focusable="false"
+            android:clickable="false"
+            android:importantForAccessibility="no"
+            android:layout_weight="3" />
+
+        <ImageView
+            android:id="@+id/button_blue"
+            android:layout_width="@dimen/pointer_fill_style_circle_diameter"
+            android:layout_weight="0"
+            android:layout_height="@dimen/pointer_fill_style_circle_diameter"
+            android:adjustViewBounds="true"
+            android:maxWidth="@dimen/pointer_fill_style_circle_diameter"
+            android:contentDescription="@string/pointer_fill_style_blue_button"
+            android:scaleType="center"
+            android:background="@drawable/pointer_icon_fill_color_background"
+            android:src="@drawable/pointer_icon_fill_color_foreground" />
+
+        <View
+            android:layout_width="0dp"
+            android:layout_height="match_parent"
+            android:focusable="false"
+            android:clickable="false"
+            android:importantForAccessibility="no"
+            android:layout_weight="3" />
+
+        <ImageView
+            android:id="@+id/button_purple"
+            android:layout_width="@dimen/pointer_fill_style_circle_diameter"
+            android:layout_weight="0"
+            android:layout_height="@dimen/pointer_fill_style_circle_diameter"
+            android:adjustViewBounds="true"
+            android:maxWidth="@dimen/pointer_fill_style_circle_diameter"
+            android:contentDescription="@string/pointer_fill_style_purple_button"
+            android:scaleType="center"
+            android:background="@drawable/pointer_icon_fill_color_background"
+            android:src="@drawable/pointer_icon_fill_color_foreground" />
+
+        <View
+            android:layout_width="0dp"
+            android:layout_height="match_parent"
+            android:focusable="false"
+            android:clickable="false"
+            android:importantForAccessibility="no"
+            android:layout_weight="4" />
+    </LinearLayout>
 
 </LinearLayout>
diff --git a/res/layout/pointer_icon_stroke_style_layout.xml b/res/layout/pointer_icon_stroke_style_layout.xml
index acf919a..01b58b2 100644
--- a/res/layout/pointer_icon_stroke_style_layout.xml
+++ b/res/layout/pointer_icon_stroke_style_layout.xml
@@ -15,6 +15,7 @@
   -->
 
 <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
+    xmlns:androidprv="http://schemas.android.com/apk/prv/res/android"
     android:layout_width="match_parent"
     android:layout_height="wrap_content"
     android:gravity="center_vertical"
@@ -29,7 +30,10 @@
         android:layout_height="wrap_content"
         android:layout_marginTop="@dimen/pointer_stroke_style_padding"
         android:text="@string/pointer_stroke_style"
+        android:textSize="14sp"
+        android:textColor="?androidprv:attr/materialColorPrimary"
         android:textAlignment="viewStart"
+        android:fontWeight="500"
         android:textAppearance="?android:attr/textAppearanceListItem" />
 
     <RadioGroup
@@ -38,23 +42,31 @@
         android:layout_height="wrap_content"
         android:orientation="vertical"
         android:layout_marginTop="@dimen/pointer_stroke_style_padding"
-        android:layout_marginBottom="@dimen/pointer_stroke_style_padding"
-        android:padding="@dimen/pointer_stroke_style_padding">
+        android:layout_marginBottom="@dimen/pointer_stroke_style_padding">
         <RadioButton android:id="@+id/stroke_style_white"
             android:layout_width="wrap_content"
             android:layout_height="wrap_content"
             android:layout_margin="@dimen/pointer_stroke_style_padding"
-            android:text="@string/pointer_stroke_style_name_white"/>
+            android:paddingStart="@dimen/pointer_stroke_style_text_padding"
+            android:text="@string/pointer_stroke_style_name_white"
+            android:textSize="20sp"
+            android:textAppearance="?android:attr/textAppearanceListItem" />
         <RadioButton android:id="@+id/stroke_style_black"
             android:layout_width="wrap_content"
             android:layout_height="wrap_content"
             android:layout_margin="@dimen/pointer_stroke_style_padding"
-            android:text="@string/pointer_stroke_style_name_black"/>
+            android:paddingStart="@dimen/pointer_stroke_style_text_padding"
+            android:text="@string/pointer_stroke_style_name_black"
+            android:textSize="20sp"
+            android:textAppearance="?android:attr/textAppearanceListItem" />
         <RadioButton android:id="@+id/stroke_style_none"
             android:layout_width="wrap_content"
             android:layout_height="wrap_content"
             android:layout_margin="@dimen/pointer_stroke_style_padding"
-            android:text="@string/pointer_stroke_style_name_none"/>
+            android:paddingStart="@dimen/pointer_stroke_style_text_padding"
+            android:text="@string/pointer_stroke_style_name_none"
+            android:textSize="20sp"
+            android:textAppearance="?android:attr/textAppearanceListItem" />
     </RadioGroup>
 
 </LinearLayout>
\ No newline at end of file
diff --git a/res/values-night/colors.xml b/res/values-night/colors.xml
index fb73e6e..57453ce 100644
--- a/res/values-night/colors.xml
+++ b/res/values-night/colors.xml
@@ -76,5 +76,8 @@
 
     <!-- Switch bar disabled state color-->
     <color name="switch_bar_state_disabled_color">#1FE3E3E3</color>
+
+    <!-- Pointer fill color setting outline color-->
+    <color name="pointer_fill_outline_color">#FFFFFF</color>
 </resources>
 
diff --git a/res/values-sw600dp/dimens.xml b/res/values-sw600dp/dimens.xml
index 391a304..55735e6 100755
--- a/res/values-sw600dp/dimens.xml
+++ b/res/values-sw600dp/dimens.xml
@@ -28,4 +28,9 @@
 
     <!-- Lock pattern view size, align sysui biometric_auth_pattern_view_size -->
     <dimen name="biometric_auth_pattern_view_size">348dp</dimen>
+
+    <!--  Pointer fill color preference  -->
+    <dimen name="pointer_fill_container_height">104dp</dimen>
+    <dimen name="pointer_fill_container_max_width">448dp</dimen>
+    <dimen name="pointer_fill_style_container_padding">32dp</dimen>
 </resources>
diff --git a/res/values/colors.xml b/res/values/colors.xml
index 6d92526..95b38cb 100644
--- a/res/values/colors.xml
+++ b/res/values/colors.xml
@@ -218,4 +218,7 @@
 
     <!-- Switch bar disabled state color-->
     <color name="switch_bar_state_disabled_color">#1F1F1F1F</color>
+
+    <!-- Pointer fill color setting outline color-->
+    <color name="pointer_fill_outline_color">#000000</color>
 </resources>
diff --git a/res/values/dimens.xml b/res/values/dimens.xml
index 2a9b433..c9a67e4 100755
--- a/res/values/dimens.xml
+++ b/res/values/dimens.xml
@@ -175,11 +175,23 @@
     <dimen name="keyboard_picker_text_size">16sp</dimen>
 
     <!-- Pointer -->
-    <dimen name="pointer_fill_style_circle_diameter">52dp</dimen>
-    <dimen name="pointer_fill_style_circle_padding">8dp</dimen>
-    <dimen name="pointer_fill_style_shape_default_stroke">1dp</dimen>
-    <dimen name="pointer_fill_style_shape_hovered_stroke">3dp</dimen>
+    <dimen name="pointer_fill_container_height">88dp</dimen>
+    <dimen name="pointer_fill_container_max_width">448dp</dimen>
+    <dimen name="pointer_fill_style_container_padding">32dp</dimen>
+    <dimen name="pointer_fill_style_circle_diameter">56dp</dimen>
+    <dimen name="pointer_fill_style_circle_hover_selected_diameter">52dp</dimen>
+    <dimen name="pointer_fill_style_circle_hover_diameter">56dp</dimen>
+    <dimen name="pointer_fill_style_circle_selected_diameter">50dp</dimen>
+    <dimen name="pointer_fill_style_circle_inner_diameter">40dp</dimen>
+    <dimen name="pointer_fill_style_circle_offset">8dp</dimen>
+    <dimen name="pointer_fill_style_circle_padding">16dp</dimen>
+    <dimen name="pointer_fill_style_circle_selected_offset">3dp</dimen>
+    <dimen name="pointer_fill_style_checkmark_selected_padding">14dp</dimen>
+    <dimen name="pointer_fill_style_checkmark_hovered_padding">17dp</dimen>
+    <dimen name="pointer_fill_style_shape_selected_stroke">2dp</dimen>
+    <dimen name="pointer_fill_style_shape_hovered_stroke">4dp</dimen>
     <dimen name="pointer_stroke_style_padding">8dp</dimen>
+    <dimen name="pointer_stroke_style_text_padding">21dp</dimen>
     <dimen name="pointer_scale_padding">8dp</dimen>
     <item name="pointer_scale_size_start" format="float" type="dimen">1.0</item>
     <item name="pointer_scale_size_end" format="float" type="dimen">2.5</item>
diff --git a/res/values/strings.xml b/res/values/strings.xml
index 2270804..41bc9ed 100644
--- a/res/values/strings.xml
+++ b/res/values/strings.xml
@@ -4538,14 +4538,16 @@
     <string name="pointer_fill_style_black_button">Change pointer fill style to black</string>
     <!-- Content description for green pointer fill style. [CHAR LIMIT=60] -->
     <string name="pointer_fill_style_green_button">Change pointer fill style to green</string>
-    <!-- Content description for yellow pointer fill style. [CHAR LIMIT=60] -->
-    <string name="pointer_fill_style_yellow_button">Change pointer fill style to yellow</string>
+    <!-- Content description for red pointer fill style. [CHAR LIMIT=60] -->
+    <string name="pointer_fill_style_red_button">Change pointer fill style to red</string>
     <!-- Content description for pink pointer fill style. [CHAR LIMIT=60] -->
     <string name="pointer_fill_style_pink_button">Change pointer fill style to pink</string>
     <!-- Content description for blue pointer fill style. [CHAR LIMIT=60] -->
     <string name="pointer_fill_style_blue_button">Change pointer fill style to blue</string>
-    <!-- Title text for mouse pointer stroke style. [CHAR LIMIT=35] -->
-    <string name="pointer_stroke_style">Pointer stroke style</string>
+    <!-- Content description for purple pointer fill style. [CHAR LIMIT=60] -->
+    <string name="pointer_fill_style_purple_button">Change pointer fill style to purple</string>
+    <!-- Title text for mouse pointer stroke color. [CHAR LIMIT=35] -->
+    <string name="pointer_stroke_style">Pointer stroke color</string>
     <!-- White value for pointer stroke style. [CHAR LIMIT=35] -->
     <string name="pointer_stroke_style_name_white">White</string>
     <!-- Black value pointer stroke style. [CHAR LIMIT=35] -->
diff --git a/src/com/android/settings/inputmethod/PointerFillStylePreference.java b/src/com/android/settings/inputmethod/PointerFillStylePreference.java
index 3ea656f..52535f9 100644
--- a/src/com/android/settings/inputmethod/PointerFillStylePreference.java
+++ b/src/com/android/settings/inputmethod/PointerFillStylePreference.java
@@ -19,21 +19,14 @@
 import static android.view.PointerIcon.POINTER_ICON_VECTOR_STYLE_FILL_BLUE;
 import static android.view.PointerIcon.POINTER_ICON_VECTOR_STYLE_FILL_GREEN;
 import static android.view.PointerIcon.POINTER_ICON_VECTOR_STYLE_FILL_PINK;
-import static android.view.PointerIcon.POINTER_ICON_VECTOR_STYLE_FILL_YELLOW;
+import static android.view.PointerIcon.POINTER_ICON_VECTOR_STYLE_FILL_PURPLE;
+import static android.view.PointerIcon.POINTER_ICON_VECTOR_STYLE_FILL_RED;
 
 import android.content.Context;
-import android.content.res.Resources;
 import android.content.res.TypedArray;
-import android.graphics.BlendMode;
-import android.graphics.BlendModeColorFilter;
 import android.graphics.Color;
-import android.graphics.drawable.Drawable;
-import android.graphics.drawable.GradientDrawable;
-import android.graphics.drawable.StateListDrawable;
 import android.provider.Settings;
 import android.util.AttributeSet;
-import android.util.StateSet;
-import android.view.Gravity;
 import android.view.PointerIcon;
 import android.view.View;
 import android.widget.ImageView;
@@ -45,7 +38,6 @@
 import androidx.preference.PreferenceViewHolder;
 
 import com.android.settings.R;
-import com.android.settingslib.Utils;
 
 
 public class PointerFillStylePreference extends Preference {
@@ -62,7 +54,7 @@
         super.onBindViewHolder(holder);
 
         mButtonHolder = (LinearLayout) holder.findViewById(R.id.button_holder);
-        // Intercept hover events so setting row does not highlight when hovering buttons.
+        // Intercept hover events so container does not highlight when hovering buttons.
         if (mButtonHolder != null) {
             mButtonHolder.setOnHoverListener((v, e) -> true);
         }
@@ -73,12 +65,14 @@
                 currentStyle);
         initStyleButton(holder, R.id.button_green, POINTER_ICON_VECTOR_STYLE_FILL_GREEN,
                 currentStyle);
-        initStyleButton(holder, R.id.button_yellow, POINTER_ICON_VECTOR_STYLE_FILL_YELLOW,
+        initStyleButton(holder, R.id.button_red, POINTER_ICON_VECTOR_STYLE_FILL_RED,
                 currentStyle);
         initStyleButton(holder, R.id.button_pink, POINTER_ICON_VECTOR_STYLE_FILL_PINK,
                 currentStyle);
         initStyleButton(holder, R.id.button_blue, POINTER_ICON_VECTOR_STYLE_FILL_BLUE,
                 currentStyle);
+        initStyleButton(holder, R.id.button_purple, POINTER_ICON_VECTOR_STYLE_FILL_PURPLE,
+                currentStyle);
     }
 
     private void initStyleButton(@NonNull PreferenceViewHolder holder, int id, int style,
@@ -90,70 +84,25 @@
         int[] attrs = {com.android.internal.R.attr.pointerIconVectorFill};
         try (TypedArray ta = getContext().obtainStyledAttributes(
                 PointerIcon.vectorFillStyleToResource(style), attrs)) {
-            button.setBackground(getBackgroundSelector(ta.getColor(0, Color.BLACK)));
+            button.getBackground().setTint(ta.getColor(0, Color.BLACK));
         }
-        button.setForeground(getForegroundDrawable(style, currentStyle));
-        button.setForegroundGravity(Gravity.CENTER);
         button.setOnClickListener(
                 (v) -> {
                     getPreferenceDataStore().putInt(Settings.System.POINTER_FILL_STYLE, style);
                     setButtonChecked(id);
                 });
+        button.setSelected(style == currentStyle);
         button.setPointerIcon(PointerIcon.getSystemIcon(getContext(), PointerIcon.TYPE_ARROW));
     }
 
-    // Generate background instead of defining in XML so we can use res color from the platform.
-    private StateListDrawable getBackgroundSelector(int color) {
-        StateListDrawable background = new StateListDrawable();
-        Resources res = getContext().getResources();
-        int ovalSize = res.getDimensionPixelSize(R.dimen.pointer_fill_style_circle_diameter);
-        background.setBounds(0, 0, ovalSize, ovalSize);
-
-        // Add hovered state first! The order states are added matters for a StateListDrawable.
-        GradientDrawable hoveredOval = new GradientDrawable();
-        hoveredOval.setColor(color);
-        int textColor = Utils.getColorAttr(getContext(),
-                com.android.internal.R.attr.materialColorOutline).getDefaultColor();
-        hoveredOval.setStroke(
-                res.getDimensionPixelSize(R.dimen.pointer_fill_style_shape_hovered_stroke),
-                textColor);
-        hoveredOval.setSize(ovalSize, ovalSize);
-        hoveredOval.setBounds(0, 0, ovalSize, ovalSize);
-        hoveredOval.setCornerRadius(ovalSize / 2f);
-        background.addState(new int[]{android.R.attr.state_hovered}, hoveredOval);
-
-        GradientDrawable defaultOval = new GradientDrawable();
-        defaultOval.setColor(color);
-        defaultOval.setStroke(
-                res.getDimensionPixelSize(R.dimen.pointer_fill_style_shape_default_stroke),
-                textColor);
-        defaultOval.setSize(ovalSize, ovalSize);
-        defaultOval.setBounds(0, 0, ovalSize, ovalSize);
-        defaultOval.setCornerRadius(ovalSize / 2f);
-        background.addState(StateSet.WILD_CARD, defaultOval);
-
-        return background;
-    }
-
-    private Drawable getForegroundDrawable(int style, int currentStyle) {
-        Resources res = getContext().getResources();
-        int ovalSize = res.getDimensionPixelSize(R.dimen.pointer_fill_style_circle_diameter);
-        Drawable checkMark = getContext().getDrawable(R.drawable.ic_check_24dp);
-        int padding = res.getDimensionPixelSize(R.dimen.pointer_fill_style_circle_padding) / 2;
-        checkMark.setBounds(padding, padding, ovalSize - padding, ovalSize - padding);
-        checkMark.setColorFilter(new BlendModeColorFilter(Color.WHITE, BlendMode.SRC_IN));
-        checkMark.setAlpha(style == currentStyle ? 255 : 0);
-        return checkMark;
-    }
-
     private void setButtonChecked(int id) {
         if (mButtonHolder == null) {
             return;
         }
         for (int i = 0; i < mButtonHolder.getChildCount(); i++) {
             View child = mButtonHolder.getChildAt(i);
-            if (child != null) {
-                child.getForeground().setAlpha(child.getId() == id ? 255 : 0);
+            if (child instanceof ImageView) {
+                child.setSelected(child.getId() == id);
             }
         }
     }