Merge "Only call saveLayerAlpha when alpha is not at max or min values" into udc-dev
This commit is contained in:
committed by
Android (Google) Code Review
commit
653c10798f
@@ -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)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -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) {
|
||||||
|
|||||||
@@ -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)
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -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;
|
||||||
|
});
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user