summaryrefslogtreecommitdiffstats
path: root/tests/HwAccelerationTest
diff options
context:
space:
mode:
authorRomain Guy <romainguy@android.com>2010-06-26 00:13:53 -0700
committerRomain Guy <romainguy@android.com>2010-06-26 00:13:53 -0700
commitbd6b79b40247aea7bfe13d0831c6c0472df6c636 (patch)
tree71c913ec50df87a9463e30c8a28e5cb29e734c79 /tests/HwAccelerationTest
parent7ae7ac48aa2b53453c9805075171ecd5bcafd7de (diff)
downloadframeworks_base-bd6b79b40247aea7bfe13d0831c6c0472df6c636.zip
frameworks_base-bd6b79b40247aea7bfe13d0831c6c0472df6c636.tar.gz
frameworks_base-bd6b79b40247aea7bfe13d0831c6c0472df6c636.tar.bz2
Add implementations for saveLayerAlpha() and textured rects.
Even though there's an implementation for textured rects, drawBitmap() is not hooked up yet as it will require a good texture cache. This method is implemented using FBOs. There's currently an issue either in the driver or in the Canvas renderer that forces the FBO to be fullscreen, which is extremely expensive and yields terrible performance. Change-Id: I148419195e12d45653c60186938aa78c23a68e2c
Diffstat (limited to 'tests/HwAccelerationTest')
-rw-r--r--tests/HwAccelerationTest/src/com/google/android/test/hwui/HwUiActivity.java52
1 files changed, 47 insertions, 5 deletions
diff --git a/tests/HwAccelerationTest/src/com/google/android/test/hwui/HwUiActivity.java b/tests/HwAccelerationTest/src/com/google/android/test/hwui/HwUiActivity.java
index 14154a8..85e3997 100644
--- a/tests/HwAccelerationTest/src/com/google/android/test/hwui/HwUiActivity.java
+++ b/tests/HwAccelerationTest/src/com/google/android/test/hwui/HwUiActivity.java
@@ -22,7 +22,11 @@ import android.graphics.Canvas;
import android.graphics.Paint;
import android.os.Bundle;
import android.util.Log;
+import android.view.Gravity;
import android.view.View;
+import android.view.animation.AlphaAnimation;
+import android.view.animation.Animation;
+import android.widget.FrameLayout;
@SuppressWarnings({"UnusedDeclaration"})
public class HwUiActivity extends Activity {
@@ -32,7 +36,19 @@ public class HwUiActivity extends Activity {
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
- setContentView(new DirtyBitmapView(this));
+ DirtyBitmapView container = new DirtyBitmapView(this);
+
+ ColorView color = new ColorView(this);
+ container.addView(color, new DirtyBitmapView.LayoutParams(
+ dipToPx(this, 100), dipToPx(this, 100), Gravity.CENTER));
+
+ AlphaAnimation a = new AlphaAnimation(1.0f, 0.0f);
+ a.setDuration(2000);
+ a.setRepeatCount(Animation.INFINITE);
+ a.setRepeatMode(Animation.REVERSE);
+ color.startAnimation(a);
+
+ setContentView(container);
}
@SuppressWarnings({"UnusedDeclaration"})
@@ -40,7 +56,19 @@ public class HwUiActivity extends Activity {
return (int) (c.getResources().getDisplayMetrics().density * dip + 0.5f);
}
- static class DirtyBitmapView extends View {
+ static class ColorView extends View {
+ ColorView(Context c) {
+ super(c);
+ }
+
+ @Override
+ protected void onDraw(Canvas canvas) {
+ super.onDraw(canvas);
+ canvas.drawRGB(0, 255, 0);
+ }
+ }
+
+ static class DirtyBitmapView extends FrameLayout {
private final Paint mPaint;
DirtyBitmapView(Context c) {
@@ -49,9 +77,7 @@ public class HwUiActivity extends Activity {
}
@Override
- protected void onDraw(Canvas canvas) {
- super.onDraw(canvas);
-
+ public void dispatchDraw(Canvas canvas) {
canvas.drawRGB(255, 255, 255);
mPaint.setColor(0xffff0000);
@@ -86,6 +112,7 @@ public class HwUiActivity extends Activity {
Canvas.EdgeType.BW));
canvas.restore();
+ canvas.save();
canvas.scale(2.0f, 2.0f);
canvas.clipRect(20.0f, 0.0f, 40.0f, 20.0f);
@@ -94,6 +121,21 @@ public class HwUiActivity extends Activity {
mPaint.setColor(0xff0000ff);
canvas.drawRect(20.0f, 0.0f, 40.0f, 20.0f, mPaint);
+
+ canvas.restore();
+
+ final int restoreTo = canvas.save();
+ canvas.saveLayerAlpha(0.0f, 100.0f, getWidth(), 150.0f, 127,
+ Canvas.HAS_ALPHA_LAYER_SAVE_FLAG | Canvas.CLIP_TO_LAYER_SAVE_FLAG);
+ mPaint.setColor(0xff0000ff);
+ canvas.drawRect(0.0f, 100.0f, 40.0f, 150.0f, mPaint);
+ mPaint.setColor(0xff00ffff);
+ canvas.drawRect(40.0f, 100.0f, 140.0f, 150.0f, mPaint);
+ mPaint.setColor(0xffff00ff);
+ canvas.drawRect(140.0f, 100.0f, 240.0f, 150.0f, mPaint);
+ canvas.restoreToCount(restoreTo);
+
+ super.dispatchDraw(canvas);
}
}
}