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