diff options
Diffstat (limited to 'tests/HwAccelerationTest/src')
-rw-r--r-- | tests/HwAccelerationTest/src/com/android/test/hwui/ViewLayersActivity5.java | 65 |
1 files changed, 57 insertions, 8 deletions
diff --git a/tests/HwAccelerationTest/src/com/android/test/hwui/ViewLayersActivity5.java b/tests/HwAccelerationTest/src/com/android/test/hwui/ViewLayersActivity5.java index 2664977..cbbb7ef 100644 --- a/tests/HwAccelerationTest/src/com/android/test/hwui/ViewLayersActivity5.java +++ b/tests/HwAccelerationTest/src/com/android/test/hwui/ViewLayersActivity5.java @@ -19,14 +19,18 @@ package com.android.test.hwui; import android.app.Activity; import android.content.Context; import android.content.res.Resources; +import android.graphics.Canvas; import android.graphics.Paint; +import android.graphics.Path; import android.graphics.PorterDuff; import android.graphics.PorterDuffColorFilter; import android.os.Bundle; +import android.util.AttributeSet; import android.util.DisplayMetrics; import android.view.View; import android.view.ViewGroup; import android.widget.ArrayAdapter; +import android.widget.FrameLayout; import android.widget.ListView; import android.widget.TextView; @@ -37,30 +41,75 @@ public class ViewLayersActivity5 extends Activity { @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); - + + init(); + setContentView(R.layout.view_layers_5); + setupList(R.id.list1); + } + + public static class ClipFrameLayout extends FrameLayout { + private final Path mClipPath = new Path(); + private boolean mClipEnabled; + + public ClipFrameLayout(Context context, AttributeSet attrs) { + super(context, attrs); + } + + public ClipFrameLayout(Context context, AttributeSet attrs, int defStyle) { + super(context, attrs, defStyle); + } + + public boolean isClipEnabled() { + return mClipEnabled; + } + public void setClipEnabled(boolean clipEnabled) { + mClipEnabled = clipEnabled; + invalidate(); + } + + @Override + protected void dispatchDraw(Canvas canvas) { + if (mClipEnabled) { + mClipPath.reset(); + mClipPath.addCircle(getWidth() / 2.0f, getHeight() / 2.0f, + Math.min(getWidth(), getHeight()) / 3.0f, Path.Direction.CW); + + canvas.clipPath(mClipPath); + } + super.dispatchDraw(canvas); + } + } + + private void init() { mPaint.setColorFilter(new PorterDuffColorFilter(0xff00ff00, PorterDuff.Mode.MULTIPLY)); + } - setupList(R.id.list1); + public void enableClip(View v) { + ((ClipFrameLayout) findViewById(R.id.container)).setClipEnabled(true); + } + + public void disableClip(View v) { + ((ClipFrameLayout) findViewById(R.id.container)).setClipEnabled(false); } public void enableLayer(View v) { - findViewById(R.id.list1).setLayerType(View.LAYER_TYPE_HARDWARE, mPaint); + findViewById(R.id.container).setLayerType(View.LAYER_TYPE_HARDWARE, mPaint); } public void disableLayer(View v) { - findViewById(R.id.list1).setLayerType(View.LAYER_TYPE_NONE, null); + findViewById(R.id.container).setLayerType(View.LAYER_TYPE_NONE, null); } public void growLayer(View v) { - findViewById(R.id.list1).getLayoutParams().height = ViewGroup.LayoutParams.MATCH_PARENT; - findViewById(R.id.list1).requestLayout(); + findViewById(R.id.container).getLayoutParams().height = ViewGroup.LayoutParams.MATCH_PARENT; + findViewById(R.id.container).requestLayout(); } public void shrinkLayer(View v) { - findViewById(R.id.list1).getLayoutParams().height = 300; - findViewById(R.id.list1).requestLayout(); + findViewById(R.id.container).getLayoutParams().height = 300; + findViewById(R.id.container).requestLayout(); } private void setupList(int listId) { |