diff options
Diffstat (limited to 'src/com/android/camera/WideAnglePanoramaUI.java')
-rw-r--r-- | src/com/android/camera/WideAnglePanoramaUI.java | 62 |
1 files changed, 46 insertions, 16 deletions
diff --git a/src/com/android/camera/WideAnglePanoramaUI.java b/src/com/android/camera/WideAnglePanoramaUI.java index 46cf173bb..523abe411 100644 --- a/src/com/android/camera/WideAnglePanoramaUI.java +++ b/src/com/android/camera/WideAnglePanoramaUI.java @@ -99,7 +99,6 @@ public class WideAnglePanoramaUI implements // Color definitions. private int mIndicatorColor; private int mIndicatorColorFast; - private int mReviewBackground; private SurfaceTexture mSurfaceTexture; private View mPreviewCover; @@ -109,6 +108,10 @@ public class WideAnglePanoramaUI implements private RotateLayout mPanoFailedDialog; private Button mPanoFailedButton; + private int mTopMargin = 0; + private int mBottomMargin = 0; + private float mAspectRatio = 1.0f; + /** Constructor. */ public WideAnglePanoramaUI( CameraActivity activity, @@ -145,6 +148,14 @@ public class WideAnglePanoramaUI implements muteButton.setVisibility(View.GONE); } + private void calculateMargins(Point size) { + int l = size.x > size.y ? size.x : size.y; + int tm = mActivity.getResources().getDimensionPixelSize(R.dimen.preview_top_margin); + int bm = mActivity.getResources().getDimensionPixelSize(R.dimen.preview_bottom_margin); + mTopMargin = l / 4 * tm / (tm + bm); + mBottomMargin = l / 4 - mTopMargin; + } + public void onStartCapture() { hideSwitcher(); mShutterButton.setImageResource(R.drawable.shutter_button_stop); @@ -364,32 +375,27 @@ public class WideAnglePanoramaUI implements Display display = mActivity.getWindowManager().getDefaultDisplay(); Point size = new Point(); display.getSize(size); + mActivity.getWindowManager().getDefaultDisplay().getRealSize(size); + calculateMargins(size); + mCameraControls.setMargins(mTopMargin, mBottomMargin); int width = size.x; - int height = size.y; + int height = size.y - mTopMargin - mBottomMargin; int xOffset = 0; int yOffset = 0; int w = width; int h = height; h = w * 4 / 3; - yOffset = (height - h) / 2; + yOffset = (height - h) / 2 + mTopMargin; FrameLayout.LayoutParams param = new FrameLayout.LayoutParams(w, h); mTextureView.setLayoutParams(param); mTextureView.setX(xOffset); mTextureView.setY(yOffset); - mPreviewBorder.setLayoutParams(param); - mPreviewBorder.setX(xOffset); - mPreviewBorder.setY(yOffset); mPreviewYOffset = yOffset; - int t = mPreviewYOffset; - int b1 = mTextureView.getBottom() - mPreviewYOffset; - int r = mTextureView.getRight(); - int b2 = mTextureView.getBottom(); - - mCameraControls.setPreviewRatio(1.0f, true); + mTextureView.layout(0, mPreviewYOffset, mTextureView.getRight(), mTextureView.getBottom()); } public void resetSavingProgress() { @@ -442,7 +448,6 @@ public class WideAnglePanoramaUI implements Resources appRes = mActivity.getResources(); mIndicatorColor = appRes.getColor(R.color.pano_progress_indication); - mReviewBackground = appRes.getColor(R.color.review_background); mIndicatorColorFast = appRes.getColor(R.color.pano_progress_indication_fast); mPreviewCover = mRootView.findViewById(R.id.preview_cover); @@ -469,10 +474,8 @@ public class WideAnglePanoramaUI implements mShutterButton = (ShutterButton) mRootView.findViewById(R.id.shutter_button); mShutterButton.setImageResource(R.drawable.btn_new_shutter); mShutterButton.setOnShutterButtonListener(this); - // Hide menu and indicators. + // Hide menu mRootView.findViewById(R.id.menu).setVisibility(View.GONE); - mRootView.findViewById(R.id.on_screen_indicators).setVisibility(View.GONE); - mReview.setBackgroundColor(mReviewBackground); // TODO: set display change listener properly. ((CameraRootView) mRootView).setDisplayChangeListener(null); @@ -705,7 +708,34 @@ public class WideAnglePanoramaUI implements mPanoFailedDialog.setRotation(-orientation); mReview.setRotation(-orientation); mTooFastPrompt.setRotation(-orientation); + mPreviewBorder.setRotation(-orientation); mCameraControls.setOrientation(orientation, animation); RotateTextToast.setOrientation(orientation); } + + public void hidePreviewCover() { + // Hide the preview cover if need. + if (mPreviewCover.getVisibility() != View.GONE) { + mPreviewCover.setVisibility(View.GONE); + } + } + + public void setPreviewSize(int width, int height) { + if (width == 0 || height == 0) { + Log.w(TAG, "Preview size should not be 0."); + return; + } + float ratio; + if (width > height) { + ratio = (float) width / height; + } else { + ratio = (float) height / width; + } + + if (ratio != mAspectRatio) { + mAspectRatio = ratio; + } + + mCameraControls.setPreviewRatio(mAspectRatio, false); + } } |