diff options
Diffstat (limited to 'src/com/android/browser/CircularProgressView.java')
-rw-r--r-- | src/com/android/browser/CircularProgressView.java | 140 |
1 files changed, 0 insertions, 140 deletions
diff --git a/src/com/android/browser/CircularProgressView.java b/src/com/android/browser/CircularProgressView.java deleted file mode 100644 index 48f293a..0000000 --- a/src/com/android/browser/CircularProgressView.java +++ /dev/null @@ -1,140 +0,0 @@ - -/* - * Copyright (C) 2010 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.browser; - -import android.content.Context; -import android.graphics.Canvas; -import android.graphics.Color; -import android.graphics.Paint; -import android.graphics.Path; -import android.graphics.RectF; -import android.util.AttributeSet; -import android.widget.ImageButton; - -/** - * - */ -public class CircularProgressView extends ImageButton { - - private static final int[] ALPHAS = { - 64, 96, 128, 160, 192, 192, 160, 128, 96, 64 - }; - - // 100 ms delay between frames, 10fps - private static int ALPHA_REFRESH_DELAY = 100; - - private int mEndAngle; - private int mProgress; - private Paint mPaint; - private int mAlpha; - private boolean mAnimated; - private RectF mRect; - private int mMaxProgress; - - /** - * @param context - * @param attrs - * @param defStyle - */ - public CircularProgressView(Context context, AttributeSet attrs, int defStyle) { - super(context, attrs, defStyle); - init(context); - } - - /** - * @param context - * @param attrs - */ - public CircularProgressView(Context context, AttributeSet attrs) { - super(context, attrs); - init(context); - } - - /** - * @param context - */ - public CircularProgressView(Context context) { - super(context); - init(context); - } - - private void init(Context ctx) { - mEndAngle = 0; - mProgress = 0; - mMaxProgress = 100; - mPaint = new Paint(); - mPaint.setAntiAlias(true); - mPaint.setColor(Color.BLACK); - mRect = new RectF(); - } - - void setMaxProgress(int max) { - mMaxProgress = max; - } - - private synchronized boolean isAnimated() { - return mAnimated; - } - - private synchronized void setAnimated(boolean animated) { - mAnimated = animated; - } - - void setProgress(int progress) { - mProgress = progress; - mEndAngle = 360 * progress / mMaxProgress; - invalidate(); - if (!isAnimated() && (progress > 0) && (progress < mMaxProgress)) { - setAnimated(true); - mAlpha = 0; - post(new Runnable() { - @Override - public void run() { - if (isAnimated()) { - mAlpha = (mAlpha + 1) % ALPHAS.length; - mPaint.setAlpha(ALPHAS[mAlpha]); - invalidate(); - postDelayed(this, ALPHA_REFRESH_DELAY); - } - } - }); - } else if ((progress <= 0) || (progress >= mMaxProgress)) { - setAnimated(false); - } - } - - @Override - public void onDraw(Canvas canvas) { - int w = getWidth(); - int h = getHeight(); - float cx = w * 0.5f; - float cy = h * 0.5f; - mRect.set(0, 0, w, h); - if ((mProgress > 0) && (mProgress < mMaxProgress)) { - Path p = new Path(); - p.moveTo(cx, cy); - p.lineTo(cx, 0); - p.arcTo(mRect, 270, mEndAngle); - p.lineTo(cx, cy); - int state = canvas.save(); - canvas.drawPath(p, mPaint); - canvas.restoreToCount(state); - } - super.onDraw(canvas); - } - -} |