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