diff --git a/packages/SystemUI/res-keyguard/layout/keyguard_clock_switch.xml b/packages/SystemUI/res-keyguard/layout/keyguard_clock_switch.xml
index 4b9470728dc64..3fc0965f4a813 100644
--- a/packages/SystemUI/res-keyguard/layout/keyguard_clock_switch.xml
+++ b/packages/SystemUI/res-keyguard/layout/keyguard_clock_switch.xml
@@ -25,7 +25,7 @@
android:layout_height="wrap_content"
android:clipChildren="false"
android:layout_gravity="center_horizontal|top">
-
-
-
-
+
diff --git a/packages/SystemUI/src/com/android/keyguard/KeyguardClockFrame.kt b/packages/SystemUI/src/com/android/keyguard/KeyguardClockFrame.kt
new file mode 100644
index 0000000000000..d821d309adde7
--- /dev/null
+++ b/packages/SystemUI/src/com/android/keyguard/KeyguardClockFrame.kt
@@ -0,0 +1,39 @@
+package com.android.keyguard
+
+import android.content.Context
+import android.graphics.Canvas
+import android.util.AttributeSet
+import android.view.View
+import android.widget.FrameLayout
+
+class KeyguardClockFrame(
+ context: Context,
+ attrs: AttributeSet,
+) : FrameLayout(context, attrs) {
+ private var drawAlpha: Int = 255
+
+ protected override fun onSetAlpha(alpha: Int): Boolean {
+ drawAlpha = alpha
+ return true
+ }
+
+ protected override fun dispatchDraw(canvas: Canvas) {
+ val restoreTo = saveCanvasAlpha(this, canvas, drawAlpha)
+ super.dispatchDraw(canvas)
+ canvas.restoreToCount(restoreTo)
+ }
+
+ companion object {
+ @JvmStatic
+ fun saveCanvasAlpha(view: View, canvas: Canvas, alpha: Int): Int {
+ var (x, y) =
+ run {
+ val locationOnScreen = IntArray(2)
+ view.getLocationOnScreen(locationOnScreen)
+ Pair(locationOnScreen[0].toFloat(), locationOnScreen[1].toFloat())
+ }
+
+ return canvas.saveLayerAlpha(-1f * x, -1f * y, x + view.width, y + view.height, alpha)
+ }
+ }
+}
diff --git a/packages/SystemUI/src/com/android/keyguard/KeyguardClockSwitch.java b/packages/SystemUI/src/com/android/keyguard/KeyguardClockSwitch.java
index 644a9bcdd588f..05a8f9fc9ae2d 100644
--- a/packages/SystemUI/src/com/android/keyguard/KeyguardClockSwitch.java
+++ b/packages/SystemUI/src/com/android/keyguard/KeyguardClockSwitch.java
@@ -5,11 +5,11 @@ import android.animation.AnimatorListenerAdapter;
import android.animation.AnimatorSet;
import android.animation.ObjectAnimator;
import android.content.Context;
+import android.graphics.Canvas;
import android.graphics.Rect;
import android.util.AttributeSet;
import android.view.View;
import android.view.ViewGroup;
-import android.widget.FrameLayout;
import android.widget.RelativeLayout;
import androidx.annotation.IntDef;
@@ -69,12 +69,13 @@ public class KeyguardClockSwitch extends RelativeLayout {
/**
* Frame for small/large clocks
*/
- private FrameLayout mSmallClockFrame;
- private FrameLayout mLargeClockFrame;
+ private KeyguardClockFrame mSmallClockFrame;
+ private KeyguardClockFrame mLargeClockFrame;
private ClockController mClock;
private View mStatusArea;
private int mSmartspaceTopOffset;
+ private int mDrawAlpha = 255;
/**
* Maintain state so that a newly connected plugin can be initialized.
@@ -121,6 +122,19 @@ public class KeyguardClockSwitch extends RelativeLayout {
onDensityOrFontScaleChanged();
}
+ @Override
+ protected boolean onSetAlpha(int alpha) {
+ mDrawAlpha = alpha;
+ return true;
+ }
+
+ @Override
+ protected void dispatchDraw(Canvas canvas) {
+ int restoreTo = KeyguardClockFrame.saveCanvasAlpha(this, canvas, mDrawAlpha);
+ super.dispatchDraw(canvas);
+ canvas.restoreToCount(restoreTo);
+ }
+
public void setLogBuffer(LogBuffer logBuffer) {
mLogBuffer = logBuffer;
}
diff --git a/packages/SystemUI/src/com/android/keyguard/KeyguardClockSwitchController.java b/packages/SystemUI/src/com/android/keyguard/KeyguardClockSwitchController.java
index 676f342775efa..d8bf570954df6 100644
--- a/packages/SystemUI/src/com/android/keyguard/KeyguardClockSwitchController.java
+++ b/packages/SystemUI/src/com/android/keyguard/KeyguardClockSwitchController.java
@@ -178,20 +178,6 @@ public class KeyguardClockSwitchController extends ViewController