Merge "Only call saveLayerAlpha when alpha is not at max or min values" into udc-dev

This commit is contained in:
Hawkwood Glazier
2023-05-16 20:55:28 +00:00
committed by Android (Google) Code Review
4 changed files with 31 additions and 14 deletions

View File

@@ -18,14 +18,24 @@ class KeyguardClockFrame(
} }
protected override fun dispatchDraw(canvas: Canvas) { protected override fun dispatchDraw(canvas: Canvas) {
val restoreTo = saveCanvasAlpha(this, canvas, drawAlpha) saveCanvasAlpha(this, canvas, drawAlpha) { super.dispatchDraw(it) }
super.dispatchDraw(canvas)
canvas.restoreToCount(restoreTo)
} }
companion object { companion object {
@JvmStatic @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) = var (x, y) =
run { run {
val locationOnScreen = IntArray(2) val locationOnScreen = IntArray(2)
@@ -33,7 +43,10 @@ class KeyguardClockFrame(
Pair(locationOnScreen[0].toFloat(), locationOnScreen[1].toFloat()) 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)
} }
} }
} }

View File

@@ -130,9 +130,12 @@ public class KeyguardClockSwitch extends RelativeLayout {
@Override @Override
protected void dispatchDraw(Canvas canvas) { protected void dispatchDraw(Canvas canvas) {
int restoreTo = KeyguardClockFrame.saveCanvasAlpha(this, canvas, mDrawAlpha); KeyguardClockFrame.saveCanvasAlpha(
super.dispatchDraw(canvas); this, canvas, mDrawAlpha,
canvas.restoreToCount(restoreTo); c -> {
super.dispatchDraw(c);
return kotlin.Unit.INSTANCE;
});
} }
public void setLogBuffer(LogBuffer logBuffer) { public void setLogBuffer(LogBuffer logBuffer) {

View File

@@ -17,8 +17,6 @@ class KeyguardStatusContainer(
} }
protected override fun dispatchDraw(canvas: Canvas) { protected override fun dispatchDraw(canvas: Canvas) {
val restoreTo = KeyguardClockFrame.saveCanvasAlpha(this, canvas, drawAlpha) KeyguardClockFrame.saveCanvasAlpha(this, canvas, drawAlpha) { super.dispatchDraw(canvas) }
super.dispatchDraw(canvas)
canvas.restoreToCount(restoreTo)
} }
} }

View File

@@ -146,8 +146,11 @@ public class KeyguardStatusView extends GridLayout {
@Override @Override
protected void dispatchDraw(Canvas canvas) { protected void dispatchDraw(Canvas canvas) {
int restoreTo = KeyguardClockFrame.saveCanvasAlpha(this, canvas, mDrawAlpha); KeyguardClockFrame.saveCanvasAlpha(
super.dispatchDraw(canvas); this, canvas, mDrawAlpha,
canvas.restoreToCount(restoreTo); c -> {
super.dispatchDraw(c);
return kotlin.Unit.INSTANCE;
});
} }
} }