1f504a2fa144504ca1efd39a4ef9208e3d4d336c5Romain Guy/* 2f504a2fa144504ca1efd39a4ef9208e3d4d336c5Romain Guy * Copyright (C) 2010 The Android Open Source Project 3f504a2fa144504ca1efd39a4ef9208e3d4d336c5Romain Guy * 4f504a2fa144504ca1efd39a4ef9208e3d4d336c5Romain Guy * Licensed under the Apache License, Version 2.0 (the "License"); 5f504a2fa144504ca1efd39a4ef9208e3d4d336c5Romain Guy * you may not use this file except in compliance with the License. 6f504a2fa144504ca1efd39a4ef9208e3d4d336c5Romain Guy * You may obtain a copy of the License at 7f504a2fa144504ca1efd39a4ef9208e3d4d336c5Romain Guy * 8f504a2fa144504ca1efd39a4ef9208e3d4d336c5Romain Guy * http://www.apache.org/licenses/LICENSE-2.0 9f504a2fa144504ca1efd39a4ef9208e3d4d336c5Romain Guy * 10f504a2fa144504ca1efd39a4ef9208e3d4d336c5Romain Guy * Unless required by applicable law or agreed to in writing, software 11f504a2fa144504ca1efd39a4ef9208e3d4d336c5Romain Guy * distributed under the License is distributed on an "AS IS" BASIS, 12f504a2fa144504ca1efd39a4ef9208e3d4d336c5Romain Guy * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13f504a2fa144504ca1efd39a4ef9208e3d4d336c5Romain Guy * See the License for the specific language governing permissions and 14f504a2fa144504ca1efd39a4ef9208e3d4d336c5Romain Guy * limitations under the License. 15f504a2fa144504ca1efd39a4ef9208e3d4d336c5Romain Guy */ 16f504a2fa144504ca1efd39a4ef9208e3d4d336c5Romain Guy 17f504a2fa144504ca1efd39a4ef9208e3d4d336c5Romain Guypackage com.android.test.hwui; 18f504a2fa144504ca1efd39a4ef9208e3d4d336c5Romain Guy 19f504a2fa144504ca1efd39a4ef9208e3d4d336c5Romain Guyimport android.app.Activity; 20f504a2fa144504ca1efd39a4ef9208e3d4d336c5Romain Guyimport android.content.Context; 21f504a2fa144504ca1efd39a4ef9208e3d4d336c5Romain Guyimport android.graphics.Bitmap; 22f504a2fa144504ca1efd39a4ef9208e3d4d336c5Romain Guyimport android.graphics.BitmapFactory; 23f504a2fa144504ca1efd39a4ef9208e3d4d336c5Romain Guyimport android.graphics.Canvas; 24f504a2fa144504ca1efd39a4ef9208e3d4d336c5Romain Guyimport android.graphics.Paint; 25f504a2fa144504ca1efd39a4ef9208e3d4d336c5Romain Guyimport android.graphics.Path; 26f504a2fa144504ca1efd39a4ef9208e3d4d336c5Romain Guyimport android.graphics.PorterDuff; 27f504a2fa144504ca1efd39a4ef9208e3d4d336c5Romain Guyimport android.graphics.PorterDuffXfermode; 28f504a2fa144504ca1efd39a4ef9208e3d4d336c5Romain Guyimport android.os.Bundle; 29f504a2fa144504ca1efd39a4ef9208e3d4d336c5Romain Guyimport android.view.View; 30f504a2fa144504ca1efd39a4ef9208e3d4d336c5Romain Guy 31f504a2fa144504ca1efd39a4ef9208e3d4d336c5Romain Guy@SuppressWarnings({"UnusedDeclaration"}) 32f504a2fa144504ca1efd39a4ef9208e3d4d336c5Romain Guypublic class ClearActivity extends Activity { 33f504a2fa144504ca1efd39a4ef9208e3d4d336c5Romain Guy @Override 34f504a2fa144504ca1efd39a4ef9208e3d4d336c5Romain Guy protected void onCreate(Bundle savedInstanceState) { 35f504a2fa144504ca1efd39a4ef9208e3d4d336c5Romain Guy super.onCreate(savedInstanceState); 36f504a2fa144504ca1efd39a4ef9208e3d4d336c5Romain Guy final PathsView view = new PathsView(this); 37f504a2fa144504ca1efd39a4ef9208e3d4d336c5Romain Guy setContentView(view); 38f504a2fa144504ca1efd39a4ef9208e3d4d336c5Romain Guy } 39f504a2fa144504ca1efd39a4ef9208e3d4d336c5Romain Guy 40f504a2fa144504ca1efd39a4ef9208e3d4d336c5Romain Guy public static class PathsView extends View { 41f504a2fa144504ca1efd39a4ef9208e3d4d336c5Romain Guy private final Bitmap mBitmap1; 42f504a2fa144504ca1efd39a4ef9208e3d4d336c5Romain Guy private final Paint mClearPaint; 43f504a2fa144504ca1efd39a4ef9208e3d4d336c5Romain Guy private final Path mPath; 44f504a2fa144504ca1efd39a4ef9208e3d4d336c5Romain Guy 45f504a2fa144504ca1efd39a4ef9208e3d4d336c5Romain Guy public PathsView(Context c) { 46f504a2fa144504ca1efd39a4ef9208e3d4d336c5Romain Guy super(c); 47f504a2fa144504ca1efd39a4ef9208e3d4d336c5Romain Guy 48f504a2fa144504ca1efd39a4ef9208e3d4d336c5Romain Guy mBitmap1 = BitmapFactory.decodeResource(c.getResources(), R.drawable.sunset2); 49f504a2fa144504ca1efd39a4ef9208e3d4d336c5Romain Guy 50f504a2fa144504ca1efd39a4ef9208e3d4d336c5Romain Guy mClearPaint = new Paint(); 51f504a2fa144504ca1efd39a4ef9208e3d4d336c5Romain Guy mClearPaint.setXfermode(new PorterDuffXfermode(PorterDuff.Mode.CLEAR)); 52f504a2fa144504ca1efd39a4ef9208e3d4d336c5Romain Guy mClearPaint.setAntiAlias(true); 53f09ef51889f75289b041f9e9f949b7b82ed5b686Romain Guy mClearPaint.setColor(0x0000ff00); 54f504a2fa144504ca1efd39a4ef9208e3d4d336c5Romain Guy mClearPaint.setStrokeWidth(15.0f); 55f504a2fa144504ca1efd39a4ef9208e3d4d336c5Romain Guy mClearPaint.setStyle(Paint.Style.FILL); 56f504a2fa144504ca1efd39a4ef9208e3d4d336c5Romain Guy mClearPaint.setTextSize(32.0f); 57f504a2fa144504ca1efd39a4ef9208e3d4d336c5Romain Guy 58f504a2fa144504ca1efd39a4ef9208e3d4d336c5Romain Guy mPath = new Path(); 59f504a2fa144504ca1efd39a4ef9208e3d4d336c5Romain Guy mPath.moveTo(0.0f, 0.0f); 60f504a2fa144504ca1efd39a4ef9208e3d4d336c5Romain Guy mPath.cubicTo(0.0f, 0.0f, 100.0f, 150.0f, 100.0f, 200.0f); 61f504a2fa144504ca1efd39a4ef9208e3d4d336c5Romain Guy mPath.cubicTo(100.0f, 200.0f, 50.0f, 300.0f, -80.0f, 200.0f); 62f504a2fa144504ca1efd39a4ef9208e3d4d336c5Romain Guy mPath.cubicTo(-80.0f, 200.0f, 100.0f, 200.0f, 200.0f, 0.0f); 63f504a2fa144504ca1efd39a4ef9208e3d4d336c5Romain Guy 64f504a2fa144504ca1efd39a4ef9208e3d4d336c5Romain Guy } 65f504a2fa144504ca1efd39a4ef9208e3d4d336c5Romain Guy 66f504a2fa144504ca1efd39a4ef9208e3d4d336c5Romain Guy @Override 67f504a2fa144504ca1efd39a4ef9208e3d4d336c5Romain Guy protected void onDraw(Canvas canvas) { 68f504a2fa144504ca1efd39a4ef9208e3d4d336c5Romain Guy super.onDraw(canvas); 69f504a2fa144504ca1efd39a4ef9208e3d4d336c5Romain Guy 70f504a2fa144504ca1efd39a4ef9208e3d4d336c5Romain Guy canvas.save(); { 71f504a2fa144504ca1efd39a4ef9208e3d4d336c5Romain Guy canvas.drawARGB(255, 255, 255, 255); 72f504a2fa144504ca1efd39a4ef9208e3d4d336c5Romain Guy canvas.drawRect(100.0f, 100.0f, 200.0f, 200.0f, mClearPaint); 73f504a2fa144504ca1efd39a4ef9208e3d4d336c5Romain Guy canvas.drawCircle(150.0f, 400.0f, 100.0f, mClearPaint); 74f504a2fa144504ca1efd39a4ef9208e3d4d336c5Romain Guy canvas.drawBitmap(mBitmap1, 400.0f, 100.0f, mClearPaint); 75f504a2fa144504ca1efd39a4ef9208e3d4d336c5Romain Guy canvas.save(); { 76f504a2fa144504ca1efd39a4ef9208e3d4d336c5Romain Guy canvas.translate(400.0f, 400.0f); 77f504a2fa144504ca1efd39a4ef9208e3d4d336c5Romain Guy canvas.drawPath(mPath, mClearPaint); 78f504a2fa144504ca1efd39a4ef9208e3d4d336c5Romain Guy } 79f504a2fa144504ca1efd39a4ef9208e3d4d336c5Romain Guy canvas.restore(); 80f504a2fa144504ca1efd39a4ef9208e3d4d336c5Romain Guy canvas.drawText("OpenGLRenderer", 50.0f, 50.0f, mClearPaint); 8154be1cdf3d63095512120fa7ced5c16e462abffaRomain Guy mClearPaint.setColor(0xff000000); 8254be1cdf3d63095512120fa7ced5c16e462abffaRomain Guy canvas.drawRect(800.0f, 100.0f, 900.0f, 200.0f, mClearPaint); 8354be1cdf3d63095512120fa7ced5c16e462abffaRomain Guy mClearPaint.setColor(0x0000ff00); 84f504a2fa144504ca1efd39a4ef9208e3d4d336c5Romain Guy } 85f504a2fa144504ca1efd39a4ef9208e3d4d336c5Romain Guy canvas.restore(); 86f504a2fa144504ca1efd39a4ef9208e3d4d336c5Romain Guy } 87f504a2fa144504ca1efd39a4ef9208e3d4d336c5Romain Guy } 88f504a2fa144504ca1efd39a4ef9208e3d4d336c5Romain Guy} 89