diff options
author | Wu-cheng Li <wuchengli@google.com> | 2011-09-08 16:02:57 -0700 |
---|---|---|
committer | Android (Google) Code Review <android-gerrit@google.com> | 2011-09-08 16:02:57 -0700 |
commit | b332a22d55a38ee35008d98da3519730d1fa086b (patch) | |
tree | 75a4fa052818be118252555fc80486035af6cf99 /src/com/android | |
parent | e752888d9da1345e5426b7992b324177f00785e9 (diff) | |
parent | 6a6cad85e4932ca6b3f00acd6617e9ad1701d13d (diff) | |
download | LegacyCamera-b332a22d55a38ee35008d98da3519730d1fa086b.zip LegacyCamera-b332a22d55a38ee35008d98da3519730d1fa086b.tar.gz LegacyCamera-b332a22d55a38ee35008d98da3519730d1fa086b.tar.bz2 |
Merge "Put a red border around the viewfinder during video snapshot."
Diffstat (limited to 'src/com/android')
-rw-r--r-- | src/com/android/camera/Camera.java | 2 | ||||
-rw-r--r-- | src/com/android/camera/PreviewFrameLayout.java | 35 | ||||
-rw-r--r-- | src/com/android/camera/VideoCamera.java | 30 |
3 files changed, 39 insertions, 28 deletions
diff --git a/src/com/android/camera/Camera.java b/src/com/android/camera/Camera.java index 7d8a986..23dd6aa 100644 --- a/src/com/android/camera/Camera.java +++ b/src/com/android/camera/Camera.java @@ -148,7 +148,6 @@ public class Camera extends ActivityBase implements FocusManager.Listener, private PreviewFrameLayout mPreviewFrameLayout; private View mPreviewFrame; // Preview frame area. - private View mPreviewBorder; // A popup window that contains a bigger thumbnail and a list of apps to share. private SharePopup mSharePopup; @@ -376,7 +375,6 @@ public class Camera extends ActivityBase implements FocusManager.Listener, // Initialize focus UI. mPreviewFrame = findViewById(R.id.camera_preview); mPreviewFrame.setOnTouchListener(this); - mPreviewBorder = findViewById(R.id.preview_border); mFocusIndicator = (RotateLayout) findViewById(R.id.focus_indicator_rotate_layout); mFocusManager.initialize(mFocusIndicator, mPreviewFrame, mFaceView, this); mFocusManager.initializeToneGenerator(); diff --git a/src/com/android/camera/PreviewFrameLayout.java b/src/com/android/camera/PreviewFrameLayout.java index 75e7c35..d19ff6d 100644 --- a/src/com/android/camera/PreviewFrameLayout.java +++ b/src/com/android/camera/PreviewFrameLayout.java @@ -34,7 +34,7 @@ public class PreviewFrameLayout extends RelativeLayout { private double mAspectRatio = 4.0 / 3.0; private View mFrame; - private View mBorderView; + private View mPreviewBorder; private final DisplayMetrics mMetrics = new DisplayMetrics(); public PreviewFrameLayout(Context context, AttributeSet attrs) { @@ -47,7 +47,7 @@ public class PreviewFrameLayout extends RelativeLayout { protected void onFinishInflate() { super.onFinishInflate(); mFrame = (View) findViewById(R.id.frame); - mBorderView = (View) findViewById(R.id.preview_border); + mPreviewBorder = (View) findViewById(R.id.preview_border); } public void setAspectRatio(double ratio) { @@ -64,11 +64,14 @@ public class PreviewFrameLayout extends RelativeLayout { // Calculate the width and the height of preview frame. int frameWidth = getWidth(); int frameHeight = getHeight(); - View f = mBorderView; - int horizontalPadding = f.getPaddingLeft() + f.getPaddingRight(); - int verticalPadding = f.getPaddingBottom() + f.getPaddingTop(); - int previewHeight = frameHeight - verticalPadding; - int previewWidth = frameWidth - horizontalPadding; + int hPadding = 0; + int vPadding = 0; + if (mPreviewBorder != null) { + hPadding = mPreviewBorder.getPaddingLeft() + mPreviewBorder.getPaddingRight(); + vPadding = mPreviewBorder.getPaddingBottom() + mPreviewBorder.getPaddingTop(); + } + int previewHeight = frameHeight - vPadding; + int previewWidth = frameWidth - hPadding; if (previewWidth > previewHeight * mAspectRatio) { previewWidth = (int) (previewHeight * mAspectRatio + .5); } else { @@ -84,13 +87,15 @@ public class PreviewFrameLayout extends RelativeLayout { mFrame.layout(hSpace, vSpace, frameWidth + hSpace, frameHeight + vSpace); // Measure and layout the border of preview frame. - frameWidth = previewWidth + horizontalPadding; - frameHeight = previewHeight + verticalPadding; - hSpace = ((r - l) - frameWidth) / 2; - vSpace = ((b - t) - frameHeight) / 2; - mBorderView.measure( - MeasureSpec.makeMeasureSpec(frameWidth, MeasureSpec.EXACTLY), - MeasureSpec.makeMeasureSpec(frameHeight, MeasureSpec.EXACTLY)); - mBorderView.layout(hSpace, vSpace, frameWidth + hSpace, frameHeight + vSpace); + if (mPreviewBorder != null) { + frameWidth = previewWidth + hPadding; + frameHeight = previewHeight + vPadding; + hSpace = ((r - l) - frameWidth) / 2; + vSpace = ((b - t) - frameHeight) / 2; + mPreviewBorder.measure( + MeasureSpec.makeMeasureSpec(frameWidth, MeasureSpec.EXACTLY), + MeasureSpec.makeMeasureSpec(frameHeight, MeasureSpec.EXACTLY)); + mPreviewBorder.layout(hSpace, vSpace, frameWidth + hSpace, frameHeight + vSpace); + } } } diff --git a/src/com/android/camera/VideoCamera.java b/src/com/android/camera/VideoCamera.java index 6b7fd3b..f0ebe05 100644 --- a/src/com/android/camera/VideoCamera.java +++ b/src/com/android/camera/VideoCamera.java @@ -443,18 +443,14 @@ public class VideoCamera extends ActivityBase } showTimeLapseUI(mCaptureTimeLapse); + initializeVideoSnapshot(); resizeForPreviewAspectRatio(); mBackCameraId = CameraHolder.instance().getBackCameraId(); mFrontCameraId = CameraHolder.instance().getFrontCameraId(); - // Initialize after startPreview becuase this need mParameters. initializeZoomControl(); initializeIndicatorControl(); - if ("true".equals(mParameters.get("video-snapshot-supported")) && - !mIsVideoCaptureIntent) { - preview.setOnTouchListener(this); - } } private void loadCameraPreferences() { @@ -806,6 +802,7 @@ public class VideoCamera extends ActivityBase mZoomValue = 0; mReviewImage.setVisibility(View.GONE); + showVideoSnapshotUI(false); // Start orientation listener as soon as possible because it takes // some time to get first orientation. @@ -2037,12 +2034,6 @@ public class VideoCamera extends ActivityBase if (mTimeLapseLabel != null) { mTimeLapseLabel.setVisibility(enable ? View.VISIBLE : View.GONE); } - if (mPreviewBorder != null) { - mPreviewBorder.setBackgroundResource(enable - ? R.drawable.border_preview_time_lapse - : R.drawable.border_preview); - } - } private void showSharePopup() { @@ -2171,6 +2162,21 @@ public class VideoCamera extends ActivityBase } } + private void initializeVideoSnapshot() { + if ("true".equals(mParameters.get("video-snapshot-supported")) && + !mIsVideoCaptureIntent) { + findViewById(R.id.camera_preview).setOnTouchListener(this); + mPreviewBorder.setBackgroundResource(R.drawable.ic_snapshot_border); + } + } + + void showVideoSnapshotUI(boolean enable) { + if ("true".equals(mParameters.get("video-snapshot-supported")) && + !mIsVideoCaptureIntent) { + mPreviewBorder.setVisibility(enable ? View.VISIBLE : View.INVISIBLE); + } + } + // Preview area is touched. Take a picture. @Override public boolean onTouch(View v, MotionEvent e) { @@ -2186,6 +2192,7 @@ public class VideoCamera extends ActivityBase Log.v(TAG, "Video snapshot start"); mCameraDevice.takePicture(null, null, null, new JpegPictureCallback(loc)); + showVideoSnapshotUI(true); mSnapshotInProgress = true; return true; } @@ -2201,6 +2208,7 @@ public class VideoCamera extends ActivityBase public void onPictureTaken(byte [] jpegData, android.hardware.Camera camera) { Log.v(TAG, "onPictureTaken"); mSnapshotInProgress = false; + showVideoSnapshotUI(false); storeImage(jpegData, mLocation); } } |