15b0200bd47e8a9a4dc8d2e6c3a110d522b30bf82Chet Haase/* 25b0200bd47e8a9a4dc8d2e6c3a110d522b30bf82Chet Haase * Copyright (C) 2011 The Android Open Source Project 35b0200bd47e8a9a4dc8d2e6c3a110d522b30bf82Chet Haase * 45b0200bd47e8a9a4dc8d2e6c3a110d522b30bf82Chet Haase * Licensed under the Apache License, Version 2.0 (the "License"); 55b0200bd47e8a9a4dc8d2e6c3a110d522b30bf82Chet Haase * you may not use this file except in compliance with the License. 65b0200bd47e8a9a4dc8d2e6c3a110d522b30bf82Chet Haase * You may obtain a copy of the License at 75b0200bd47e8a9a4dc8d2e6c3a110d522b30bf82Chet Haase * 85b0200bd47e8a9a4dc8d2e6c3a110d522b30bf82Chet Haase * http://www.apache.org/licenses/LICENSE-2.0 95b0200bd47e8a9a4dc8d2e6c3a110d522b30bf82Chet Haase * 105b0200bd47e8a9a4dc8d2e6c3a110d522b30bf82Chet Haase * Unless required by applicable law or agreed to in writing, software 115b0200bd47e8a9a4dc8d2e6c3a110d522b30bf82Chet Haase * distributed under the License is distributed on an "AS IS" BASIS, 125b0200bd47e8a9a4dc8d2e6c3a110d522b30bf82Chet Haase * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 135b0200bd47e8a9a4dc8d2e6c3a110d522b30bf82Chet Haase * See the License for the specific language governing permissions and 145b0200bd47e8a9a4dc8d2e6c3a110d522b30bf82Chet Haase * limitations under the License. 155b0200bd47e8a9a4dc8d2e6c3a110d522b30bf82Chet Haase */ 165b0200bd47e8a9a4dc8d2e6c3a110d522b30bf82Chet Haase 175b0200bd47e8a9a4dc8d2e6c3a110d522b30bf82Chet Haasepackage com.android.test.hwui; 185b0200bd47e8a9a4dc8d2e6c3a110d522b30bf82Chet Haase 195b0200bd47e8a9a4dc8d2e6c3a110d522b30bf82Chet Haaseimport android.animation.ObjectAnimator; 205b0200bd47e8a9a4dc8d2e6c3a110d522b30bf82Chet Haaseimport android.app.Activity; 215b0200bd47e8a9a4dc8d2e6c3a110d522b30bf82Chet Haaseimport android.content.Context; 225b0200bd47e8a9a4dc8d2e6c3a110d522b30bf82Chet Haaseimport android.graphics.Canvas; 235b0200bd47e8a9a4dc8d2e6c3a110d522b30bf82Chet Haaseimport android.graphics.Color; 245b0200bd47e8a9a4dc8d2e6c3a110d522b30bf82Chet Haaseimport android.graphics.Paint; 255b0200bd47e8a9a4dc8d2e6c3a110d522b30bf82Chet Haaseimport android.graphics.drawable.ColorDrawable; 265b0200bd47e8a9a4dc8d2e6c3a110d522b30bf82Chet Haaseimport android.os.Bundle; 275b0200bd47e8a9a4dc8d2e6c3a110d522b30bf82Chet Haaseimport android.view.View; 285b0200bd47e8a9a4dc8d2e6c3a110d522b30bf82Chet Haaseimport android.widget.FrameLayout; 295b0200bd47e8a9a4dc8d2e6c3a110d522b30bf82Chet Haase 305b0200bd47e8a9a4dc8d2e6c3a110d522b30bf82Chet Haase@SuppressWarnings({"UnusedDeclaration"}) 315b0200bd47e8a9a4dc8d2e6c3a110d522b30bf82Chet Haasepublic class Lines2Activity extends Activity { 325b0200bd47e8a9a4dc8d2e6c3a110d522b30bf82Chet Haase private ObjectAnimator mAnimator; 335b0200bd47e8a9a4dc8d2e6c3a110d522b30bf82Chet Haase 345b0200bd47e8a9a4dc8d2e6c3a110d522b30bf82Chet Haase @Override 355b0200bd47e8a9a4dc8d2e6c3a110d522b30bf82Chet Haase protected void onCreate(Bundle savedInstanceState) { 365b0200bd47e8a9a4dc8d2e6c3a110d522b30bf82Chet Haase super.onCreate(savedInstanceState); 375b0200bd47e8a9a4dc8d2e6c3a110d522b30bf82Chet Haase getWindow().setBackgroundDrawable(new ColorDrawable(0xff000000)); 385b0200bd47e8a9a4dc8d2e6c3a110d522b30bf82Chet Haase FrameLayout frame = new FrameLayout(this); 395b0200bd47e8a9a4dc8d2e6c3a110d522b30bf82Chet Haase final LinesView gpuView = new LinesView(this, 0, Color.GREEN); 405b0200bd47e8a9a4dc8d2e6c3a110d522b30bf82Chet Haase frame.addView(gpuView); 415b0200bd47e8a9a4dc8d2e6c3a110d522b30bf82Chet Haase final LinesView swView = new LinesView(this, 400, Color.RED); 425b0200bd47e8a9a4dc8d2e6c3a110d522b30bf82Chet Haase swView.setLayerType(View.LAYER_TYPE_SOFTWARE, null); 435b0200bd47e8a9a4dc8d2e6c3a110d522b30bf82Chet Haase frame.addView(swView); 445b0200bd47e8a9a4dc8d2e6c3a110d522b30bf82Chet Haase final LinesView hwBothView = new LinesView(this, 850, Color.GREEN); 458a5cc92a150bae38ec43732d941b38bb381fe153Chet Haase // Don't actually need to render to a hw layer, but it's a good sanity-check that 468a5cc92a150bae38ec43732d941b38bb381fe153Chet Haase // we're rendering to/from layers correctly 478a5cc92a150bae38ec43732d941b38bb381fe153Chet Haase hwBothView.setLayerType(View.LAYER_TYPE_HARDWARE, null); 485b0200bd47e8a9a4dc8d2e6c3a110d522b30bf82Chet Haase frame.addView(hwBothView); 495b0200bd47e8a9a4dc8d2e6c3a110d522b30bf82Chet Haase final LinesView swBothView = new LinesView(this, 854, Color.RED); 505b0200bd47e8a9a4dc8d2e6c3a110d522b30bf82Chet Haase swBothView.setLayerType(View.LAYER_TYPE_SOFTWARE, null); 515b0200bd47e8a9a4dc8d2e6c3a110d522b30bf82Chet Haase frame.addView(swBothView); 525b0200bd47e8a9a4dc8d2e6c3a110d522b30bf82Chet Haase setContentView(frame); 535b0200bd47e8a9a4dc8d2e6c3a110d522b30bf82Chet Haase } 545b0200bd47e8a9a4dc8d2e6c3a110d522b30bf82Chet Haase 555b0200bd47e8a9a4dc8d2e6c3a110d522b30bf82Chet Haase @Override 565b0200bd47e8a9a4dc8d2e6c3a110d522b30bf82Chet Haase protected void onDestroy() { 575b0200bd47e8a9a4dc8d2e6c3a110d522b30bf82Chet Haase super.onDestroy(); 585b0200bd47e8a9a4dc8d2e6c3a110d522b30bf82Chet Haase } 595b0200bd47e8a9a4dc8d2e6c3a110d522b30bf82Chet Haase 605b0200bd47e8a9a4dc8d2e6c3a110d522b30bf82Chet Haase public static class LinesView extends View { 615b0200bd47e8a9a4dc8d2e6c3a110d522b30bf82Chet Haase 625b0200bd47e8a9a4dc8d2e6c3a110d522b30bf82Chet Haase private float mOffset; 635b0200bd47e8a9a4dc8d2e6c3a110d522b30bf82Chet Haase private int mColor; 645b0200bd47e8a9a4dc8d2e6c3a110d522b30bf82Chet Haase private float[] basePoints = { 655b0200bd47e8a9a4dc8d2e6c3a110d522b30bf82Chet Haase 120, 0, 120, 20, 120, 20, 125, 0, 130, 0, 132, 10 665b0200bd47e8a9a4dc8d2e6c3a110d522b30bf82Chet Haase }; 675b0200bd47e8a9a4dc8d2e6c3a110d522b30bf82Chet Haase private float[] copyPoints = new float[12]; 685b0200bd47e8a9a4dc8d2e6c3a110d522b30bf82Chet Haase 695b0200bd47e8a9a4dc8d2e6c3a110d522b30bf82Chet Haase public LinesView(Context c, float offset, int color) { 705b0200bd47e8a9a4dc8d2e6c3a110d522b30bf82Chet Haase super(c); 715b0200bd47e8a9a4dc8d2e6c3a110d522b30bf82Chet Haase mOffset = offset; 725b0200bd47e8a9a4dc8d2e6c3a110d522b30bf82Chet Haase mColor = color; 735b0200bd47e8a9a4dc8d2e6c3a110d522b30bf82Chet Haase } 745b0200bd47e8a9a4dc8d2e6c3a110d522b30bf82Chet Haase 755b0200bd47e8a9a4dc8d2e6c3a110d522b30bf82Chet Haase private void drawLines(Canvas canvas, Paint p, float xOffset, float yOffset) { 765b0200bd47e8a9a4dc8d2e6c3a110d522b30bf82Chet Haase canvas.drawLine(10 + xOffset, yOffset, 10 + xOffset, 40 + yOffset, p); 775b0200bd47e8a9a4dc8d2e6c3a110d522b30bf82Chet Haase canvas.drawLine(30 + xOffset, yOffset, 40 + xOffset, 40 + yOffset, p); 785b0200bd47e8a9a4dc8d2e6c3a110d522b30bf82Chet Haase canvas.drawLine(40 + xOffset, yOffset, 75 + xOffset, 35 + yOffset, p); 795b0200bd47e8a9a4dc8d2e6c3a110d522b30bf82Chet Haase canvas.drawLine(50 + xOffset, 5+ yOffset, 100 + xOffset, 15 + yOffset, p); 805b0200bd47e8a9a4dc8d2e6c3a110d522b30bf82Chet Haase canvas.drawLine(60 + xOffset, yOffset, 110 + xOffset, 2 + yOffset, p); 815b0200bd47e8a9a4dc8d2e6c3a110d522b30bf82Chet Haase canvas.drawLine(60 + xOffset, 40 + yOffset, 110 + xOffset, 40 + yOffset, p); 825b0200bd47e8a9a4dc8d2e6c3a110d522b30bf82Chet Haase for (int i = 0; i < 12; i += 2) { 835b0200bd47e8a9a4dc8d2e6c3a110d522b30bf82Chet Haase copyPoints[i] = basePoints[i] + xOffset; 845b0200bd47e8a9a4dc8d2e6c3a110d522b30bf82Chet Haase copyPoints[i+1] = basePoints[i+1] + yOffset; 855b0200bd47e8a9a4dc8d2e6c3a110d522b30bf82Chet Haase } 865b0200bd47e8a9a4dc8d2e6c3a110d522b30bf82Chet Haase canvas.drawLines(copyPoints, 0, 12, p); 875b0200bd47e8a9a4dc8d2e6c3a110d522b30bf82Chet Haase } 885b0200bd47e8a9a4dc8d2e6c3a110d522b30bf82Chet Haase 8999585adeb4167ca357a72eb866f34c1af944f4b9Chet Haase private void drawVerticalLine(Canvas canvas, Paint p, float length, float x, float y) { 9099585adeb4167ca357a72eb866f34c1af944f4b9Chet Haase canvas.drawLine(x, y, x, y + length, p); 9199585adeb4167ca357a72eb866f34c1af944f4b9Chet Haase } 9299585adeb4167ca357a72eb866f34c1af944f4b9Chet Haase 9399585adeb4167ca357a72eb866f34c1af944f4b9Chet Haase private void drawDiagonalLine(Canvas canvas, Paint p, float length, float x, float y) { 9499585adeb4167ca357a72eb866f34c1af944f4b9Chet Haase canvas.drawLine(x, y, x + length, y + length, p); 9599585adeb4167ca357a72eb866f34c1af944f4b9Chet Haase } 9699585adeb4167ca357a72eb866f34c1af944f4b9Chet Haase 975b0200bd47e8a9a4dc8d2e6c3a110d522b30bf82Chet Haase @Override 985b0200bd47e8a9a4dc8d2e6c3a110d522b30bf82Chet Haase protected void onDraw(Canvas canvas) { 995b0200bd47e8a9a4dc8d2e6c3a110d522b30bf82Chet Haase super.onDraw(canvas); 1005b0200bd47e8a9a4dc8d2e6c3a110d522b30bf82Chet Haase Paint p = new Paint(); 1015b0200bd47e8a9a4dc8d2e6c3a110d522b30bf82Chet Haase p.setColor(mColor); 1025b0200bd47e8a9a4dc8d2e6c3a110d522b30bf82Chet Haase float yOffset = 10; 1035b0200bd47e8a9a4dc8d2e6c3a110d522b30bf82Chet Haase 1045b0200bd47e8a9a4dc8d2e6c3a110d522b30bf82Chet Haase canvas.save(); 1055b0200bd47e8a9a4dc8d2e6c3a110d522b30bf82Chet Haase drawLines(canvas, p, mOffset, yOffset); 1065b0200bd47e8a9a4dc8d2e6c3a110d522b30bf82Chet Haase canvas.scale(2, 2); 1075b0200bd47e8a9a4dc8d2e6c3a110d522b30bf82Chet Haase canvas.translate(60, 0); 1085b0200bd47e8a9a4dc8d2e6c3a110d522b30bf82Chet Haase drawLines(canvas, p, mOffset/2, yOffset/2); 1095b0200bd47e8a9a4dc8d2e6c3a110d522b30bf82Chet Haase canvas.restore(); 1105b0200bd47e8a9a4dc8d2e6c3a110d522b30bf82Chet Haase 1115b0200bd47e8a9a4dc8d2e6c3a110d522b30bf82Chet Haase yOffset +=100; 1125b0200bd47e8a9a4dc8d2e6c3a110d522b30bf82Chet Haase canvas.save(); 1135b0200bd47e8a9a4dc8d2e6c3a110d522b30bf82Chet Haase p.setStrokeWidth(1); 1145b0200bd47e8a9a4dc8d2e6c3a110d522b30bf82Chet Haase drawLines(canvas, p, mOffset, yOffset); 1155b0200bd47e8a9a4dc8d2e6c3a110d522b30bf82Chet Haase canvas.scale(2, 2); 1165b0200bd47e8a9a4dc8d2e6c3a110d522b30bf82Chet Haase canvas.translate(60, 0); 1175b0200bd47e8a9a4dc8d2e6c3a110d522b30bf82Chet Haase drawLines(canvas, p, mOffset/2, yOffset/2); 1185b0200bd47e8a9a4dc8d2e6c3a110d522b30bf82Chet Haase canvas.restore(); 1195b0200bd47e8a9a4dc8d2e6c3a110d522b30bf82Chet Haase 1205b0200bd47e8a9a4dc8d2e6c3a110d522b30bf82Chet Haase yOffset += 100; 1215b0200bd47e8a9a4dc8d2e6c3a110d522b30bf82Chet Haase canvas.save(); 1225b0200bd47e8a9a4dc8d2e6c3a110d522b30bf82Chet Haase p.setStrokeWidth(2); 1235b0200bd47e8a9a4dc8d2e6c3a110d522b30bf82Chet Haase drawLines(canvas, p, mOffset, yOffset); 1245b0200bd47e8a9a4dc8d2e6c3a110d522b30bf82Chet Haase canvas.scale(2, 2); 1255b0200bd47e8a9a4dc8d2e6c3a110d522b30bf82Chet Haase canvas.translate(60, 0); 1265b0200bd47e8a9a4dc8d2e6c3a110d522b30bf82Chet Haase drawLines(canvas, p, mOffset/2, yOffset/2); 1275b0200bd47e8a9a4dc8d2e6c3a110d522b30bf82Chet Haase canvas.restore(); 1285b0200bd47e8a9a4dc8d2e6c3a110d522b30bf82Chet Haase 1295b0200bd47e8a9a4dc8d2e6c3a110d522b30bf82Chet Haase p.setAntiAlias(true); 1305b0200bd47e8a9a4dc8d2e6c3a110d522b30bf82Chet Haase p.setStrokeWidth(0); 1315b0200bd47e8a9a4dc8d2e6c3a110d522b30bf82Chet Haase yOffset += 100; 1325b0200bd47e8a9a4dc8d2e6c3a110d522b30bf82Chet Haase canvas.save(); 1335b0200bd47e8a9a4dc8d2e6c3a110d522b30bf82Chet Haase drawLines(canvas, p, mOffset, yOffset); 1345b0200bd47e8a9a4dc8d2e6c3a110d522b30bf82Chet Haase canvas.scale(2, 2); 1355b0200bd47e8a9a4dc8d2e6c3a110d522b30bf82Chet Haase canvas.translate(60, 0); 1365b0200bd47e8a9a4dc8d2e6c3a110d522b30bf82Chet Haase drawLines(canvas, p, mOffset/2, yOffset/2); 1375b0200bd47e8a9a4dc8d2e6c3a110d522b30bf82Chet Haase canvas.restore(); 1385b0200bd47e8a9a4dc8d2e6c3a110d522b30bf82Chet Haase 1395b0200bd47e8a9a4dc8d2e6c3a110d522b30bf82Chet Haase yOffset += 100; 1405b0200bd47e8a9a4dc8d2e6c3a110d522b30bf82Chet Haase canvas.save(); 1415b0200bd47e8a9a4dc8d2e6c3a110d522b30bf82Chet Haase p.setStrokeWidth(1); 1425b0200bd47e8a9a4dc8d2e6c3a110d522b30bf82Chet Haase drawLines(canvas, p, mOffset, yOffset); 1435b0200bd47e8a9a4dc8d2e6c3a110d522b30bf82Chet Haase canvas.scale(2, 2); 1445b0200bd47e8a9a4dc8d2e6c3a110d522b30bf82Chet Haase canvas.translate(60, 0); 1455b0200bd47e8a9a4dc8d2e6c3a110d522b30bf82Chet Haase drawLines(canvas, p, mOffset/2, yOffset/2); 1465b0200bd47e8a9a4dc8d2e6c3a110d522b30bf82Chet Haase canvas.restore(); 1475b0200bd47e8a9a4dc8d2e6c3a110d522b30bf82Chet Haase 1485b0200bd47e8a9a4dc8d2e6c3a110d522b30bf82Chet Haase yOffset += 100; 1495b0200bd47e8a9a4dc8d2e6c3a110d522b30bf82Chet Haase canvas.save(); 1505b0200bd47e8a9a4dc8d2e6c3a110d522b30bf82Chet Haase p.setStrokeWidth(2); 1515b0200bd47e8a9a4dc8d2e6c3a110d522b30bf82Chet Haase drawLines(canvas, p, mOffset, yOffset); 1525b0200bd47e8a9a4dc8d2e6c3a110d522b30bf82Chet Haase canvas.scale(2, 2); 1535b0200bd47e8a9a4dc8d2e6c3a110d522b30bf82Chet Haase canvas.translate(60, 0); 1545b0200bd47e8a9a4dc8d2e6c3a110d522b30bf82Chet Haase drawLines(canvas, p, mOffset/2, yOffset/2); 1555b0200bd47e8a9a4dc8d2e6c3a110d522b30bf82Chet Haase canvas.restore(); 15699585adeb4167ca357a72eb866f34c1af944f4b9Chet Haase 15799585adeb4167ca357a72eb866f34c1af944f4b9Chet Haase yOffset += 100; 15899585adeb4167ca357a72eb866f34c1af944f4b9Chet Haase canvas.save(); 15999585adeb4167ca357a72eb866f34c1af944f4b9Chet Haase p.setStrokeWidth(1); 16099585adeb4167ca357a72eb866f34c1af944f4b9Chet Haase float x = 10 + mOffset; 16199585adeb4167ca357a72eb866f34c1af944f4b9Chet Haase for (float length = 1; length <= 10; length +=1 ) { 16299585adeb4167ca357a72eb866f34c1af944f4b9Chet Haase p.setAntiAlias(false); 16399585adeb4167ca357a72eb866f34c1af944f4b9Chet Haase drawVerticalLine(canvas, p, length, x, yOffset); 16499585adeb4167ca357a72eb866f34c1af944f4b9Chet Haase x += 5; 16599585adeb4167ca357a72eb866f34c1af944f4b9Chet Haase p.setAntiAlias(true); 16699585adeb4167ca357a72eb866f34c1af944f4b9Chet Haase drawVerticalLine(canvas, p, length, x, yOffset); 16799585adeb4167ca357a72eb866f34c1af944f4b9Chet Haase x += 5; 16899585adeb4167ca357a72eb866f34c1af944f4b9Chet Haase } 16999585adeb4167ca357a72eb866f34c1af944f4b9Chet Haase p.setStrokeWidth(5); 17099585adeb4167ca357a72eb866f34c1af944f4b9Chet Haase for (float length = 1; length <= 10; length +=1 ) { 17199585adeb4167ca357a72eb866f34c1af944f4b9Chet Haase p.setAntiAlias(false); 17299585adeb4167ca357a72eb866f34c1af944f4b9Chet Haase drawVerticalLine(canvas, p, length, x, yOffset); 17399585adeb4167ca357a72eb866f34c1af944f4b9Chet Haase x += 10; 17499585adeb4167ca357a72eb866f34c1af944f4b9Chet Haase p.setAntiAlias(true); 17599585adeb4167ca357a72eb866f34c1af944f4b9Chet Haase drawVerticalLine(canvas, p, length, x, yOffset); 17699585adeb4167ca357a72eb866f34c1af944f4b9Chet Haase x += 10; 17799585adeb4167ca357a72eb866f34c1af944f4b9Chet Haase } 17899585adeb4167ca357a72eb866f34c1af944f4b9Chet Haase canvas.restore(); 17999585adeb4167ca357a72eb866f34c1af944f4b9Chet Haase 18099585adeb4167ca357a72eb866f34c1af944f4b9Chet Haase yOffset += 20; 18199585adeb4167ca357a72eb866f34c1af944f4b9Chet Haase canvas.save(); 18299585adeb4167ca357a72eb866f34c1af944f4b9Chet Haase p.setStrokeWidth(1); 18399585adeb4167ca357a72eb866f34c1af944f4b9Chet Haase x = 10 + mOffset; 18499585adeb4167ca357a72eb866f34c1af944f4b9Chet Haase for (float length = 1; length <= 10; length +=1 ) { 18599585adeb4167ca357a72eb866f34c1af944f4b9Chet Haase p.setAntiAlias(false); 18699585adeb4167ca357a72eb866f34c1af944f4b9Chet Haase drawDiagonalLine(canvas, p, length, x, yOffset); 18799585adeb4167ca357a72eb866f34c1af944f4b9Chet Haase x += 5; 18899585adeb4167ca357a72eb866f34c1af944f4b9Chet Haase p.setAntiAlias(true); 18999585adeb4167ca357a72eb866f34c1af944f4b9Chet Haase drawDiagonalLine(canvas, p, length, x, yOffset); 19099585adeb4167ca357a72eb866f34c1af944f4b9Chet Haase x += 5; 19199585adeb4167ca357a72eb866f34c1af944f4b9Chet Haase } 19299585adeb4167ca357a72eb866f34c1af944f4b9Chet Haase p.setStrokeWidth(2); 19399585adeb4167ca357a72eb866f34c1af944f4b9Chet Haase for (float length = 1; length <= 10; length +=1 ) { 19499585adeb4167ca357a72eb866f34c1af944f4b9Chet Haase p.setAntiAlias(false); 19599585adeb4167ca357a72eb866f34c1af944f4b9Chet Haase drawDiagonalLine(canvas, p, length, x, yOffset); 19699585adeb4167ca357a72eb866f34c1af944f4b9Chet Haase x += 10; 19799585adeb4167ca357a72eb866f34c1af944f4b9Chet Haase p.setAntiAlias(true); 19899585adeb4167ca357a72eb866f34c1af944f4b9Chet Haase drawDiagonalLine(canvas, p, length, x, yOffset); 19999585adeb4167ca357a72eb866f34c1af944f4b9Chet Haase x += 10; 20099585adeb4167ca357a72eb866f34c1af944f4b9Chet Haase } 20199585adeb4167ca357a72eb866f34c1af944f4b9Chet Haase canvas.restore(); 20299585adeb4167ca357a72eb866f34c1af944f4b9Chet Haase 20399585adeb4167ca357a72eb866f34c1af944f4b9Chet Haase yOffset += 20; 20499585adeb4167ca357a72eb866f34c1af944f4b9Chet Haase canvas.save(); 20599585adeb4167ca357a72eb866f34c1af944f4b9Chet Haase p.setStrokeWidth(1); 20699585adeb4167ca357a72eb866f34c1af944f4b9Chet Haase x = 10 + mOffset; 20799585adeb4167ca357a72eb866f34c1af944f4b9Chet Haase for (float length = 1; length <= 10; length +=1 ) { 20899585adeb4167ca357a72eb866f34c1af944f4b9Chet Haase p.setAntiAlias(false); 20999585adeb4167ca357a72eb866f34c1af944f4b9Chet Haase canvas.drawLine(x, yOffset, x + 1, yOffset + length, p); 21099585adeb4167ca357a72eb866f34c1af944f4b9Chet Haase x += 5; 21199585adeb4167ca357a72eb866f34c1af944f4b9Chet Haase p.setAntiAlias(true); 21299585adeb4167ca357a72eb866f34c1af944f4b9Chet Haase canvas.drawLine(x, yOffset, x + 1, yOffset + length, p); 21399585adeb4167ca357a72eb866f34c1af944f4b9Chet Haase x += 5; 21499585adeb4167ca357a72eb866f34c1af944f4b9Chet Haase } 21599585adeb4167ca357a72eb866f34c1af944f4b9Chet Haase p.setStrokeWidth(2); 21699585adeb4167ca357a72eb866f34c1af944f4b9Chet Haase for (float length = 1; length <= 10; length +=1 ) { 21799585adeb4167ca357a72eb866f34c1af944f4b9Chet Haase p.setAntiAlias(false); 21899585adeb4167ca357a72eb866f34c1af944f4b9Chet Haase canvas.drawLine(x, yOffset, x + 1, yOffset + length, p); 21999585adeb4167ca357a72eb866f34c1af944f4b9Chet Haase x += 10; 22099585adeb4167ca357a72eb866f34c1af944f4b9Chet Haase p.setAntiAlias(true); 22199585adeb4167ca357a72eb866f34c1af944f4b9Chet Haase canvas.drawLine(x, yOffset, x + 1, yOffset + length, p); 22299585adeb4167ca357a72eb866f34c1af944f4b9Chet Haase x += 10; 22399585adeb4167ca357a72eb866f34c1af944f4b9Chet Haase } 22499585adeb4167ca357a72eb866f34c1af944f4b9Chet Haase canvas.restore(); 22599585adeb4167ca357a72eb866f34c1af944f4b9Chet Haase 22699585adeb4167ca357a72eb866f34c1af944f4b9Chet Haase yOffset += 20; 22799585adeb4167ca357a72eb866f34c1af944f4b9Chet Haase canvas.save(); 22899585adeb4167ca357a72eb866f34c1af944f4b9Chet Haase p.setStrokeWidth(1); 22999585adeb4167ca357a72eb866f34c1af944f4b9Chet Haase x = 10 + mOffset; 23099585adeb4167ca357a72eb866f34c1af944f4b9Chet Haase for (float length = 1; length <= 10; length +=1 ) { 23199585adeb4167ca357a72eb866f34c1af944f4b9Chet Haase p.setAntiAlias(false); 23299585adeb4167ca357a72eb866f34c1af944f4b9Chet Haase canvas.drawLine(x, yOffset, x + length, yOffset + 1, p); 23399585adeb4167ca357a72eb866f34c1af944f4b9Chet Haase x += 5; 23499585adeb4167ca357a72eb866f34c1af944f4b9Chet Haase p.setAntiAlias(true); 23599585adeb4167ca357a72eb866f34c1af944f4b9Chet Haase canvas.drawLine(x, yOffset, x + length, yOffset + 1, p); 23699585adeb4167ca357a72eb866f34c1af944f4b9Chet Haase x += 5; 23799585adeb4167ca357a72eb866f34c1af944f4b9Chet Haase } 23899585adeb4167ca357a72eb866f34c1af944f4b9Chet Haase p.setStrokeWidth(2); 23999585adeb4167ca357a72eb866f34c1af944f4b9Chet Haase for (float length = 1; length <= 10; length +=1 ) { 24099585adeb4167ca357a72eb866f34c1af944f4b9Chet Haase p.setAntiAlias(false); 24199585adeb4167ca357a72eb866f34c1af944f4b9Chet Haase canvas.drawLine(x, yOffset, x + length, yOffset + 1, p); 24299585adeb4167ca357a72eb866f34c1af944f4b9Chet Haase x += 10; 24399585adeb4167ca357a72eb866f34c1af944f4b9Chet Haase p.setAntiAlias(true); 24499585adeb4167ca357a72eb866f34c1af944f4b9Chet Haase canvas.drawLine(x, yOffset, x + length, yOffset + 1, p); 24599585adeb4167ca357a72eb866f34c1af944f4b9Chet Haase x += 10; 24699585adeb4167ca357a72eb866f34c1af944f4b9Chet Haase } 24799585adeb4167ca357a72eb866f34c1af944f4b9Chet Haase canvas.restore(); 24899585adeb4167ca357a72eb866f34c1af944f4b9Chet Haase 2495b0200bd47e8a9a4dc8d2e6c3a110d522b30bf82Chet Haase } 2505b0200bd47e8a9a4dc8d2e6c3a110d522b30bf82Chet Haase } 2515b0200bd47e8a9a4dc8d2e6c3a110d522b30bf82Chet Haase} 252