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