summaryrefslogtreecommitdiffstats
path: root/src/com/android/camera/ui/PieRenderer.java
diff options
context:
space:
mode:
Diffstat (limited to 'src/com/android/camera/ui/PieRenderer.java')
-rw-r--r--src/com/android/camera/ui/PieRenderer.java59
1 files changed, 40 insertions, 19 deletions
diff --git a/src/com/android/camera/ui/PieRenderer.java b/src/com/android/camera/ui/PieRenderer.java
index 008bc40ca..0039aa22c 100644
--- a/src/com/android/camera/ui/PieRenderer.java
+++ b/src/com/android/camera/ui/PieRenderer.java
@@ -16,9 +16,6 @@
package com.android.camera.ui;
-import java.util.ArrayList;
-import java.util.List;
-
import android.animation.Animator;
import android.animation.Animator.AnimatorListener;
import android.animation.ValueAnimator;
@@ -40,12 +37,19 @@ import android.view.animation.Animation;
import android.view.animation.Transformation;
import com.android.camera.drawable.TextDrawable;
+import com.android.camera.ui.ProgressRenderer.VisibilityListener;
import com.android.camera2.R;
+import java.util.ArrayList;
+import java.util.List;
+
+/**
+ * An overlay renderer that is used to display focus state and progress state.
+ */
public class PieRenderer extends OverlayRenderer
implements FocusIndicator {
- private static final String TAG = "CAM Pie";
+ private static final String TAG = "PieRenderer";
// Sometimes continuous autofocus starts and stops several times quickly.
// These states are used to make sure the animation is run for at least some
@@ -143,7 +147,7 @@ public class PieRenderer extends OverlayRenderer
private int mAngleZone;
private float mCenterAngle;
-
+ private ProgressRenderer mProgressRenderer;
private Handler mHandler = new Handler() {
public void handleMessage(Message msg) {
@@ -227,6 +231,7 @@ public class PieRenderer extends OverlayRenderer
mLabel.setDropShadow(true);
mDeadZone = res.getDimensionPixelSize(R.dimen.pie_deadzone_width);
mAngleZone = res.getDimensionPixelSize(R.dimen.pie_anglezone_width);
+ mProgressRenderer = new ProgressRenderer(ctx);
}
private PieItem getRoot() {
@@ -309,6 +314,10 @@ public class PieRenderer extends OverlayRenderer
return mState == STATE_PIE && isVisible();
}
+ public void setProgress(int percent) {
+ mProgressRenderer.setProgress(percent);
+ }
+
private void fadeIn() {
mFadeIn = new ValueAnimator();
mFadeIn.setFloatValues(0f, 1f);
@@ -524,6 +533,8 @@ public class PieRenderer extends OverlayRenderer
@Override
public void onDraw(Canvas canvas) {
+ mProgressRenderer.onDraw(canvas, mFocusX, mFocusY);
+
float alpha = 1;
if (mXFade != null) {
alpha = (Float) mXFade.getAnimatedValue();
@@ -706,6 +717,11 @@ public class PieRenderer extends OverlayRenderer
return false;
}
+ @Override
+ public boolean isVisible() {
+ return super.isVisible() || mProgressRenderer.isVisible();
+ }
+
private boolean pulledToCenter(PointF polarCoords) {
return polarCoords.y < mArcRadius - mRadiusInc;
}
@@ -918,17 +934,6 @@ public class PieRenderer extends OverlayRenderer
setCircle(mFocusX, mFocusY);
}
- public void alignFocus(int x, int y) {
- mOverlay.removeCallbacks(mDisappear);
- mAnimation.cancel();
- mAnimation.reset();
- mFocusX = x;
- mFocusY = y;
- mDialAngle = DIAL_HORIZONTAL;
- setCircle(x, y);
- mFocused = false;
- }
-
public int getSize() {
return 2 * mCircleSize;
}
@@ -1022,11 +1027,27 @@ public class PieRenderer extends OverlayRenderer
mState = STATE_IDLE;
}
+ public void clear(boolean waitUntilProgressIsHidden) {
+ if (mState == STATE_PIE)
+ return;
+ cancelFocus();
+
+ if (waitUntilProgressIsHidden) {
+ mProgressRenderer.setVisibilityListener(new VisibilityListener() {
+ @Override
+ public void onHidden() {
+ mOverlay.post(mDisappear);
+ }
+ });
+ } else {
+ mOverlay.post(mDisappear);
+ mProgressRenderer.setVisibilityListener(null);
+ }
+ }
+
@Override
public void clear() {
- if (mState == STATE_PIE) return;
- cancelFocus();
- mOverlay.post(mDisappear);
+ clear(false);
}
private void startAnimation(long duration, boolean timeout,