| /* |
| * Copyright (C) 2011 The Android Open Source Project |
| * |
| * Licensed under the Apache License, Version 2.0 (the "License"); |
| * you may not use this file except in compliance with the License. |
| * You may obtain a copy of the License at |
| * |
| * http://www.apache.org/licenses/LICENSE-2.0 |
| * |
| * Unless required by applicable law or agreed to in writing, software |
| * distributed under the License is distributed on an "AS IS" BASIS, |
| * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. |
| * See the License for the specific language governing permissions and |
| * limitations under the License. |
| */ |
| |
| package com.android.test.hwui; |
| |
| import android.animation.ObjectAnimator; |
| import android.app.Activity; |
| import android.content.Context; |
| import android.graphics.Canvas; |
| import android.graphics.Color; |
| import android.graphics.Paint; |
| import android.graphics.drawable.ColorDrawable; |
| import android.os.Bundle; |
| import android.view.View; |
| import android.widget.FrameLayout; |
| import android.widget.LinearLayout; |
| import android.widget.ProgressBar; |
| import android.widget.SeekBar; |
| |
| @SuppressWarnings({"UnusedDeclaration"}) |
| public class PointsActivity extends Activity { |
| |
| float mSeekValue = .5f; |
| |
| @Override |
| protected void onCreate(Bundle savedInstanceState) { |
| super.onCreate(savedInstanceState); |
| getWindow().setBackgroundDrawable(new ColorDrawable(0xff000000)); |
| SeekBar slider = new SeekBar(this); |
| LinearLayout container = new LinearLayout(this); |
| container.setOrientation(LinearLayout.VERTICAL); |
| setContentView(container); |
| |
| container.addView(slider); |
| slider.setMax(100); |
| slider.setProgress(50); |
| FrameLayout frame = new FrameLayout(this); |
| final RenderingView gpuView = new RenderingView(this, Color.GREEN); |
| frame.addView(gpuView); |
| final RenderingView swView = new RenderingView(this, Color.RED); |
| swView.setLayerType(View.LAYER_TYPE_SOFTWARE, null); |
| frame.addView(swView); |
| container.addView(frame); |
| |
| slider.setOnSeekBarChangeListener(new SeekBar.OnSeekBarChangeListener() { |
| @Override |
| public void onProgressChanged(SeekBar seekBar, int progress, boolean fromUser) { |
| mSeekValue = (float)progress / 100.0f; |
| float gpuAlpha = Math.min(2.0f * mSeekValue, 1f); |
| gpuView.setAlpha(gpuAlpha); |
| float swAlpha = Math.min((1 - mSeekValue) * 2.0f, 1f); |
| System.out.println("(gpuAlpha, swAlpha = " + gpuAlpha + ", " + swAlpha); |
| swView.setAlpha(swAlpha); |
| } |
| |
| @Override |
| public void onStartTrackingTouch(SeekBar seekBar) { |
| } |
| |
| @Override |
| public void onStopTrackingTouch(SeekBar seekBar) { |
| } |
| }); |
| } |
| |
| @Override |
| protected void onDestroy() { |
| super.onDestroy(); |
| } |
| |
| public static class RenderingView extends View { |
| |
| private int mColor; |
| |
| public RenderingView(Context c, int color) { |
| super(c); |
| mColor = color; |
| } |
| |
| private void drawPoints(Canvas canvas, Paint p, float xOffset, float yOffset) { |
| } |
| |
| @Override |
| protected void onDraw(Canvas canvas) { |
| super.onDraw(canvas); |
| Paint p = new Paint(); |
| p.setColor(mColor); |
| |
| float yOffset = 0; |
| for (int i = 0; i < 2; ++i) { |
| float xOffset = 0; |
| |
| p.setStrokeWidth(0f); |
| p.setStrokeCap(Paint.Cap.SQUARE); |
| canvas.drawPoint(100 + xOffset, 100 + yOffset, p); |
| xOffset += 5; |
| |
| p.setStrokeWidth(1f); |
| canvas.drawPoint(100 + xOffset, 100 + yOffset, p); |
| xOffset += 15; |
| |
| p.setStrokeWidth(20); |
| canvas.drawPoint(100 + xOffset, 100 + yOffset, p); |
| xOffset += 30; |
| |
| p.setStrokeCap(Paint.Cap.ROUND); |
| canvas.drawPoint(100 + xOffset, 100 + yOffset, p); |
| |
| p.setAntiAlias(true); |
| yOffset += 30; |
| } |
| |
| } |
| } |
| } |