Lines2Activity.java revision 5b0200bd47e8a9a4dc8d2e6c3a110d522b30bf82
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); 455b0200bd47e8a9a4dc8d2e6c3a110d522b30bf82Chet Haase // BUG: some lines not drawn or drawn with alpha when enabling hw layers 465b0200bd47e8a9a4dc8d2e6c3a110d522b30bf82Chet Haase// hwBothView.setLayerType(View.LAYER_TYPE_HARDWARE, null); 475b0200bd47e8a9a4dc8d2e6c3a110d522b30bf82Chet Haase frame.addView(hwBothView); 485b0200bd47e8a9a4dc8d2e6c3a110d522b30bf82Chet Haase final LinesView swBothView = new LinesView(this, 854, Color.RED); 495b0200bd47e8a9a4dc8d2e6c3a110d522b30bf82Chet Haase swBothView.setLayerType(View.LAYER_TYPE_SOFTWARE, null); 505b0200bd47e8a9a4dc8d2e6c3a110d522b30bf82Chet Haase frame.addView(swBothView); 515b0200bd47e8a9a4dc8d2e6c3a110d522b30bf82Chet Haase setContentView(frame); 525b0200bd47e8a9a4dc8d2e6c3a110d522b30bf82Chet Haase } 535b0200bd47e8a9a4dc8d2e6c3a110d522b30bf82Chet Haase 545b0200bd47e8a9a4dc8d2e6c3a110d522b30bf82Chet Haase @Override 555b0200bd47e8a9a4dc8d2e6c3a110d522b30bf82Chet Haase protected void onDestroy() { 565b0200bd47e8a9a4dc8d2e6c3a110d522b30bf82Chet Haase super.onDestroy(); 575b0200bd47e8a9a4dc8d2e6c3a110d522b30bf82Chet Haase } 585b0200bd47e8a9a4dc8d2e6c3a110d522b30bf82Chet Haase 595b0200bd47e8a9a4dc8d2e6c3a110d522b30bf82Chet Haase public static class LinesView extends View { 605b0200bd47e8a9a4dc8d2e6c3a110d522b30bf82Chet Haase 615b0200bd47e8a9a4dc8d2e6c3a110d522b30bf82Chet Haase private float mOffset; 625b0200bd47e8a9a4dc8d2e6c3a110d522b30bf82Chet Haase private int mColor; 635b0200bd47e8a9a4dc8d2e6c3a110d522b30bf82Chet Haase private float[] basePoints = { 645b0200bd47e8a9a4dc8d2e6c3a110d522b30bf82Chet Haase 120, 0, 120, 20, 120, 20, 125, 0, 130, 0, 132, 10 655b0200bd47e8a9a4dc8d2e6c3a110d522b30bf82Chet Haase }; 665b0200bd47e8a9a4dc8d2e6c3a110d522b30bf82Chet Haase private float[] copyPoints = new float[12]; 675b0200bd47e8a9a4dc8d2e6c3a110d522b30bf82Chet Haase 685b0200bd47e8a9a4dc8d2e6c3a110d522b30bf82Chet Haase public LinesView(Context c, float offset, int color) { 695b0200bd47e8a9a4dc8d2e6c3a110d522b30bf82Chet Haase super(c); 705b0200bd47e8a9a4dc8d2e6c3a110d522b30bf82Chet Haase mOffset = offset; 715b0200bd47e8a9a4dc8d2e6c3a110d522b30bf82Chet Haase mColor = color; 725b0200bd47e8a9a4dc8d2e6c3a110d522b30bf82Chet Haase } 735b0200bd47e8a9a4dc8d2e6c3a110d522b30bf82Chet Haase 745b0200bd47e8a9a4dc8d2e6c3a110d522b30bf82Chet Haase private void drawLines(Canvas canvas, Paint p, float xOffset, float yOffset) { 755b0200bd47e8a9a4dc8d2e6c3a110d522b30bf82Chet Haase canvas.drawLine(10 + xOffset, yOffset, 10 + xOffset, 40 + yOffset, p); 765b0200bd47e8a9a4dc8d2e6c3a110d522b30bf82Chet Haase canvas.drawLine(30 + xOffset, yOffset, 40 + xOffset, 40 + yOffset, p); 775b0200bd47e8a9a4dc8d2e6c3a110d522b30bf82Chet Haase canvas.drawLine(40 + xOffset, yOffset, 75 + xOffset, 35 + yOffset, p); 785b0200bd47e8a9a4dc8d2e6c3a110d522b30bf82Chet Haase canvas.drawLine(50 + xOffset, 5+ yOffset, 100 + xOffset, 15 + yOffset, p); 795b0200bd47e8a9a4dc8d2e6c3a110d522b30bf82Chet Haase canvas.drawLine(60 + xOffset, yOffset, 110 + xOffset, 2 + yOffset, p); 805b0200bd47e8a9a4dc8d2e6c3a110d522b30bf82Chet Haase canvas.drawLine(60 + xOffset, 40 + yOffset, 110 + xOffset, 40 + yOffset, p); 815b0200bd47e8a9a4dc8d2e6c3a110d522b30bf82Chet Haase for (int i = 0; i < 12; i += 2) { 825b0200bd47e8a9a4dc8d2e6c3a110d522b30bf82Chet Haase copyPoints[i] = basePoints[i] + xOffset; 835b0200bd47e8a9a4dc8d2e6c3a110d522b30bf82Chet Haase copyPoints[i+1] = basePoints[i+1] + yOffset; 845b0200bd47e8a9a4dc8d2e6c3a110d522b30bf82Chet Haase } 855b0200bd47e8a9a4dc8d2e6c3a110d522b30bf82Chet Haase canvas.drawLines(copyPoints, 0, 12, p); 865b0200bd47e8a9a4dc8d2e6c3a110d522b30bf82Chet Haase } 875b0200bd47e8a9a4dc8d2e6c3a110d522b30bf82Chet Haase 885b0200bd47e8a9a4dc8d2e6c3a110d522b30bf82Chet Haase @Override 895b0200bd47e8a9a4dc8d2e6c3a110d522b30bf82Chet Haase protected void onDraw(Canvas canvas) { 905b0200bd47e8a9a4dc8d2e6c3a110d522b30bf82Chet Haase super.onDraw(canvas); 915b0200bd47e8a9a4dc8d2e6c3a110d522b30bf82Chet Haase Paint p = new Paint(); 925b0200bd47e8a9a4dc8d2e6c3a110d522b30bf82Chet Haase p.setColor(mColor); 935b0200bd47e8a9a4dc8d2e6c3a110d522b30bf82Chet Haase float yOffset = 10; 945b0200bd47e8a9a4dc8d2e6c3a110d522b30bf82Chet Haase 955b0200bd47e8a9a4dc8d2e6c3a110d522b30bf82Chet Haase canvas.save(); 965b0200bd47e8a9a4dc8d2e6c3a110d522b30bf82Chet Haase drawLines(canvas, p, mOffset, yOffset); 975b0200bd47e8a9a4dc8d2e6c3a110d522b30bf82Chet Haase canvas.scale(2, 2); 985b0200bd47e8a9a4dc8d2e6c3a110d522b30bf82Chet Haase canvas.translate(60, 0); 995b0200bd47e8a9a4dc8d2e6c3a110d522b30bf82Chet Haase drawLines(canvas, p, mOffset/2, yOffset/2); 1005b0200bd47e8a9a4dc8d2e6c3a110d522b30bf82Chet Haase canvas.restore(); 1015b0200bd47e8a9a4dc8d2e6c3a110d522b30bf82Chet Haase 1025b0200bd47e8a9a4dc8d2e6c3a110d522b30bf82Chet Haase yOffset +=100; 1035b0200bd47e8a9a4dc8d2e6c3a110d522b30bf82Chet Haase canvas.save(); 1045b0200bd47e8a9a4dc8d2e6c3a110d522b30bf82Chet Haase p.setStrokeWidth(1); 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(2); 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 p.setAntiAlias(true); 1215b0200bd47e8a9a4dc8d2e6c3a110d522b30bf82Chet Haase p.setStrokeWidth(0); 1225b0200bd47e8a9a4dc8d2e6c3a110d522b30bf82Chet Haase yOffset += 100; 1235b0200bd47e8a9a4dc8d2e6c3a110d522b30bf82Chet Haase canvas.save(); 1245b0200bd47e8a9a4dc8d2e6c3a110d522b30bf82Chet Haase drawLines(canvas, p, mOffset, yOffset); 1255b0200bd47e8a9a4dc8d2e6c3a110d522b30bf82Chet Haase canvas.scale(2, 2); 1265b0200bd47e8a9a4dc8d2e6c3a110d522b30bf82Chet Haase canvas.translate(60, 0); 1275b0200bd47e8a9a4dc8d2e6c3a110d522b30bf82Chet Haase drawLines(canvas, p, mOffset/2, yOffset/2); 1285b0200bd47e8a9a4dc8d2e6c3a110d522b30bf82Chet Haase canvas.restore(); 1295b0200bd47e8a9a4dc8d2e6c3a110d522b30bf82Chet Haase 1305b0200bd47e8a9a4dc8d2e6c3a110d522b30bf82Chet Haase yOffset += 100; 1315b0200bd47e8a9a4dc8d2e6c3a110d522b30bf82Chet Haase canvas.save(); 1325b0200bd47e8a9a4dc8d2e6c3a110d522b30bf82Chet Haase p.setStrokeWidth(1); 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(2); 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 } 1495b0200bd47e8a9a4dc8d2e6c3a110d522b30bf82Chet Haase} 150