PointsActivity.java revision 8a5cc92a150bae38ec43732d941b38bb381fe153
18a5cc92a150bae38ec43732d941b38bb381fe153Chet Haase/* 28a5cc92a150bae38ec43732d941b38bb381fe153Chet Haase * Copyright (C) 2011 The Android Open Source Project 38a5cc92a150bae38ec43732d941b38bb381fe153Chet Haase * 48a5cc92a150bae38ec43732d941b38bb381fe153Chet Haase * Licensed under the Apache License, Version 2.0 (the "License"); 58a5cc92a150bae38ec43732d941b38bb381fe153Chet Haase * you may not use this file except in compliance with the License. 68a5cc92a150bae38ec43732d941b38bb381fe153Chet Haase * You may obtain a copy of the License at 78a5cc92a150bae38ec43732d941b38bb381fe153Chet Haase * 88a5cc92a150bae38ec43732d941b38bb381fe153Chet Haase * http://www.apache.org/licenses/LICENSE-2.0 98a5cc92a150bae38ec43732d941b38bb381fe153Chet Haase * 108a5cc92a150bae38ec43732d941b38bb381fe153Chet Haase * Unless required by applicable law or agreed to in writing, software 118a5cc92a150bae38ec43732d941b38bb381fe153Chet Haase * distributed under the License is distributed on an "AS IS" BASIS, 128a5cc92a150bae38ec43732d941b38bb381fe153Chet Haase * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 138a5cc92a150bae38ec43732d941b38bb381fe153Chet Haase * See the License for the specific language governing permissions and 148a5cc92a150bae38ec43732d941b38bb381fe153Chet Haase * limitations under the License. 158a5cc92a150bae38ec43732d941b38bb381fe153Chet Haase */ 168a5cc92a150bae38ec43732d941b38bb381fe153Chet Haase 178a5cc92a150bae38ec43732d941b38bb381fe153Chet Haasepackage com.android.test.hwui; 188a5cc92a150bae38ec43732d941b38bb381fe153Chet Haase 198a5cc92a150bae38ec43732d941b38bb381fe153Chet Haaseimport android.animation.ObjectAnimator; 208a5cc92a150bae38ec43732d941b38bb381fe153Chet Haaseimport android.app.Activity; 218a5cc92a150bae38ec43732d941b38bb381fe153Chet Haaseimport android.content.Context; 228a5cc92a150bae38ec43732d941b38bb381fe153Chet Haaseimport android.graphics.Canvas; 238a5cc92a150bae38ec43732d941b38bb381fe153Chet Haaseimport android.graphics.Color; 248a5cc92a150bae38ec43732d941b38bb381fe153Chet Haaseimport android.graphics.Paint; 258a5cc92a150bae38ec43732d941b38bb381fe153Chet Haaseimport android.graphics.drawable.ColorDrawable; 268a5cc92a150bae38ec43732d941b38bb381fe153Chet Haaseimport android.os.Bundle; 278a5cc92a150bae38ec43732d941b38bb381fe153Chet Haaseimport android.view.View; 288a5cc92a150bae38ec43732d941b38bb381fe153Chet Haaseimport android.widget.FrameLayout; 298a5cc92a150bae38ec43732d941b38bb381fe153Chet Haaseimport android.widget.LinearLayout; 308a5cc92a150bae38ec43732d941b38bb381fe153Chet Haaseimport android.widget.ProgressBar; 318a5cc92a150bae38ec43732d941b38bb381fe153Chet Haaseimport android.widget.SeekBar; 328a5cc92a150bae38ec43732d941b38bb381fe153Chet Haase 338a5cc92a150bae38ec43732d941b38bb381fe153Chet Haase@SuppressWarnings({"UnusedDeclaration"}) 348a5cc92a150bae38ec43732d941b38bb381fe153Chet Haasepublic class PointsActivity extends Activity { 358a5cc92a150bae38ec43732d941b38bb381fe153Chet Haase 368a5cc92a150bae38ec43732d941b38bb381fe153Chet Haase float mSeekValue = .5f; 378a5cc92a150bae38ec43732d941b38bb381fe153Chet Haase 388a5cc92a150bae38ec43732d941b38bb381fe153Chet Haase @Override 398a5cc92a150bae38ec43732d941b38bb381fe153Chet Haase protected void onCreate(Bundle savedInstanceState) { 408a5cc92a150bae38ec43732d941b38bb381fe153Chet Haase super.onCreate(savedInstanceState); 418a5cc92a150bae38ec43732d941b38bb381fe153Chet Haase getWindow().setBackgroundDrawable(new ColorDrawable(0xff000000)); 428a5cc92a150bae38ec43732d941b38bb381fe153Chet Haase SeekBar slider = new SeekBar(this); 438a5cc92a150bae38ec43732d941b38bb381fe153Chet Haase LinearLayout container = new LinearLayout(this); 448a5cc92a150bae38ec43732d941b38bb381fe153Chet Haase container.setOrientation(LinearLayout.VERTICAL); 458a5cc92a150bae38ec43732d941b38bb381fe153Chet Haase setContentView(container); 468a5cc92a150bae38ec43732d941b38bb381fe153Chet Haase 478a5cc92a150bae38ec43732d941b38bb381fe153Chet Haase container.addView(slider); 488a5cc92a150bae38ec43732d941b38bb381fe153Chet Haase slider.setMax(100); 498a5cc92a150bae38ec43732d941b38bb381fe153Chet Haase slider.setProgress(50); 508a5cc92a150bae38ec43732d941b38bb381fe153Chet Haase FrameLayout frame = new FrameLayout(this); 518a5cc92a150bae38ec43732d941b38bb381fe153Chet Haase final RenderingView gpuView = new RenderingView(this, Color.GREEN); 528a5cc92a150bae38ec43732d941b38bb381fe153Chet Haase frame.addView(gpuView); 538a5cc92a150bae38ec43732d941b38bb381fe153Chet Haase final RenderingView swView = new RenderingView(this, Color.RED); 548a5cc92a150bae38ec43732d941b38bb381fe153Chet Haase swView.setLayerType(View.LAYER_TYPE_SOFTWARE, null); 558a5cc92a150bae38ec43732d941b38bb381fe153Chet Haase frame.addView(swView); 568a5cc92a150bae38ec43732d941b38bb381fe153Chet Haase container.addView(frame); 578a5cc92a150bae38ec43732d941b38bb381fe153Chet Haase 588a5cc92a150bae38ec43732d941b38bb381fe153Chet Haase slider.setOnSeekBarChangeListener(new SeekBar.OnSeekBarChangeListener() { 598a5cc92a150bae38ec43732d941b38bb381fe153Chet Haase @Override 608a5cc92a150bae38ec43732d941b38bb381fe153Chet Haase public void onProgressChanged(SeekBar seekBar, int progress, boolean fromUser) { 618a5cc92a150bae38ec43732d941b38bb381fe153Chet Haase mSeekValue = (float)progress / 100.0f; 628a5cc92a150bae38ec43732d941b38bb381fe153Chet Haase float gpuAlpha = Math.min(2.0f * mSeekValue, 1f); 638a5cc92a150bae38ec43732d941b38bb381fe153Chet Haase gpuView.setAlpha(gpuAlpha); 648a5cc92a150bae38ec43732d941b38bb381fe153Chet Haase float swAlpha = Math.min((1 - mSeekValue) * 2.0f, 1f); 658a5cc92a150bae38ec43732d941b38bb381fe153Chet Haase System.out.println("(gpuAlpha, swAlpha = " + gpuAlpha + ", " + swAlpha); 668a5cc92a150bae38ec43732d941b38bb381fe153Chet Haase swView.setAlpha(swAlpha); 678a5cc92a150bae38ec43732d941b38bb381fe153Chet Haase } 688a5cc92a150bae38ec43732d941b38bb381fe153Chet Haase 698a5cc92a150bae38ec43732d941b38bb381fe153Chet Haase @Override 708a5cc92a150bae38ec43732d941b38bb381fe153Chet Haase public void onStartTrackingTouch(SeekBar seekBar) { 718a5cc92a150bae38ec43732d941b38bb381fe153Chet Haase } 728a5cc92a150bae38ec43732d941b38bb381fe153Chet Haase 738a5cc92a150bae38ec43732d941b38bb381fe153Chet Haase @Override 748a5cc92a150bae38ec43732d941b38bb381fe153Chet Haase public void onStopTrackingTouch(SeekBar seekBar) { 758a5cc92a150bae38ec43732d941b38bb381fe153Chet Haase } 768a5cc92a150bae38ec43732d941b38bb381fe153Chet Haase }); 778a5cc92a150bae38ec43732d941b38bb381fe153Chet Haase } 788a5cc92a150bae38ec43732d941b38bb381fe153Chet Haase 798a5cc92a150bae38ec43732d941b38bb381fe153Chet Haase @Override 808a5cc92a150bae38ec43732d941b38bb381fe153Chet Haase protected void onDestroy() { 818a5cc92a150bae38ec43732d941b38bb381fe153Chet Haase super.onDestroy(); 828a5cc92a150bae38ec43732d941b38bb381fe153Chet Haase } 838a5cc92a150bae38ec43732d941b38bb381fe153Chet Haase 848a5cc92a150bae38ec43732d941b38bb381fe153Chet Haase public static class RenderingView extends View { 858a5cc92a150bae38ec43732d941b38bb381fe153Chet Haase 868a5cc92a150bae38ec43732d941b38bb381fe153Chet Haase private int mColor; 878a5cc92a150bae38ec43732d941b38bb381fe153Chet Haase 888a5cc92a150bae38ec43732d941b38bb381fe153Chet Haase public RenderingView(Context c, int color) { 898a5cc92a150bae38ec43732d941b38bb381fe153Chet Haase super(c); 908a5cc92a150bae38ec43732d941b38bb381fe153Chet Haase mColor = color; 918a5cc92a150bae38ec43732d941b38bb381fe153Chet Haase } 928a5cc92a150bae38ec43732d941b38bb381fe153Chet Haase 938a5cc92a150bae38ec43732d941b38bb381fe153Chet Haase private void drawPoints(Canvas canvas, Paint p, float xOffset, float yOffset) { 948a5cc92a150bae38ec43732d941b38bb381fe153Chet Haase } 958a5cc92a150bae38ec43732d941b38bb381fe153Chet Haase 968a5cc92a150bae38ec43732d941b38bb381fe153Chet Haase @Override 978a5cc92a150bae38ec43732d941b38bb381fe153Chet Haase protected void onDraw(Canvas canvas) { 988a5cc92a150bae38ec43732d941b38bb381fe153Chet Haase super.onDraw(canvas); 998a5cc92a150bae38ec43732d941b38bb381fe153Chet Haase Paint p = new Paint(); 1008a5cc92a150bae38ec43732d941b38bb381fe153Chet Haase p.setColor(mColor); 1018a5cc92a150bae38ec43732d941b38bb381fe153Chet Haase 1028a5cc92a150bae38ec43732d941b38bb381fe153Chet Haase float yOffset = 0; 1038a5cc92a150bae38ec43732d941b38bb381fe153Chet Haase for (int i = 0; i < 2; ++i) { 1048a5cc92a150bae38ec43732d941b38bb381fe153Chet Haase float xOffset = 0; 1058a5cc92a150bae38ec43732d941b38bb381fe153Chet Haase 1068a5cc92a150bae38ec43732d941b38bb381fe153Chet Haase p.setStrokeWidth(0f); 1078a5cc92a150bae38ec43732d941b38bb381fe153Chet Haase p.setStrokeCap(Paint.Cap.SQUARE); 1088a5cc92a150bae38ec43732d941b38bb381fe153Chet Haase canvas.drawPoint(100 + xOffset, 100 + yOffset, p); 1098a5cc92a150bae38ec43732d941b38bb381fe153Chet Haase xOffset += 5; 1108a5cc92a150bae38ec43732d941b38bb381fe153Chet Haase 1118a5cc92a150bae38ec43732d941b38bb381fe153Chet Haase p.setStrokeWidth(1f); 1128a5cc92a150bae38ec43732d941b38bb381fe153Chet Haase canvas.drawPoint(100 + xOffset, 100 + yOffset, p); 1138a5cc92a150bae38ec43732d941b38bb381fe153Chet Haase xOffset += 15; 1148a5cc92a150bae38ec43732d941b38bb381fe153Chet Haase 1158a5cc92a150bae38ec43732d941b38bb381fe153Chet Haase p.setStrokeWidth(20); 1168a5cc92a150bae38ec43732d941b38bb381fe153Chet Haase canvas.drawPoint(100 + xOffset, 100 + yOffset, p); 1178a5cc92a150bae38ec43732d941b38bb381fe153Chet Haase xOffset += 30; 1188a5cc92a150bae38ec43732d941b38bb381fe153Chet Haase 1198a5cc92a150bae38ec43732d941b38bb381fe153Chet Haase p.setStrokeCap(Paint.Cap.ROUND); 1208a5cc92a150bae38ec43732d941b38bb381fe153Chet Haase canvas.drawPoint(100 + xOffset, 100 + yOffset, p); 1218a5cc92a150bae38ec43732d941b38bb381fe153Chet Haase 1228a5cc92a150bae38ec43732d941b38bb381fe153Chet Haase p.setAntiAlias(true); 1238a5cc92a150bae38ec43732d941b38bb381fe153Chet Haase yOffset += 30; 1248a5cc92a150bae38ec43732d941b38bb381fe153Chet Haase } 1258a5cc92a150bae38ec43732d941b38bb381fe153Chet Haase 1268a5cc92a150bae38ec43732d941b38bb381fe153Chet Haase } 1278a5cc92a150bae38ec43732d941b38bb381fe153Chet Haase } 1288a5cc92a150bae38ec43732d941b38bb381fe153Chet Haase} 129