LinesActivity.java revision a957eea78557cb47a91d44d9e6ee641c58cf1c07
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
17f607bdc167f66b3e7003acaa4736ae46d78c1492Romain Guypackage com.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 {
39a957eea78557cb47a91d44d9e6ee641c58cf1c07Romain Guy        private static final boolean LINE_AA = false;
40a957eea78557cb47a91d44d9e6ee641c58cf1c07Romain Guy
41529b60a3b16ac3dff24f2403d760ab8ebc9670ffRomain Guy        private final Bitmap mBitmap1;
42529b60a3b16ac3dff24f2403d760ab8ebc9670ffRomain Guy        private final Paint mSmallPaint;
43529b60a3b16ac3dff24f2403d760ab8ebc9670ffRomain Guy        private final Paint mMediumPaint;
44529b60a3b16ac3dff24f2403d760ab8ebc9670ffRomain Guy        private final Paint mLargePaint;
45529b60a3b16ac3dff24f2403d760ab8ebc9670ffRomain Guy        private final BitmapShader mShader;
46529b60a3b16ac3dff24f2403d760ab8ebc9670ffRomain Guy        private final float[] mPoints;
47529b60a3b16ac3dff24f2403d760ab8ebc9670ffRomain Guy        private final Paint mAlphaPaint;
48a957eea78557cb47a91d44d9e6ee641c58cf1c07Romain Guy        private final Paint mHairLinePaint;
49529b60a3b16ac3dff24f2403d760ab8ebc9670ffRomain Guy
50529b60a3b16ac3dff24f2403d760ab8ebc9670ffRomain Guy        LinesView(Context c) {
51529b60a3b16ac3dff24f2403d760ab8ebc9670ffRomain Guy            super(c);
52529b60a3b16ac3dff24f2403d760ab8ebc9670ffRomain Guy
53529b60a3b16ac3dff24f2403d760ab8ebc9670ffRomain Guy            mBitmap1 = BitmapFactory.decodeResource(c.getResources(), R.drawable.sunset1);
54529b60a3b16ac3dff24f2403d760ab8ebc9670ffRomain Guy
55529b60a3b16ac3dff24f2403d760ab8ebc9670ffRomain Guy            mSmallPaint = new Paint();
56a957eea78557cb47a91d44d9e6ee641c58cf1c07Romain Guy            mSmallPaint.setAntiAlias(LINE_AA);
57529b60a3b16ac3dff24f2403d760ab8ebc9670ffRomain Guy            mSmallPaint.setColor(0xffff0000);
58529b60a3b16ac3dff24f2403d760ab8ebc9670ffRomain Guy            mSmallPaint.setStrokeWidth(1.0f);
59529b60a3b16ac3dff24f2403d760ab8ebc9670ffRomain Guy
60529b60a3b16ac3dff24f2403d760ab8ebc9670ffRomain Guy            mMediumPaint = new Paint();
61a957eea78557cb47a91d44d9e6ee641c58cf1c07Romain Guy            mMediumPaint.setAntiAlias(LINE_AA);
62529b60a3b16ac3dff24f2403d760ab8ebc9670ffRomain Guy            mMediumPaint.setColor(0xff0000ff);
63529b60a3b16ac3dff24f2403d760ab8ebc9670ffRomain Guy            mMediumPaint.setStrokeWidth(4.0f);
64529b60a3b16ac3dff24f2403d760ab8ebc9670ffRomain Guy
65529b60a3b16ac3dff24f2403d760ab8ebc9670ffRomain Guy            mLargePaint = new Paint();
66a957eea78557cb47a91d44d9e6ee641c58cf1c07Romain Guy            mLargePaint.setAntiAlias(LINE_AA);
67529b60a3b16ac3dff24f2403d760ab8ebc9670ffRomain Guy            mLargePaint.setColor(0xff00ff00);
68529b60a3b16ac3dff24f2403d760ab8ebc9670ffRomain Guy            mLargePaint.setStrokeWidth(15.0f);
69529b60a3b16ac3dff24f2403d760ab8ebc9670ffRomain Guy
70529b60a3b16ac3dff24f2403d760ab8ebc9670ffRomain Guy            mAlphaPaint = new Paint();
71a957eea78557cb47a91d44d9e6ee641c58cf1c07Romain Guy            mAlphaPaint.setAntiAlias(LINE_AA);
72529b60a3b16ac3dff24f2403d760ab8ebc9670ffRomain Guy            mAlphaPaint.setColor(0x7fff0050);
73529b60a3b16ac3dff24f2403d760ab8ebc9670ffRomain Guy            mAlphaPaint.setStrokeWidth(10.0f);
74529b60a3b16ac3dff24f2403d760ab8ebc9670ffRomain Guy
75a957eea78557cb47a91d44d9e6ee641c58cf1c07Romain Guy            mHairLinePaint = new Paint();
76a957eea78557cb47a91d44d9e6ee641c58cf1c07Romain Guy            mHairLinePaint.setAntiAlias(LINE_AA);
77a957eea78557cb47a91d44d9e6ee641c58cf1c07Romain Guy            mHairLinePaint.setColor(0xff0000ff);
78a957eea78557cb47a91d44d9e6ee641c58cf1c07Romain Guy            mHairLinePaint.setStrokeWidth(0.0f);
79a957eea78557cb47a91d44d9e6ee641c58cf1c07Romain Guy
80529b60a3b16ac3dff24f2403d760ab8ebc9670ffRomain Guy            mShader = new BitmapShader(mBitmap1, BitmapShader.TileMode.MIRROR,
81529b60a3b16ac3dff24f2403d760ab8ebc9670ffRomain Guy                    BitmapShader.TileMode.MIRROR);
82529b60a3b16ac3dff24f2403d760ab8ebc9670ffRomain Guy
83529b60a3b16ac3dff24f2403d760ab8ebc9670ffRomain Guy            mPoints = new float[] {
84529b60a3b16ac3dff24f2403d760ab8ebc9670ffRomain Guy                    62.0f, 0.0f, 302.0f, 400.0f,
85529b60a3b16ac3dff24f2403d760ab8ebc9670ffRomain Guy                    302.0f, 400.0f, 352.0f, 400.0f,
86529b60a3b16ac3dff24f2403d760ab8ebc9670ffRomain Guy                    352.0f, 400.0f, 352.0f, 500.0f
87529b60a3b16ac3dff24f2403d760ab8ebc9670ffRomain Guy            };
88529b60a3b16ac3dff24f2403d760ab8ebc9670ffRomain Guy        }
89529b60a3b16ac3dff24f2403d760ab8ebc9670ffRomain Guy
90529b60a3b16ac3dff24f2403d760ab8ebc9670ffRomain Guy        @Override
91529b60a3b16ac3dff24f2403d760ab8ebc9670ffRomain Guy        protected void onDraw(Canvas canvas) {
92529b60a3b16ac3dff24f2403d760ab8ebc9670ffRomain Guy            super.onDraw(canvas);
93529b60a3b16ac3dff24f2403d760ab8ebc9670ffRomain Guy
94529b60a3b16ac3dff24f2403d760ab8ebc9670ffRomain Guy            canvas.drawARGB(255, 255, 255, 255);
95529b60a3b16ac3dff24f2403d760ab8ebc9670ffRomain Guy
96529b60a3b16ac3dff24f2403d760ab8ebc9670ffRomain Guy            canvas.save();
97529b60a3b16ac3dff24f2403d760ab8ebc9670ffRomain Guy            canvas.translate(100.0f, 20.0f);
98529b60a3b16ac3dff24f2403d760ab8ebc9670ffRomain Guy
99529b60a3b16ac3dff24f2403d760ab8ebc9670ffRomain Guy            canvas.drawLine(0.0f, 0.0f, 40.0f, 400.0f, mSmallPaint);
100529b60a3b16ac3dff24f2403d760ab8ebc9670ffRomain Guy            canvas.drawLine(5.0f, 0.0f, 95.0f, 400.0f, mMediumPaint);
101529b60a3b16ac3dff24f2403d760ab8ebc9670ffRomain Guy            canvas.drawLine(22.0f, 0.0f, 162.0f, 400.0f, mLargePaint);
102529b60a3b16ac3dff24f2403d760ab8ebc9670ffRomain Guy
103529b60a3b16ac3dff24f2403d760ab8ebc9670ffRomain Guy            mLargePaint.setShader(mShader);
104529b60a3b16ac3dff24f2403d760ab8ebc9670ffRomain Guy            canvas.drawLine(42.0f, 0.0f, 222.0f, 400.0f, mLargePaint);
105529b60a3b16ac3dff24f2403d760ab8ebc9670ffRomain Guy            mLargePaint.setShader(null);
106529b60a3b16ac3dff24f2403d760ab8ebc9670ffRomain Guy
107529b60a3b16ac3dff24f2403d760ab8ebc9670ffRomain Guy            canvas.drawLines(mPoints, mAlphaPaint);
108759ea80dca64ad652110a129e0d8bf93fea79f61Romain Guy
109759ea80dca64ad652110a129e0d8bf93fea79f61Romain Guy            mSmallPaint.setAntiAlias(false);
110759ea80dca64ad652110a129e0d8bf93fea79f61Romain Guy            canvas.drawLine(0.0f, 0.0f, 400.0f, 0.0f, mSmallPaint);
111a957eea78557cb47a91d44d9e6ee641c58cf1c07Romain Guy            mSmallPaint.setAntiAlias(LINE_AA);
112469b1dbeaf7d3267d1b43af4e7391b49eac10ee0Romain Guy            canvas.drawLine(0.0f, 0.0f, 0.0f, 400.0f, mSmallPaint);
113469b1dbeaf7d3267d1b43af4e7391b49eac10ee0Romain Guy            canvas.drawLine(0.0f, 400.0f, 400.0f, 400.0f, mSmallPaint);
114529b60a3b16ac3dff24f2403d760ab8ebc9670ffRomain Guy
115529b60a3b16ac3dff24f2403d760ab8ebc9670ffRomain Guy            canvas.translate(120.0f, 0.0f);
116529b60a3b16ac3dff24f2403d760ab8ebc9670ffRomain Guy            mAlphaPaint.setShader(mShader);
117529b60a3b16ac3dff24f2403d760ab8ebc9670ffRomain Guy            canvas.drawLines(mPoints, mAlphaPaint);
118529b60a3b16ac3dff24f2403d760ab8ebc9670ffRomain Guy            mAlphaPaint.setShader(null);
119529b60a3b16ac3dff24f2403d760ab8ebc9670ffRomain Guy
120529b60a3b16ac3dff24f2403d760ab8ebc9670ffRomain Guy            canvas.restore();
121a957eea78557cb47a91d44d9e6ee641c58cf1c07Romain Guy
122a957eea78557cb47a91d44d9e6ee641c58cf1c07Romain Guy            canvas.scale(10.0f, 10.0f);
123a957eea78557cb47a91d44d9e6ee641c58cf1c07Romain Guy            canvas.drawLine(50.0f, 40.0f, 10.0f, 40.0f, mSmallPaint);
124a957eea78557cb47a91d44d9e6ee641c58cf1c07Romain Guy            canvas.drawLine(10.0f, 50.0f, 50.0f, 50.0f, mSmallPaint);
125a957eea78557cb47a91d44d9e6ee641c58cf1c07Romain Guy            canvas.drawLine(10.0f, 60.0f, 50.0f, 60.0f, mHairLinePaint);
126a957eea78557cb47a91d44d9e6ee641c58cf1c07Romain Guy            canvas.restore();
127529b60a3b16ac3dff24f2403d760ab8ebc9670ffRomain Guy        }
128529b60a3b16ac3dff24f2403d760ab8ebc9670ffRomain Guy    }
129529b60a3b16ac3dff24f2403d760ab8ebc9670ffRomain Guy}
130