diff options
Diffstat (limited to 'src/com/android')
-rw-r--r-- | src/com/android/camera/VideoController.java | 2 | ||||
-rw-r--r-- | src/com/android/camera/VideoModule.java | 9 | ||||
-rw-r--r-- | src/com/android/camera/VideoUI.java | 3 | ||||
-rw-r--r-- | src/com/android/camera/ui/CameraControls.java | 2 | ||||
-rw-r--r-- | src/com/android/camera/ui/PieRenderer.java | 48 |
5 files changed, 61 insertions, 3 deletions
diff --git a/src/com/android/camera/VideoController.java b/src/com/android/camera/VideoController.java index 8bde8090f..474f521de 100644 --- a/src/com/android/camera/VideoController.java +++ b/src/com/android/camera/VideoController.java @@ -27,7 +27,7 @@ public interface VideoController extends OnShutterButtonListener { public void onReviewPlayClicked(View view); public boolean isVideoCaptureIntent(); - + public boolean isInReviewMode(); public int onZoomChanged(int index); public void onSingleTapUp(View view, int x, int y); diff --git a/src/com/android/camera/VideoModule.java b/src/com/android/camera/VideoModule.java index 0bcdbabb5..f7830a303 100644 --- a/src/com/android/camera/VideoModule.java +++ b/src/com/android/camera/VideoModule.java @@ -126,6 +126,7 @@ public class VideoModule implements CameraModule, private boolean mIsVideoCaptureIntent; private boolean mQuickCapture; + private boolean mIsInReviewMode = false; private MediaRecorder mMediaRecorder; private EffectsRecorder mEffectsRecorder; @@ -541,15 +542,22 @@ public class VideoModule implements CameraModule, @OnClickAttr public void onReviewDoneClicked(View v) { + mIsInReviewMode = false; doReturnToCaller(true); } @OnClickAttr public void onReviewCancelClicked(View v) { + mIsInReviewMode = false; stopVideoRecording(); doReturnToCaller(false); } + @Override + public boolean isInReviewMode() { + return mIsInReviewMode; + } + private void onStopVideoRecording() { mEffectsDisplayResult = true; boolean recordFail = stopVideoRecording(); @@ -1525,6 +1533,7 @@ public class VideoModule implements CameraModule, } private void showCaptureResult() { + mIsInReviewMode = true; Bitmap bitmap = null; if (mVideoFileDescriptor != null) { bitmap = Thumbnail.createVideoThumbnailBitmap(mVideoFileDescriptor.getFileDescriptor(), diff --git a/src/com/android/camera/VideoUI.java b/src/com/android/camera/VideoUI.java index 0afcd8a8d..0c9457204 100644 --- a/src/com/android/camera/VideoUI.java +++ b/src/com/android/camera/VideoUI.java @@ -293,6 +293,9 @@ public class VideoUI implements SurfaceHolder.Callback, PieRenderer.PieListener, } public void dismissPopup(boolean topLevelPopupOnly, boolean fullScreen) { + // In review mode, we do not want to bring up the camera UI + if (mController.isInReviewMode()) return; + if (fullScreen) { mActivity.showUI(); mBlocker.setVisibility(View.VISIBLE); diff --git a/src/com/android/camera/ui/CameraControls.java b/src/com/android/camera/ui/CameraControls.java index d63a454a9..7940ae0d9 100644 --- a/src/com/android/camera/ui/CameraControls.java +++ b/src/com/android/camera/ui/CameraControls.java @@ -317,7 +317,7 @@ public class CameraControls extends RotatableLayout { // on the wrong side of the screen. We need to make adjustment to move the controls // to the USB side public void adjustControlsToRightPosition() { - int orientation = Util.getDisplayRotation((Activity) getContext()); + int orientation = getUnifiedRotation(); if (orientation >= 180) { flipChildren(); } diff --git a/src/com/android/camera/ui/PieRenderer.java b/src/com/android/camera/ui/PieRenderer.java index 4328b95ae..bdbe6129f 100644 --- a/src/com/android/camera/ui/PieRenderer.java +++ b/src/com/android/camera/ui/PieRenderer.java @@ -71,6 +71,7 @@ public class PieRenderer extends OverlayRenderer private static final long PIE_XFADE_DURATION = 200; private static final long PIE_SELECT_FADE_DURATION = 300; private static final long PIE_OPEN_SUB_DELAY = 400; + private static final long PIE_SLICE_DURATION = 80; private static final int MSG_OPEN = 0; private static final int MSG_CLOSE = 1; @@ -133,6 +134,7 @@ public class PieRenderer extends OverlayRenderer private LinearAnimation mXFade; private LinearAnimation mFadeIn; private FadeOutAnimation mFadeOut; + private LinearAnimation mSlice; private volatile boolean mFocusCancelled; private PointF mPolar = new PointF(); private TextDrawable mLabel; @@ -571,7 +573,12 @@ public class PieRenderer extends OverlayRenderer if (item.isSelected()) { Paint p = mSelectedPaint; int state = canvas.save(); - float angle = getArcCenter(item, pos, count) - SWEEP_ARC / 2f; + float angle = 0; + if (mSlice != null) { + angle = mSlice.getValue(); + } else { + angle = getArcCenter(item, pos, count) - SWEEP_ARC / 2f; + } angle = getDegrees(angle); canvas.rotate(angle, mPieCenterX, y); if (mFadeOut != null) { @@ -715,6 +722,7 @@ public class PieRenderer extends OverlayRenderer mCurrentItem.setSelected(false); } if (item != null && item.isEnabled()) { + moveSelection(mCurrentItem, item); item.setSelected(true); mCurrentItem = item; mLabel.setText(mCurrentItem.getLabel()); @@ -764,6 +772,44 @@ public class PieRenderer extends OverlayRenderer } } + private int getItemPos(PieItem target) { + List<PieItem> items = getOpenItem().getItems(); + return items.indexOf(target); + } + + private int getCurrentCount() { + return getOpenItem().getItems().size(); + } + + private void moveSelection(PieItem from, PieItem to) { + final int count = getCurrentCount(); + final int fromPos = getItemPos(from); + final int toPos = getItemPos(to); + if (fromPos != -1 && toPos != -1) { + float startAngle = getArcCenter(from, getItemPos(from), count) + - SWEEP_ARC / 2f; + float endAngle = getArcCenter(to, getItemPos(to), count) + - SWEEP_ARC / 2f; + mSlice = new LinearAnimation(startAngle, endAngle); + mSlice.setDuration(PIE_SLICE_DURATION); + mSlice.setAnimationListener(new AnimationListener() { + @Override + public void onAnimationEnd(Animation arg0) { + mSlice = null; + } + + @Override + public void onAnimationRepeat(Animation arg0) { + } + + @Override + public void onAnimationStart(Animation arg0) { + } + }); + mOverlay.startAnimation(mSlice); + } + } + private void openCurrentItem() { if ((mCurrentItem != null) && mCurrentItem.hasItems()) { mOpen.add(mCurrentItem); |