LinesActivity.java revision 529b60a3b16ac3dff24f2403d760ab8ebc9670ff
1529b60a3b16ac3dff24f2403d760ab8ebc9670ffRomain Guy/*
2529b60a3b16ac3dff24f2403d760ab8ebc9670ffRomain Guy * Copyright (C) 2010 The Android Open Source Project
3529b60a3b16ac3dff24f2403d760ab8ebc9670ffRomain Guy *
4529b60a3b16ac3dff24f2403d760ab8ebc9670ffRomain Guy * Licensed under the Apache License, Version 2.0 (the "License");
5529b60a3b16ac3dff24f2403d760ab8ebc9670ffRomain Guy * you may not use this file except in compliance with the License.
6529b60a3b16ac3dff24f2403d760ab8ebc9670ffRomain Guy * You may obtain a copy of the License at
7529b60a3b16ac3dff24f2403d760ab8ebc9670ffRomain Guy *
8529b60a3b16ac3dff24f2403d760ab8ebc9670ffRomain Guy *      http://www.apache.org/licenses/LICENSE-2.0
9529b60a3b16ac3dff24f2403d760ab8ebc9670ffRomain Guy *
10529b60a3b16ac3dff24f2403d760ab8ebc9670ffRomain Guy * Unless required by applicable law or agreed to in writing, software
11529b60a3b16ac3dff24f2403d760ab8ebc9670ffRomain Guy * distributed under the License is distributed on an "AS IS" BASIS,
12529b60a3b16ac3dff24f2403d760ab8ebc9670ffRomain Guy * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13529b60a3b16ac3dff24f2403d760ab8ebc9670ffRomain Guy * See the License for the specific language governing permissions and
14529b60a3b16ac3dff24f2403d760ab8ebc9670ffRomain Guy * limitations under the License.
15529b60a3b16ac3dff24f2403d760ab8ebc9670ffRomain Guy */
16529b60a3b16ac3dff24f2403d760ab8ebc9670ffRomain Guy
17529b60a3b16ac3dff24f2403d760ab8ebc9670ffRomain Guypackage com.google.android.test.hwui;
18529b60a3b16ac3dff24f2403d760ab8ebc9670ffRomain Guy
19529b60a3b16ac3dff24f2403d760ab8ebc9670ffRomain Guyimport android.app.Activity;
20529b60a3b16ac3dff24f2403d760ab8ebc9670ffRomain Guyimport android.content.Context;
21529b60a3b16ac3dff24f2403d760ab8ebc9670ffRomain Guyimport android.graphics.Bitmap;
22529b60a3b16ac3dff24f2403d760ab8ebc9670ffRomain Guyimport android.graphics.BitmapFactory;
23529b60a3b16ac3dff24f2403d760ab8ebc9670ffRomain Guyimport android.graphics.BitmapShader;
24529b60a3b16ac3dff24f2403d760ab8ebc9670ffRomain Guyimport android.graphics.Canvas;
25529b60a3b16ac3dff24f2403d760ab8ebc9670ffRomain Guyimport android.graphics.Paint;
26529b60a3b16ac3dff24f2403d760ab8ebc9670ffRomain Guyimport android.os.Bundle;
27529b60a3b16ac3dff24f2403d760ab8ebc9670ffRomain Guyimport android.view.View;
28529b60a3b16ac3dff24f2403d760ab8ebc9670ffRomain Guy
29529b60a3b16ac3dff24f2403d760ab8ebc9670ffRomain Guy@SuppressWarnings({"UnusedDeclaration"})
30529b60a3b16ac3dff24f2403d760ab8ebc9670ffRomain Guypublic class LinesActivity extends Activity {
31529b60a3b16ac3dff24f2403d760ab8ebc9670ffRomain Guy    @Override
32529b60a3b16ac3dff24f2403d760ab8ebc9670ffRomain Guy    protected void onCreate(Bundle savedInstanceState) {
33529b60a3b16ac3dff24f2403d760ab8ebc9670ffRomain Guy        super.onCreate(savedInstanceState);
34529b60a3b16ac3dff24f2403d760ab8ebc9670ffRomain Guy        final LinesView view = new LinesView(this);
35529b60a3b16ac3dff24f2403d760ab8ebc9670ffRomain Guy        setContentView(view);
36529b60a3b16ac3dff24f2403d760ab8ebc9670ffRomain Guy    }
37529b60a3b16ac3dff24f2403d760ab8ebc9670ffRomain Guy
38529b60a3b16ac3dff24f2403d760ab8ebc9670ffRomain Guy    static class LinesView extends View {
39529b60a3b16ac3dff24f2403d760ab8ebc9670ffRomain Guy        private final Bitmap mBitmap1;
40529b60a3b16ac3dff24f2403d760ab8ebc9670ffRomain Guy        private final Paint mSmallPaint;
41529b60a3b16ac3dff24f2403d760ab8ebc9670ffRomain Guy        private final Paint mMediumPaint;
42529b60a3b16ac3dff24f2403d760ab8ebc9670ffRomain Guy        private final Paint mLargePaint;
43529b60a3b16ac3dff24f2403d760ab8ebc9670ffRomain Guy        private final BitmapShader mShader;
44529b60a3b16ac3dff24f2403d760ab8ebc9670ffRomain Guy        private final float[] mPoints;
45529b60a3b16ac3dff24f2403d760ab8ebc9670ffRomain Guy        private final Paint mAlphaPaint;
46529b60a3b16ac3dff24f2403d760ab8ebc9670ffRomain Guy
47529b60a3b16ac3dff24f2403d760ab8ebc9670ffRomain Guy        LinesView(Context c) {
48529b60a3b16ac3dff24f2403d760ab8ebc9670ffRomain Guy            super(c);
49529b60a3b16ac3dff24f2403d760ab8ebc9670ffRomain Guy
50529b60a3b16ac3dff24f2403d760ab8ebc9670ffRomain Guy            mBitmap1 = BitmapFactory.decodeResource(c.getResources(), R.drawable.sunset1);
51529b60a3b16ac3dff24f2403d760ab8ebc9670ffRomain Guy
52529b60a3b16ac3dff24f2403d760ab8ebc9670ffRomain Guy            mSmallPaint = new Paint();
53529b60a3b16ac3dff24f2403d760ab8ebc9670ffRomain Guy            mSmallPaint.setAntiAlias(true);
54529b60a3b16ac3dff24f2403d760ab8ebc9670ffRomain Guy            mSmallPaint.setColor(0xffff0000);
55529b60a3b16ac3dff24f2403d760ab8ebc9670ffRomain Guy            mSmallPaint.setStrokeWidth(1.0f);
56529b60a3b16ac3dff24f2403d760ab8ebc9670ffRomain Guy
57529b60a3b16ac3dff24f2403d760ab8ebc9670ffRomain Guy            mMediumPaint = new Paint();
58529b60a3b16ac3dff24f2403d760ab8ebc9670ffRomain Guy            mMediumPaint.setAntiAlias(true);
59529b60a3b16ac3dff24f2403d760ab8ebc9670ffRomain Guy            mMediumPaint.setColor(0xff0000ff);
60529b60a3b16ac3dff24f2403d760ab8ebc9670ffRomain Guy            mMediumPaint.setStrokeWidth(4.0f);
61529b60a3b16ac3dff24f2403d760ab8ebc9670ffRomain Guy
62529b60a3b16ac3dff24f2403d760ab8ebc9670ffRomain Guy            mLargePaint = new Paint();
63529b60a3b16ac3dff24f2403d760ab8ebc9670ffRomain Guy            mLargePaint.setAntiAlias(true);
64529b60a3b16ac3dff24f2403d760ab8ebc9670ffRomain Guy            mLargePaint.setColor(0xff00ff00);
65529b60a3b16ac3dff24f2403d760ab8ebc9670ffRomain Guy            mLargePaint.setStrokeWidth(15.0f);
66529b60a3b16ac3dff24f2403d760ab8ebc9670ffRomain Guy
67529b60a3b16ac3dff24f2403d760ab8ebc9670ffRomain Guy            mAlphaPaint = new Paint();
68529b60a3b16ac3dff24f2403d760ab8ebc9670ffRomain Guy            mAlphaPaint.setAntiAlias(true);
69529b60a3b16ac3dff24f2403d760ab8ebc9670ffRomain Guy            mAlphaPaint.setColor(0x7fff0050);
70529b60a3b16ac3dff24f2403d760ab8ebc9670ffRomain Guy            mAlphaPaint.setStrokeWidth(10.0f);
71529b60a3b16ac3dff24f2403d760ab8ebc9670ffRomain Guy
72529b60a3b16ac3dff24f2403d760ab8ebc9670ffRomain Guy            mShader = new BitmapShader(mBitmap1, BitmapShader.TileMode.MIRROR,
73529b60a3b16ac3dff24f2403d760ab8ebc9670ffRomain Guy                    BitmapShader.TileMode.MIRROR);
74529b60a3b16ac3dff24f2403d760ab8ebc9670ffRomain Guy
75529b60a3b16ac3dff24f2403d760ab8ebc9670ffRomain Guy            mPoints = new float[] {
76529b60a3b16ac3dff24f2403d760ab8ebc9670ffRomain Guy                    62.0f, 0.0f, 302.0f, 400.0f,
77529b60a3b16ac3dff24f2403d760ab8ebc9670ffRomain Guy                    302.0f, 400.0f, 352.0f, 400.0f,
78529b60a3b16ac3dff24f2403d760ab8ebc9670ffRomain Guy                    352.0f, 400.0f, 352.0f, 500.0f
79529b60a3b16ac3dff24f2403d760ab8ebc9670ffRomain Guy            };
80529b60a3b16ac3dff24f2403d760ab8ebc9670ffRomain Guy        }
81529b60a3b16ac3dff24f2403d760ab8ebc9670ffRomain Guy
82529b60a3b16ac3dff24f2403d760ab8ebc9670ffRomain Guy        @Override
83529b60a3b16ac3dff24f2403d760ab8ebc9670ffRomain Guy        protected void onDraw(Canvas canvas) {
84529b60a3b16ac3dff24f2403d760ab8ebc9670ffRomain Guy            super.onDraw(canvas);
85529b60a3b16ac3dff24f2403d760ab8ebc9670ffRomain Guy
86529b60a3b16ac3dff24f2403d760ab8ebc9670ffRomain Guy            canvas.drawARGB(255, 255, 255, 255);
87529b60a3b16ac3dff24f2403d760ab8ebc9670ffRomain Guy
88529b60a3b16ac3dff24f2403d760ab8ebc9670ffRomain Guy            canvas.save();
89529b60a3b16ac3dff24f2403d760ab8ebc9670ffRomain Guy            canvas.translate(100.0f, 20.0f);
90529b60a3b16ac3dff24f2403d760ab8ebc9670ffRomain Guy
91529b60a3b16ac3dff24f2403d760ab8ebc9670ffRomain Guy            canvas.drawLine(0.0f, 0.0f, 40.0f, 400.0f, mSmallPaint);
92529b60a3b16ac3dff24f2403d760ab8ebc9670ffRomain Guy            canvas.drawLine(5.0f, 0.0f, 95.0f, 400.0f, mMediumPaint);
93529b60a3b16ac3dff24f2403d760ab8ebc9670ffRomain Guy            canvas.drawLine(22.0f, 0.0f, 162.0f, 400.0f, mLargePaint);
94529b60a3b16ac3dff24f2403d760ab8ebc9670ffRomain Guy
95529b60a3b16ac3dff24f2403d760ab8ebc9670ffRomain Guy            mLargePaint.setShader(mShader);
96529b60a3b16ac3dff24f2403d760ab8ebc9670ffRomain Guy            canvas.drawLine(42.0f, 0.0f, 222.0f, 400.0f, mLargePaint);
97529b60a3b16ac3dff24f2403d760ab8ebc9670ffRomain Guy            mLargePaint.setShader(null);
98529b60a3b16ac3dff24f2403d760ab8ebc9670ffRomain Guy
99529b60a3b16ac3dff24f2403d760ab8ebc9670ffRomain Guy            canvas.drawLines(mPoints, mAlphaPaint);
100529b60a3b16ac3dff24f2403d760ab8ebc9670ffRomain Guy
101529b60a3b16ac3dff24f2403d760ab8ebc9670ffRomain Guy            canvas.translate(120.0f, 0.0f);
102529b60a3b16ac3dff24f2403d760ab8ebc9670ffRomain Guy            mAlphaPaint.setShader(mShader);
103529b60a3b16ac3dff24f2403d760ab8ebc9670ffRomain Guy            canvas.drawLines(mPoints, mAlphaPaint);
104529b60a3b16ac3dff24f2403d760ab8ebc9670ffRomain Guy            mAlphaPaint.setShader(null);
105529b60a3b16ac3dff24f2403d760ab8ebc9670ffRomain Guy
106529b60a3b16ac3dff24f2403d760ab8ebc9670ffRomain Guy            canvas.restore();
107529b60a3b16ac3dff24f2403d760ab8ebc9670ffRomain Guy        }
108529b60a3b16ac3dff24f2403d760ab8ebc9670ffRomain Guy    }
109529b60a3b16ac3dff24f2403d760ab8ebc9670ffRomain Guy}
110