summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--packages/SystemUI/src/com/android/keyguard/KeyguardClockFrame.kt23
-rw-r--r--packages/SystemUI/src/com/android/keyguard/KeyguardClockSwitch.java9
-rw-r--r--packages/SystemUI/src/com/android/keyguard/KeyguardStatusContainer.kt4
-rw-r--r--packages/SystemUI/src/com/android/keyguard/KeyguardStatusView.java9
4 files changed, 31 insertions, 14 deletions
diff --git a/packages/SystemUI/src/com/android/keyguard/KeyguardClockFrame.kt b/packages/SystemUI/src/com/android/keyguard/KeyguardClockFrame.kt
index d821d309adde..635f0fa44234 100644
--- a/packages/SystemUI/src/com/android/keyguard/KeyguardClockFrame.kt
+++ b/packages/SystemUI/src/com/android/keyguard/KeyguardClockFrame.kt
@@ -18,14 +18,24 @@ class KeyguardClockFrame(
}
protected override fun dispatchDraw(canvas: Canvas) {
- val restoreTo = saveCanvasAlpha(this, canvas, drawAlpha)
- super.dispatchDraw(canvas)
- canvas.restoreToCount(restoreTo)
+ saveCanvasAlpha(this, canvas, drawAlpha) { super.dispatchDraw(it) }
}
companion object {
@JvmStatic
- fun saveCanvasAlpha(view: View, canvas: Canvas, alpha: Int): Int {
+ fun saveCanvasAlpha(view: View, canvas: Canvas, alpha: Int, drawFunc: (Canvas) -> Unit) {
+ if (alpha <= 0) {
+ // Zero Alpha -> skip drawing phase
+ return
+ }
+
+ if (alpha >= 255) {
+ // Max alpha -> no need for layer
+ drawFunc(canvas)
+ return
+ }
+
+ // Find x & y of view on screen
var (x, y) =
run {
val locationOnScreen = IntArray(2)
@@ -33,7 +43,10 @@ class KeyguardClockFrame(
Pair(locationOnScreen[0].toFloat(), locationOnScreen[1].toFloat())
}
- return canvas.saveLayerAlpha(-1f * x, -1f * y, x + view.width, y + view.height, alpha)
+ val restoreTo =
+ canvas.saveLayerAlpha(-1f * x, -1f * y, x + view.width, y + view.height, alpha)
+ drawFunc(canvas)
+ canvas.restoreToCount(restoreTo)
}
}
}
diff --git a/packages/SystemUI/src/com/android/keyguard/KeyguardClockSwitch.java b/packages/SystemUI/src/com/android/keyguard/KeyguardClockSwitch.java
index 05a8f9fc9ae2..e54d4739dc97 100644
--- a/packages/SystemUI/src/com/android/keyguard/KeyguardClockSwitch.java
+++ b/packages/SystemUI/src/com/android/keyguard/KeyguardClockSwitch.java
@@ -130,9 +130,12 @@ public class KeyguardClockSwitch extends RelativeLayout {
@Override
protected void dispatchDraw(Canvas canvas) {
- int restoreTo = KeyguardClockFrame.saveCanvasAlpha(this, canvas, mDrawAlpha);
- super.dispatchDraw(canvas);
- canvas.restoreToCount(restoreTo);
+ KeyguardClockFrame.saveCanvasAlpha(
+ this, canvas, mDrawAlpha,
+ c -> {
+ super.dispatchDraw(c);
+ return kotlin.Unit.INSTANCE;
+ });
}
public void setLogBuffer(LogBuffer logBuffer) {
diff --git a/packages/SystemUI/src/com/android/keyguard/KeyguardStatusContainer.kt b/packages/SystemUI/src/com/android/keyguard/KeyguardStatusContainer.kt
index d885892ec0ab..298eff27060b 100644
--- a/packages/SystemUI/src/com/android/keyguard/KeyguardStatusContainer.kt
+++ b/packages/SystemUI/src/com/android/keyguard/KeyguardStatusContainer.kt
@@ -17,8 +17,6 @@ class KeyguardStatusContainer(
}
protected override fun dispatchDraw(canvas: Canvas) {
- val restoreTo = KeyguardClockFrame.saveCanvasAlpha(this, canvas, drawAlpha)
- super.dispatchDraw(canvas)
- canvas.restoreToCount(restoreTo)
+ KeyguardClockFrame.saveCanvasAlpha(this, canvas, drawAlpha) { super.dispatchDraw(canvas) }
}
}
diff --git a/packages/SystemUI/src/com/android/keyguard/KeyguardStatusView.java b/packages/SystemUI/src/com/android/keyguard/KeyguardStatusView.java
index 553af5b8fa41..a6252a39ee8a 100644
--- a/packages/SystemUI/src/com/android/keyguard/KeyguardStatusView.java
+++ b/packages/SystemUI/src/com/android/keyguard/KeyguardStatusView.java
@@ -146,8 +146,11 @@ public class KeyguardStatusView extends GridLayout {
@Override
protected void dispatchDraw(Canvas canvas) {
- int restoreTo = KeyguardClockFrame.saveCanvasAlpha(this, canvas, mDrawAlpha);
- super.dispatchDraw(canvas);
- canvas.restoreToCount(restoreTo);
+ KeyguardClockFrame.saveCanvasAlpha(
+ this, canvas, mDrawAlpha,
+ c -> {
+ super.dispatchDraw(c);
+ return kotlin.Unit.INSTANCE;
+ });
}
}