LinesActivity.java revision 7230a74e9a36dfc6c4346c14e325bf07cd05b380
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;
267230a74e9a36dfc6c4346c14e325bf07cd05b380Romain Guyimport android.graphics.drawable.ColorDrawable;
27529b60a3b16ac3dff24f2403d760ab8ebc9670ffRomain Guyimport android.os.Bundle;
28529b60a3b16ac3dff24f2403d760ab8ebc9670ffRomain Guyimport android.view.View;
29529b60a3b16ac3dff24f2403d760ab8ebc9670ffRomain Guy
30529b60a3b16ac3dff24f2403d760ab8ebc9670ffRomain Guy@SuppressWarnings({"UnusedDeclaration"})
31529b60a3b16ac3dff24f2403d760ab8ebc9670ffRomain Guypublic class LinesActivity extends Activity {
32529b60a3b16ac3dff24f2403d760ab8ebc9670ffRomain Guy    @Override
33529b60a3b16ac3dff24f2403d760ab8ebc9670ffRomain Guy    protected void onCreate(Bundle savedInstanceState) {
34529b60a3b16ac3dff24f2403d760ab8ebc9670ffRomain Guy        super.onCreate(savedInstanceState);
357230a74e9a36dfc6c4346c14e325bf07cd05b380Romain Guy        getWindow().setBackgroundDrawable(new ColorDrawable(0xffffffff));
36529b60a3b16ac3dff24f2403d760ab8ebc9670ffRomain Guy        final LinesView view = new LinesView(this);
377230a74e9a36dfc6c4346c14e325bf07cd05b380Romain Guy        //view.setAlpha(0.80f);
38529b60a3b16ac3dff24f2403d760ab8ebc9670ffRomain Guy        setContentView(view);
39529b60a3b16ac3dff24f2403d760ab8ebc9670ffRomain Guy    }
40529b60a3b16ac3dff24f2403d760ab8ebc9670ffRomain Guy
4163fd87113cea6abec97a6cd966e090e9b590fc3bXavier Ducrohet    public static class LinesView extends View {
42a957eea78557cb47a91d44d9e6ee641c58cf1c07Romain Guy        private static final boolean LINE_AA = false;
43a957eea78557cb47a91d44d9e6ee641c58cf1c07Romain Guy
44529b60a3b16ac3dff24f2403d760ab8ebc9670ffRomain Guy        private final Bitmap mBitmap1;
45529b60a3b16ac3dff24f2403d760ab8ebc9670ffRomain Guy        private final Paint mSmallPaint;
46529b60a3b16ac3dff24f2403d760ab8ebc9670ffRomain Guy        private final Paint mMediumPaint;
47529b60a3b16ac3dff24f2403d760ab8ebc9670ffRomain Guy        private final Paint mLargePaint;
48529b60a3b16ac3dff24f2403d760ab8ebc9670ffRomain Guy        private final BitmapShader mShader;
49529b60a3b16ac3dff24f2403d760ab8ebc9670ffRomain Guy        private final float[] mPoints;
50529b60a3b16ac3dff24f2403d760ab8ebc9670ffRomain Guy        private final Paint mAlphaPaint;
51a957eea78557cb47a91d44d9e6ee641c58cf1c07Romain Guy        private final Paint mHairLinePaint;
52529b60a3b16ac3dff24f2403d760ab8ebc9670ffRomain Guy
5363fd87113cea6abec97a6cd966e090e9b590fc3bXavier Ducrohet        public LinesView(Context c) {
54529b60a3b16ac3dff24f2403d760ab8ebc9670ffRomain Guy            super(c);
55529b60a3b16ac3dff24f2403d760ab8ebc9670ffRomain Guy
56529b60a3b16ac3dff24f2403d760ab8ebc9670ffRomain Guy            mBitmap1 = BitmapFactory.decodeResource(c.getResources(), R.drawable.sunset1);
57529b60a3b16ac3dff24f2403d760ab8ebc9670ffRomain Guy
58529b60a3b16ac3dff24f2403d760ab8ebc9670ffRomain Guy            mSmallPaint = new Paint();
59a957eea78557cb47a91d44d9e6ee641c58cf1c07Romain Guy            mSmallPaint.setAntiAlias(LINE_AA);
60529b60a3b16ac3dff24f2403d760ab8ebc9670ffRomain Guy            mSmallPaint.setColor(0xffff0000);
61529b60a3b16ac3dff24f2403d760ab8ebc9670ffRomain Guy            mSmallPaint.setStrokeWidth(1.0f);
62529b60a3b16ac3dff24f2403d760ab8ebc9670ffRomain Guy
63529b60a3b16ac3dff24f2403d760ab8ebc9670ffRomain Guy            mMediumPaint = new Paint();
64a957eea78557cb47a91d44d9e6ee641c58cf1c07Romain Guy            mMediumPaint.setAntiAlias(LINE_AA);
65529b60a3b16ac3dff24f2403d760ab8ebc9670ffRomain Guy            mMediumPaint.setColor(0xff0000ff);
66529b60a3b16ac3dff24f2403d760ab8ebc9670ffRomain Guy            mMediumPaint.setStrokeWidth(4.0f);
67529b60a3b16ac3dff24f2403d760ab8ebc9670ffRomain Guy
68529b60a3b16ac3dff24f2403d760ab8ebc9670ffRomain Guy            mLargePaint = new Paint();
69a957eea78557cb47a91d44d9e6ee641c58cf1c07Romain Guy            mLargePaint.setAntiAlias(LINE_AA);
70529b60a3b16ac3dff24f2403d760ab8ebc9670ffRomain Guy            mLargePaint.setColor(0xff00ff00);
71529b60a3b16ac3dff24f2403d760ab8ebc9670ffRomain Guy            mLargePaint.setStrokeWidth(15.0f);
72529b60a3b16ac3dff24f2403d760ab8ebc9670ffRomain Guy
73529b60a3b16ac3dff24f2403d760ab8ebc9670ffRomain Guy            mAlphaPaint = new Paint();
74a957eea78557cb47a91d44d9e6ee641c58cf1c07Romain Guy            mAlphaPaint.setAntiAlias(LINE_AA);
75529b60a3b16ac3dff24f2403d760ab8ebc9670ffRomain Guy            mAlphaPaint.setColor(0x7fff0050);
76529b60a3b16ac3dff24f2403d760ab8ebc9670ffRomain Guy            mAlphaPaint.setStrokeWidth(10.0f);
7763fd87113cea6abec97a6cd966e090e9b590fc3bXavier Ducrohet
78a957eea78557cb47a91d44d9e6ee641c58cf1c07Romain Guy            mHairLinePaint = new Paint();
79a957eea78557cb47a91d44d9e6ee641c58cf1c07Romain Guy            mHairLinePaint.setAntiAlias(LINE_AA);
80a957eea78557cb47a91d44d9e6ee641c58cf1c07Romain Guy            mHairLinePaint.setColor(0xff0000ff);
81a957eea78557cb47a91d44d9e6ee641c58cf1c07Romain Guy            mHairLinePaint.setStrokeWidth(0.0f);
82a957eea78557cb47a91d44d9e6ee641c58cf1c07Romain Guy
83529b60a3b16ac3dff24f2403d760ab8ebc9670ffRomain Guy            mShader = new BitmapShader(mBitmap1, BitmapShader.TileMode.MIRROR,
84529b60a3b16ac3dff24f2403d760ab8ebc9670ffRomain Guy                    BitmapShader.TileMode.MIRROR);
85529b60a3b16ac3dff24f2403d760ab8ebc9670ffRomain Guy
86529b60a3b16ac3dff24f2403d760ab8ebc9670ffRomain Guy            mPoints = new float[] {
87529b60a3b16ac3dff24f2403d760ab8ebc9670ffRomain Guy                    62.0f, 0.0f, 302.0f, 400.0f,
88529b60a3b16ac3dff24f2403d760ab8ebc9670ffRomain Guy                    302.0f, 400.0f, 352.0f, 400.0f,
89529b60a3b16ac3dff24f2403d760ab8ebc9670ffRomain Guy                    352.0f, 400.0f, 352.0f, 500.0f
90529b60a3b16ac3dff24f2403d760ab8ebc9670ffRomain Guy            };
91529b60a3b16ac3dff24f2403d760ab8ebc9670ffRomain Guy        }
92529b60a3b16ac3dff24f2403d760ab8ebc9670ffRomain Guy
93529b60a3b16ac3dff24f2403d760ab8ebc9670ffRomain Guy        @Override
94529b60a3b16ac3dff24f2403d760ab8ebc9670ffRomain Guy        protected void onDraw(Canvas canvas) {
95529b60a3b16ac3dff24f2403d760ab8ebc9670ffRomain Guy            super.onDraw(canvas);
96529b60a3b16ac3dff24f2403d760ab8ebc9670ffRomain Guy
97529b60a3b16ac3dff24f2403d760ab8ebc9670ffRomain Guy            canvas.save();
98529b60a3b16ac3dff24f2403d760ab8ebc9670ffRomain Guy            canvas.translate(100.0f, 20.0f);
99529b60a3b16ac3dff24f2403d760ab8ebc9670ffRomain Guy
100529b60a3b16ac3dff24f2403d760ab8ebc9670ffRomain Guy            canvas.drawLine(0.0f, 0.0f, 40.0f, 400.0f, mSmallPaint);
101529b60a3b16ac3dff24f2403d760ab8ebc9670ffRomain Guy            canvas.drawLine(5.0f, 0.0f, 95.0f, 400.0f, mMediumPaint);
102529b60a3b16ac3dff24f2403d760ab8ebc9670ffRomain Guy            canvas.drawLine(22.0f, 0.0f, 162.0f, 400.0f, mLargePaint);
10363fd87113cea6abec97a6cd966e090e9b590fc3bXavier Ducrohet
104529b60a3b16ac3dff24f2403d760ab8ebc9670ffRomain Guy            mLargePaint.setShader(mShader);
105529b60a3b16ac3dff24f2403d760ab8ebc9670ffRomain Guy            canvas.drawLine(42.0f, 0.0f, 222.0f, 400.0f, mLargePaint);
106529b60a3b16ac3dff24f2403d760ab8ebc9670ffRomain Guy            mLargePaint.setShader(null);
10763fd87113cea6abec97a6cd966e090e9b590fc3bXavier Ducrohet
108529b60a3b16ac3dff24f2403d760ab8ebc9670ffRomain Guy            canvas.drawLines(mPoints, mAlphaPaint);
109759ea80dca64ad652110a129e0d8bf93fea79f61Romain Guy
110759ea80dca64ad652110a129e0d8bf93fea79f61Romain Guy            mSmallPaint.setAntiAlias(false);
111759ea80dca64ad652110a129e0d8bf93fea79f61Romain Guy            canvas.drawLine(0.0f, 0.0f, 400.0f, 0.0f, mSmallPaint);
112a957eea78557cb47a91d44d9e6ee641c58cf1c07Romain Guy            mSmallPaint.setAntiAlias(LINE_AA);
113469b1dbeaf7d3267d1b43af4e7391b49eac10ee0Romain Guy            canvas.drawLine(0.0f, 0.0f, 0.0f, 400.0f, mSmallPaint);
114469b1dbeaf7d3267d1b43af4e7391b49eac10ee0Romain Guy            canvas.drawLine(0.0f, 400.0f, 400.0f, 400.0f, mSmallPaint);
11563fd87113cea6abec97a6cd966e090e9b590fc3bXavier Ducrohet
116529b60a3b16ac3dff24f2403d760ab8ebc9670ffRomain Guy            canvas.translate(120.0f, 0.0f);
11763fd87113cea6abec97a6cd966e090e9b590fc3bXavier Ducrohet            mAlphaPaint.setShader(mShader);
118529b60a3b16ac3dff24f2403d760ab8ebc9670ffRomain Guy            canvas.drawLines(mPoints, mAlphaPaint);
119529b60a3b16ac3dff24f2403d760ab8ebc9670ffRomain Guy            mAlphaPaint.setShader(null);
120529b60a3b16ac3dff24f2403d760ab8ebc9670ffRomain Guy
121529b60a3b16ac3dff24f2403d760ab8ebc9670ffRomain Guy            canvas.restore();
12263fd87113cea6abec97a6cd966e090e9b590fc3bXavier Ducrohet
123a957eea78557cb47a91d44d9e6ee641c58cf1c07Romain Guy            canvas.scale(10.0f, 10.0f);
124a957eea78557cb47a91d44d9e6ee641c58cf1c07Romain Guy            canvas.drawLine(50.0f, 40.0f, 10.0f, 40.0f, mSmallPaint);
125a957eea78557cb47a91d44d9e6ee641c58cf1c07Romain Guy            canvas.drawLine(10.0f, 50.0f, 50.0f, 50.0f, mSmallPaint);
126a957eea78557cb47a91d44d9e6ee641c58cf1c07Romain Guy            canvas.drawLine(10.0f, 60.0f, 50.0f, 60.0f, mHairLinePaint);
127a957eea78557cb47a91d44d9e6ee641c58cf1c07Romain Guy            canvas.restore();
128529b60a3b16ac3dff24f2403d760ab8ebc9670ffRomain Guy        }
129529b60a3b16ac3dff24f2403d760ab8ebc9670ffRomain Guy    }
130529b60a3b16ac3dff24f2403d760ab8ebc9670ffRomain Guy}
131