101d58e43ede5ca98cbebdd166f9b0c545032c01bRomain Guy/* 201d58e43ede5ca98cbebdd166f9b0c545032c01bRomain Guy * Copyright (C) 2010 The Android Open Source Project 301d58e43ede5ca98cbebdd166f9b0c545032c01bRomain Guy * 401d58e43ede5ca98cbebdd166f9b0c545032c01bRomain Guy * Licensed under the Apache License, Version 2.0 (the "License"); 501d58e43ede5ca98cbebdd166f9b0c545032c01bRomain Guy * you may not use this file except in compliance with the License. 601d58e43ede5ca98cbebdd166f9b0c545032c01bRomain Guy * You may obtain a copy of the License at 701d58e43ede5ca98cbebdd166f9b0c545032c01bRomain Guy * 801d58e43ede5ca98cbebdd166f9b0c545032c01bRomain Guy * http://www.apache.org/licenses/LICENSE-2.0 901d58e43ede5ca98cbebdd166f9b0c545032c01bRomain Guy * 1001d58e43ede5ca98cbebdd166f9b0c545032c01bRomain Guy * Unless required by applicable law or agreed to in writing, software 1101d58e43ede5ca98cbebdd166f9b0c545032c01bRomain Guy * distributed under the License is distributed on an "AS IS" BASIS, 1201d58e43ede5ca98cbebdd166f9b0c545032c01bRomain Guy * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 1301d58e43ede5ca98cbebdd166f9b0c545032c01bRomain Guy * See the License for the specific language governing permissions and 1401d58e43ede5ca98cbebdd166f9b0c545032c01bRomain Guy * limitations under the License. 1501d58e43ede5ca98cbebdd166f9b0c545032c01bRomain Guy */ 1601d58e43ede5ca98cbebdd166f9b0c545032c01bRomain Guy 1701d58e43ede5ca98cbebdd166f9b0c545032c01bRomain Guypackage com.android.test.hwui; 1801d58e43ede5ca98cbebdd166f9b0c545032c01bRomain Guy 1901d58e43ede5ca98cbebdd166f9b0c545032c01bRomain Guyimport android.app.Activity; 2001d58e43ede5ca98cbebdd166f9b0c545032c01bRomain Guyimport android.content.Context; 2101d58e43ede5ca98cbebdd166f9b0c545032c01bRomain Guyimport android.graphics.Canvas; 2201d58e43ede5ca98cbebdd166f9b0c545032c01bRomain Guyimport android.graphics.Paint; 23c46d07a29e94807e768f8b162ce9f77a88ba6f46Romain Guyimport android.graphics.Path; 2401d58e43ede5ca98cbebdd166f9b0c545032c01bRomain Guyimport android.graphics.RectF; 2501d58e43ede5ca98cbebdd166f9b0c545032c01bRomain Guyimport android.os.Bundle; 2601d58e43ede5ca98cbebdd166f9b0c545032c01bRomain Guyimport android.view.View; 2701d58e43ede5ca98cbebdd166f9b0c545032c01bRomain Guy 2801d58e43ede5ca98cbebdd166f9b0c545032c01bRomain Guy@SuppressWarnings({"UnusedDeclaration"}) 2901d58e43ede5ca98cbebdd166f9b0c545032c01bRomain Guypublic class ShapesActivity extends Activity { 3001d58e43ede5ca98cbebdd166f9b0c545032c01bRomain Guy @Override 3101d58e43ede5ca98cbebdd166f9b0c545032c01bRomain Guy protected void onCreate(Bundle savedInstanceState) { 3201d58e43ede5ca98cbebdd166f9b0c545032c01bRomain Guy super.onCreate(savedInstanceState); 3301d58e43ede5ca98cbebdd166f9b0c545032c01bRomain Guy 3401d58e43ede5ca98cbebdd166f9b0c545032c01bRomain Guy setContentView(new ShapesView(this)); 3501d58e43ede5ca98cbebdd166f9b0c545032c01bRomain Guy } 3601d58e43ede5ca98cbebdd166f9b0c545032c01bRomain Guy 3701d58e43ede5ca98cbebdd166f9b0c545032c01bRomain Guy static class ShapesView extends View { 38c46d07a29e94807e768f8b162ce9f77a88ba6f46Romain Guy private final Paint mNormalPaint; 39c46d07a29e94807e768f8b162ce9f77a88ba6f46Romain Guy private final Paint mStrokePaint; 40c46d07a29e94807e768f8b162ce9f77a88ba6f46Romain Guy private final Paint mFillPaint; 41c46d07a29e94807e768f8b162ce9f77a88ba6f46Romain Guy private final RectF mRect; 42c46d07a29e94807e768f8b162ce9f77a88ba6f46Romain Guy private final RectF mOval; 43c46d07a29e94807e768f8b162ce9f77a88ba6f46Romain Guy private final RectF mArc; 44c46d07a29e94807e768f8b162ce9f77a88ba6f46Romain Guy private final Path mTriangle; 4501d58e43ede5ca98cbebdd166f9b0c545032c01bRomain Guy 4601d58e43ede5ca98cbebdd166f9b0c545032c01bRomain Guy ShapesView(Context c) { 4701d58e43ede5ca98cbebdd166f9b0c545032c01bRomain Guy super(c); 4801d58e43ede5ca98cbebdd166f9b0c545032c01bRomain Guy 4901d58e43ede5ca98cbebdd166f9b0c545032c01bRomain Guy mRect = new RectF(0.0f, 0.0f, 160.0f, 90.0f); 5001d58e43ede5ca98cbebdd166f9b0c545032c01bRomain Guy 5101d58e43ede5ca98cbebdd166f9b0c545032c01bRomain Guy mNormalPaint = new Paint(); 5201d58e43ede5ca98cbebdd166f9b0c545032c01bRomain Guy mNormalPaint.setAntiAlias(true); 5301d58e43ede5ca98cbebdd166f9b0c545032c01bRomain Guy mNormalPaint.setColor(0xff0000ff); 5401d58e43ede5ca98cbebdd166f9b0c545032c01bRomain Guy mNormalPaint.setStrokeWidth(6.0f); 5501d58e43ede5ca98cbebdd166f9b0c545032c01bRomain Guy mNormalPaint.setStyle(Paint.Style.FILL_AND_STROKE); 5601d58e43ede5ca98cbebdd166f9b0c545032c01bRomain Guy 5701d58e43ede5ca98cbebdd166f9b0c545032c01bRomain Guy mStrokePaint = new Paint(); 5801d58e43ede5ca98cbebdd166f9b0c545032c01bRomain Guy mStrokePaint.setAntiAlias(true); 5901d58e43ede5ca98cbebdd166f9b0c545032c01bRomain Guy mStrokePaint.setColor(0xff0000ff); 6001d58e43ede5ca98cbebdd166f9b0c545032c01bRomain Guy mStrokePaint.setStrokeWidth(6.0f); 6101d58e43ede5ca98cbebdd166f9b0c545032c01bRomain Guy mStrokePaint.setStyle(Paint.Style.STROKE); 6201d58e43ede5ca98cbebdd166f9b0c545032c01bRomain Guy 6301d58e43ede5ca98cbebdd166f9b0c545032c01bRomain Guy mFillPaint = new Paint(); 6401d58e43ede5ca98cbebdd166f9b0c545032c01bRomain Guy mFillPaint.setAntiAlias(true); 6501d58e43ede5ca98cbebdd166f9b0c545032c01bRomain Guy mFillPaint.setColor(0xff0000ff); 6601d58e43ede5ca98cbebdd166f9b0c545032c01bRomain Guy mFillPaint.setStyle(Paint.Style.FILL); 67c1cd9ba335b293f11e1082447ef08e474710a05fRomain Guy 68c1cd9ba335b293f11e1082447ef08e474710a05fRomain Guy mOval = new RectF(0.0f, 0.0f, 80.0f, 45.0f); 698b2f5267f16c295f12faab810527cd6311997e34Romain Guy mArc = new RectF(0.0f, 0.0f, 100.0f, 120.0f); 70c46d07a29e94807e768f8b162ce9f77a88ba6f46Romain Guy 71c46d07a29e94807e768f8b162ce9f77a88ba6f46Romain Guy mTriangle = new Path(); 72c46d07a29e94807e768f8b162ce9f77a88ba6f46Romain Guy mTriangle.moveTo(0.0f, 90.0f); 73c46d07a29e94807e768f8b162ce9f77a88ba6f46Romain Guy mTriangle.lineTo(45.0f, 0.0f); 74c46d07a29e94807e768f8b162ce9f77a88ba6f46Romain Guy mTriangle.lineTo(90.0f, 90.0f); 75c46d07a29e94807e768f8b162ce9f77a88ba6f46Romain Guy mTriangle.close(); 7601d58e43ede5ca98cbebdd166f9b0c545032c01bRomain Guy } 7701d58e43ede5ca98cbebdd166f9b0c545032c01bRomain Guy 7801d58e43ede5ca98cbebdd166f9b0c545032c01bRomain Guy @Override 7901d58e43ede5ca98cbebdd166f9b0c545032c01bRomain Guy protected void onDraw(Canvas canvas) { 8001d58e43ede5ca98cbebdd166f9b0c545032c01bRomain Guy super.onDraw(canvas); 8101d58e43ede5ca98cbebdd166f9b0c545032c01bRomain Guy 8201d58e43ede5ca98cbebdd166f9b0c545032c01bRomain Guy canvas.save(); 8301d58e43ede5ca98cbebdd166f9b0c545032c01bRomain Guy canvas.translate(50.0f, 50.0f); 8401d58e43ede5ca98cbebdd166f9b0c545032c01bRomain Guy canvas.drawRoundRect(mRect, 6.0f, 6.0f, mNormalPaint); 8501d58e43ede5ca98cbebdd166f9b0c545032c01bRomain Guy 8601d58e43ede5ca98cbebdd166f9b0c545032c01bRomain Guy canvas.translate(0.0f, 110.0f); 8701d58e43ede5ca98cbebdd166f9b0c545032c01bRomain Guy canvas.drawRoundRect(mRect, 6.0f, 6.0f, mStrokePaint); 8801d58e43ede5ca98cbebdd166f9b0c545032c01bRomain Guy 8901d58e43ede5ca98cbebdd166f9b0c545032c01bRomain Guy canvas.translate(0.0f, 110.0f); 9001d58e43ede5ca98cbebdd166f9b0c545032c01bRomain Guy canvas.drawRoundRect(mRect, 6.0f, 6.0f, mFillPaint); 9101d58e43ede5ca98cbebdd166f9b0c545032c01bRomain Guy canvas.restore(); 9201d58e43ede5ca98cbebdd166f9b0c545032c01bRomain Guy 9301d58e43ede5ca98cbebdd166f9b0c545032c01bRomain Guy canvas.save(); 9401d58e43ede5ca98cbebdd166f9b0c545032c01bRomain Guy canvas.translate(250.0f, 50.0f); 9501d58e43ede5ca98cbebdd166f9b0c545032c01bRomain Guy canvas.drawCircle(80.0f, 45.0f, 45.0f, mNormalPaint); 9601d58e43ede5ca98cbebdd166f9b0c545032c01bRomain Guy 9701d58e43ede5ca98cbebdd166f9b0c545032c01bRomain Guy canvas.translate(0.0f, 110.0f); 9801d58e43ede5ca98cbebdd166f9b0c545032c01bRomain Guy canvas.drawCircle(80.0f, 45.0f, 45.0f, mStrokePaint); 9901d58e43ede5ca98cbebdd166f9b0c545032c01bRomain Guy 10001d58e43ede5ca98cbebdd166f9b0c545032c01bRomain Guy canvas.translate(0.0f, 110.0f); 10101d58e43ede5ca98cbebdd166f9b0c545032c01bRomain Guy canvas.drawCircle(80.0f, 45.0f, 45.0f, mFillPaint); 10201d58e43ede5ca98cbebdd166f9b0c545032c01bRomain Guy canvas.restore(); 103c1cd9ba335b293f11e1082447ef08e474710a05fRomain Guy 104c1cd9ba335b293f11e1082447ef08e474710a05fRomain Guy canvas.save(); 105c1cd9ba335b293f11e1082447ef08e474710a05fRomain Guy canvas.translate(450.0f, 50.0f); 106c1cd9ba335b293f11e1082447ef08e474710a05fRomain Guy canvas.drawOval(mOval, mNormalPaint); 107c1cd9ba335b293f11e1082447ef08e474710a05fRomain Guy 108c1cd9ba335b293f11e1082447ef08e474710a05fRomain Guy canvas.translate(0.0f, 110.0f); 109c1cd9ba335b293f11e1082447ef08e474710a05fRomain Guy canvas.drawOval(mOval, mStrokePaint); 110c1cd9ba335b293f11e1082447ef08e474710a05fRomain Guy 111c1cd9ba335b293f11e1082447ef08e474710a05fRomain Guy canvas.translate(0.0f, 110.0f); 112c1cd9ba335b293f11e1082447ef08e474710a05fRomain Guy canvas.drawOval(mOval, mFillPaint); 113c1cd9ba335b293f11e1082447ef08e474710a05fRomain Guy canvas.restore(); 114c1cd9ba335b293f11e1082447ef08e474710a05fRomain Guy 115c1cd9ba335b293f11e1082447ef08e474710a05fRomain Guy canvas.save(); 1168b2f5267f16c295f12faab810527cd6311997e34Romain Guy canvas.translate(625.0f, 50.0f); 117c1cd9ba335b293f11e1082447ef08e474710a05fRomain Guy canvas.drawRect(0.0f, 0.0f, 160.0f, 90.0f, mNormalPaint); 118c1cd9ba335b293f11e1082447ef08e474710a05fRomain Guy 119c1cd9ba335b293f11e1082447ef08e474710a05fRomain Guy canvas.translate(0.0f, 110.0f); 120c1cd9ba335b293f11e1082447ef08e474710a05fRomain Guy canvas.drawRect(0.0f, 0.0f, 160.0f, 90.0f, mStrokePaint); 121c1cd9ba335b293f11e1082447ef08e474710a05fRomain Guy 122c1cd9ba335b293f11e1082447ef08e474710a05fRomain Guy canvas.translate(0.0f, 110.0f); 123c1cd9ba335b293f11e1082447ef08e474710a05fRomain Guy canvas.drawRect(0.0f, 0.0f, 160.0f, 90.0f, mFillPaint); 124c1cd9ba335b293f11e1082447ef08e474710a05fRomain Guy canvas.restore(); 1258b2f5267f16c295f12faab810527cd6311997e34Romain Guy 1268b2f5267f16c295f12faab810527cd6311997e34Romain Guy canvas.save(); 1278b2f5267f16c295f12faab810527cd6311997e34Romain Guy canvas.translate(825.0f, 50.0f); 1288b2f5267f16c295f12faab810527cd6311997e34Romain Guy canvas.drawArc(mArc, -30.0f, 70.0f, true, mNormalPaint); 1298b2f5267f16c295f12faab810527cd6311997e34Romain Guy 1308b2f5267f16c295f12faab810527cd6311997e34Romain Guy canvas.translate(0.0f, 110.0f); 1318b2f5267f16c295f12faab810527cd6311997e34Romain Guy canvas.drawArc(mArc, -30.0f, 70.0f, true, mStrokePaint); 1328b2f5267f16c295f12faab810527cd6311997e34Romain Guy 1338b2f5267f16c295f12faab810527cd6311997e34Romain Guy canvas.translate(0.0f, 110.0f); 1348b2f5267f16c295f12faab810527cd6311997e34Romain Guy canvas.drawArc(mArc, -30.0f, 70.0f, true, mFillPaint); 1358b2f5267f16c295f12faab810527cd6311997e34Romain Guy canvas.restore(); 1368b2f5267f16c295f12faab810527cd6311997e34Romain Guy 1378b2f5267f16c295f12faab810527cd6311997e34Romain Guy canvas.save(); 1388b2f5267f16c295f12faab810527cd6311997e34Romain Guy canvas.translate(950.0f, 50.0f); 1398b2f5267f16c295f12faab810527cd6311997e34Romain Guy canvas.drawArc(mArc, 30.0f, 100.0f, false, mNormalPaint); 1408b2f5267f16c295f12faab810527cd6311997e34Romain Guy 1418b2f5267f16c295f12faab810527cd6311997e34Romain Guy canvas.translate(0.0f, 110.0f); 1428b2f5267f16c295f12faab810527cd6311997e34Romain Guy canvas.drawArc(mArc, 30.0f, 100.0f, false, mStrokePaint); 1438b2f5267f16c295f12faab810527cd6311997e34Romain Guy 1448b2f5267f16c295f12faab810527cd6311997e34Romain Guy canvas.translate(0.0f, 110.0f); 1458b2f5267f16c295f12faab810527cd6311997e34Romain Guy canvas.drawArc(mArc, 30.0f, 100.0f, false, mFillPaint); 1468b2f5267f16c295f12faab810527cd6311997e34Romain Guy canvas.restore(); 147c46d07a29e94807e768f8b162ce9f77a88ba6f46Romain Guy 148c46d07a29e94807e768f8b162ce9f77a88ba6f46Romain Guy canvas.save(); 149c46d07a29e94807e768f8b162ce9f77a88ba6f46Romain Guy canvas.translate(50.0f, 400.0f); 150c46d07a29e94807e768f8b162ce9f77a88ba6f46Romain Guy canvas.drawPath(mTriangle, mNormalPaint); 151c46d07a29e94807e768f8b162ce9f77a88ba6f46Romain Guy 152c46d07a29e94807e768f8b162ce9f77a88ba6f46Romain Guy canvas.translate(110.0f, 0.0f); 153c46d07a29e94807e768f8b162ce9f77a88ba6f46Romain Guy canvas.drawPath(mTriangle, mStrokePaint); 154c46d07a29e94807e768f8b162ce9f77a88ba6f46Romain Guy 155c46d07a29e94807e768f8b162ce9f77a88ba6f46Romain Guy canvas.translate(110.0f, 0.0f); 156c46d07a29e94807e768f8b162ce9f77a88ba6f46Romain Guy canvas.drawPath(mTriangle, mFillPaint); 157c46d07a29e94807e768f8b162ce9f77a88ba6f46Romain Guy canvas.restore(); 15801d58e43ede5ca98cbebdd166f9b0c545032c01bRomain Guy } 15901d58e43ede5ca98cbebdd166f9b0c545032c01bRomain Guy } 16001d58e43ede5ca98cbebdd166f9b0c545032c01bRomain Guy} 161