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