diff --git a/packages/SystemUI/res/layout/dream_overlay_complication_clock_time.xml b/packages/SystemUI/res/layout/dream_overlay_complication_clock_time.xml
index 3bf44a4b85a41..6ba88a66977a3 100644
--- a/packages/SystemUI/res/layout/dream_overlay_complication_clock_time.xml
+++ b/packages/SystemUI/res/layout/dream_overlay_complication_clock_time.xml
@@ -14,7 +14,7 @@
~ See the License for the specific language governing permissions and
~ limitations under the License.
-->
-
diff --git a/packages/SystemUI/res/values/colors.xml b/packages/SystemUI/res/values/colors.xml
index 1eece4cee1791..db2ac436229fd 100644
--- a/packages/SystemUI/res/values/colors.xml
+++ b/packages/SystemUI/res/values/colors.xml
@@ -241,4 +241,6 @@
#AD1457
#880E4F
#BDC1C6
+ #4D000000
+ #4D000000
diff --git a/packages/SystemUI/res/values/dimens.xml b/packages/SystemUI/res/values/dimens.xml
index 229858413f99b..3bcde2d5345c7 100644
--- a/packages/SystemUI/res/values/dimens.xml
+++ b/packages/SystemUI/res/values/dimens.xml
@@ -1539,4 +1539,10 @@
16sp
44dp
16dp
+ 0dp
+ 0dp
+ 5dp
+ 0dp
+ 0dp
+ 1dp
diff --git a/packages/SystemUI/src/com/android/systemui/dreams/complication/DoubleShadowTextClock.java b/packages/SystemUI/src/com/android/systemui/dreams/complication/DoubleShadowTextClock.java
new file mode 100644
index 0000000000000..653f4dc662004
--- /dev/null
+++ b/packages/SystemUI/src/com/android/systemui/dreams/complication/DoubleShadowTextClock.java
@@ -0,0 +1,83 @@
+/*
+ * Copyright (C) 2022 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.
+ */
+
+package com.android.systemui.dreams.complication;
+
+import android.content.Context;
+import android.graphics.Canvas;
+import android.util.AttributeSet;
+import android.widget.TextClock;
+
+import com.android.systemui.R;
+
+/**
+ * Extension of {@link TextClock} which draws two shadows on the text (ambient and key shadows)
+ */
+public class DoubleShadowTextClock extends TextClock {
+ private final float mAmbientShadowBlur;
+ private final int mAmbientShadowColor;
+ private final float mKeyShadowBlur;
+ private final float mKeyShadowOffsetX;
+ private final float mKeyShadowOffsetY;
+ private final int mKeyShadowColor;
+ private final float mAmbientShadowOffsetX;
+ private final float mAmbientShadowOffsetY;
+
+ public DoubleShadowTextClock(Context context) {
+ this(context, null);
+ }
+
+ public DoubleShadowTextClock(Context context, AttributeSet attrs) {
+ this(context, attrs, 0);
+ }
+
+ public DoubleShadowTextClock(Context context, AttributeSet attrs, int defStyle) {
+ super(context, attrs, defStyle);
+ mKeyShadowBlur = context.getResources()
+ .getDimensionPixelSize(R.dimen.dream_overlay_clock_key_text_shadow_radius);
+ mKeyShadowOffsetX = context.getResources()
+ .getDimensionPixelSize(R.dimen.dream_overlay_clock_key_text_shadow_dx);
+ mKeyShadowOffsetY = context.getResources()
+ .getDimensionPixelSize(R.dimen.dream_overlay_clock_key_text_shadow_dy);
+ mKeyShadowColor = context.getResources().getColor(
+ R.color.dream_overlay_clock_key_text_shadow_color);
+ mAmbientShadowBlur = context.getResources()
+ .getDimensionPixelSize(R.dimen.dream_overlay_clock_ambient_text_shadow_radius);
+ mAmbientShadowColor = context.getResources().getColor(
+ R.color.dream_overlay_clock_ambient_text_shadow_color);
+ mAmbientShadowOffsetX = context.getResources()
+ .getDimensionPixelSize(R.dimen.dream_overlay_clock_ambient_text_shadow_dx);
+ mAmbientShadowOffsetY = context.getResources()
+ .getDimensionPixelSize(R.dimen.dream_overlay_clock_ambient_text_shadow_dy);
+ }
+
+ @Override
+ public void onDraw(Canvas canvas) {
+ // We enhance the shadow by drawing the shadow twice
+ getPaint().setShadowLayer(mAmbientShadowBlur, mAmbientShadowOffsetX, mAmbientShadowOffsetY,
+ mAmbientShadowColor);
+ super.onDraw(canvas);
+ canvas.save();
+ canvas.clipRect(getScrollX(), getScrollY() + getExtendedPaddingTop(),
+ getScrollX() + getWidth(),
+ getScrollY() + getHeight());
+
+ getPaint().setShadowLayer(
+ mKeyShadowBlur, mKeyShadowOffsetX, mKeyShadowOffsetY, mKeyShadowColor);
+ super.onDraw(canvas);
+ canvas.restore();
+ }
+}