From 2ccaf6a448408d3504a4b1cd4c47a9a2b66499cf Mon Sep 17 00:00:00 2001 From: John Reck Date: Thu, 26 May 2016 14:36:42 -0700 Subject: [PATCH] Change overdraw test to use windowbackground Bug: 28786023 Fixes an issue where the first couple frames would be extremely slow due to the simpleness of HWUI's overdraw rejection optimization. Change-Id: I1fe3d83f7e2e0eb3299124b00b9f877c2c3aebf9 --- .../uibench/FullscreenOverdrawActivity.java | 36 +++++++++++++------ 1 file changed, 25 insertions(+), 11 deletions(-) diff --git a/tests/UiBench/src/com/android/test/uibench/FullscreenOverdrawActivity.java b/tests/UiBench/src/com/android/test/uibench/FullscreenOverdrawActivity.java index f1ecc5624d577..b9c5fac96a3eb 100644 --- a/tests/UiBench/src/com/android/test/uibench/FullscreenOverdrawActivity.java +++ b/tests/UiBench/src/com/android/test/uibench/FullscreenOverdrawActivity.java @@ -19,8 +19,11 @@ import android.animation.ObjectAnimator; import android.animation.ValueAnimator; import android.content.Context; import android.graphics.Canvas; +import android.graphics.ColorFilter; +import android.graphics.PixelFormat; import android.graphics.Color; import android.graphics.Paint; +import android.graphics.drawable.Drawable; import android.os.Bundle; import android.support.v7.app.AppCompatActivity; import android.view.View; @@ -31,37 +34,48 @@ import android.view.View; * This should all be optimized out by the renderer. */ public class FullscreenOverdrawActivity extends AppCompatActivity { - private class OverdrawView extends View { + private class OverdrawDrawable extends Drawable { Paint paint = new Paint(); int mColorValue = 0; - public OverdrawView(Context context) { - super(context); - } - @SuppressWarnings("unused") public void setColorValue(int colorValue) { mColorValue = colorValue; - invalidate(); + invalidateSelf(); } @Override - protected void onDraw(Canvas canvas) { + public void draw(Canvas canvas) { paint.setColor(Color.rgb(mColorValue, 255 - mColorValue, 255)); for (int i = 0; i < 400; i++) { - canvas.drawRect(0, 0, getWidth(), getHeight(), paint); + canvas.drawRect(getBounds(), paint); } } + + @Override + public void setAlpha(int alpha) { + } + + @Override + public void setColorFilter(ColorFilter colorFilter) { + } + + @Override + public int getOpacity() { + return PixelFormat.OPAQUE; + } } @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); - OverdrawView overdrawView = new OverdrawView(this); - setContentView(overdrawView); + OverdrawDrawable overdraw = new OverdrawDrawable(); + getWindow().setBackgroundDrawable(overdraw); - ObjectAnimator objectAnimator = ObjectAnimator.ofInt(overdrawView, "colorValue", 0, 255); + setContentView(new View(this)); + + ObjectAnimator objectAnimator = ObjectAnimator.ofInt(overdraw, "colorValue", 0, 255); objectAnimator.setRepeatMode(ValueAnimator.REVERSE); objectAnimator.setRepeatCount(ValueAnimator.INFINITE); objectAnimator.start();