diff options
author | Doris Liu <tianliu@google.com> | 2013-05-14 14:37:46 -0700 |
---|---|---|
committer | Doris Liu <tianliu@google.com> | 2013-05-16 14:33:09 -0700 |
commit | 7234f4d6ff4fdcd47eb428405d2b31a5711d20ce (patch) | |
tree | de9b0cbfd000152517860463483430b909cfe1e2 /src/com/android/camera/ui | |
parent | b6ad64dce341b96a68eecca6cc6ceda633c1a521 (diff) | |
download | android_packages_apps_Snap-7234f4d6ff4fdcd47eb428405d2b31a5711d20ce.tar.gz android_packages_apps_Snap-7234f4d6ff4fdcd47eb428405d2b31a5711d20ce.tar.bz2 android_packages_apps_Snap-7234f4d6ff4fdcd47eb428405d2b31a5711d20ce.zip |
Add new camera activity back and fix build errors
Change-Id: I30b657c7eee2b8cb0317c922966821002ea956f0
Diffstat (limited to 'src/com/android/camera/ui')
-rw-r--r-- | src/com/android/camera/ui/FaceView.java | 10 | ||||
-rw-r--r-- | src/com/android/camera/ui/FilmStripGestureRecognizer.java | 5 | ||||
-rw-r--r-- | src/com/android/camera/ui/NewCameraRootView.java | 134 |
3 files changed, 146 insertions, 3 deletions
diff --git a/src/com/android/camera/ui/FaceView.java b/src/com/android/camera/ui/FaceView.java index f4dd823d1..24150497c 100644 --- a/src/com/android/camera/ui/FaceView.java +++ b/src/com/android/camera/ui/FaceView.java @@ -33,13 +33,15 @@ import android.view.View; import com.android.camera.CameraActivity; import com.android.camera.CameraScreenNail; +import com.android.camera.NewPhotoUI; import com.android.camera.Util; import com.android.gallery3d.R; import com.android.gallery3d.common.ApiHelper; @TargetApi(ApiHelper.VERSION_CODES.ICE_CREAM_SANDWICH) public class FaceView extends View - implements FocusIndicator, Rotatable { + implements FocusIndicator, Rotatable, + NewPhotoUI.SurfaceTextureSizeChangedListener { private static final String TAG = "CAM FaceView"; private final boolean LOGV = false; // The value for android.hardware.Camera.setDisplayOrientation. @@ -95,6 +97,12 @@ public class FaceView extends View mPaint.setStrokeWidth(res.getDimension(R.dimen.face_circle_stroke)); } + @Override + public void onSurfaceTextureSizeChanged(int uncroppedWidth, int uncroppedHeight) { + mUncroppedWidth = uncroppedWidth; + mUncroppedHeight = uncroppedHeight; + } + public void setFaces(Face[] faces) { if (LOGV) Log.v(TAG, "Num of faces=" + faces.length); if (mPause) return; diff --git a/src/com/android/camera/ui/FilmStripGestureRecognizer.java b/src/com/android/camera/ui/FilmStripGestureRecognizer.java index f0e2534d3..7be7965f8 100644 --- a/src/com/android/camera/ui/FilmStripGestureRecognizer.java +++ b/src/com/android/camera/ui/FilmStripGestureRecognizer.java @@ -50,8 +50,9 @@ public class FilmStripGestureRecognizer { context, new MyScaleListener()); } - public boolean onTouchEvent(MotionEvent event) { - return mGestureDetector.onTouchEvent(event) || mScaleDetector.onTouchEvent(event); + public void onTouchEvent(MotionEvent event) { + mGestureDetector.onTouchEvent(event); + mScaleDetector.onTouchEvent(event); } private class MyGestureListener diff --git a/src/com/android/camera/ui/NewCameraRootView.java b/src/com/android/camera/ui/NewCameraRootView.java new file mode 100644 index 000000000..a50e41a5b --- /dev/null +++ b/src/com/android/camera/ui/NewCameraRootView.java @@ -0,0 +1,134 @@ +/* + * Copyright (C) 2013 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.camera.ui; + +import android.app.Activity; +import android.content.Context; +import android.content.res.Configuration; +import android.graphics.Rect; +import android.os.Debug; +import android.util.AttributeSet; +import android.view.Gravity; +import android.view.View; +import android.widget.FrameLayout; + +import com.android.camera.Util; +import com.android.gallery3d.R; + +public class NewCameraRootView extends FrameLayout { + + private int mTopMargin = 0; + private int mBottomMargin = 0; + private int mLeftMargin = 0; + private int mRightMargin = 0; + private Rect mCurrentInsets; + private int mOffset = 0; + public NewCameraRootView(Context context, AttributeSet attrs) { + super(context, attrs); + setSystemUiVisibility(View.SYSTEM_UI_FLAG_LAYOUT_HIDE_NAVIGATION + | View.SYSTEM_UI_FLAG_LAYOUT_STABLE); + } + + @Override + protected boolean fitSystemWindows(Rect insets) { + super.fitSystemWindows(insets); + mCurrentInsets = insets; + // insets include status bar, navigation bar, etc + // In this case, we are only concerned with the size of nav bar + if (mOffset > 0) return true; + + if (insets.bottom > 0) { + mOffset = insets.bottom; + } else if (insets.right > 0) { + mOffset = insets.right; + } + return true; + } + + @Override + protected void onMeasure(int widthMeasureSpec, int heightMeasureSpec) { + int rotation = Util.getDisplayRotation((Activity) getContext()); + // all the layout code assumes camera device orientation to be portrait + // adjust rotation for landscape + int orientation = getResources().getConfiguration().orientation; + int camOrientation = (rotation % 180 == 0) ? Configuration.ORIENTATION_PORTRAIT + : Configuration.ORIENTATION_LANDSCAPE; + if (camOrientation != orientation) { + rotation = (rotation + 90) % 360; + } + // calculate margins + mLeftMargin = 0; + mRightMargin = 0; + mBottomMargin = 0; + mTopMargin = 0; + switch (rotation) { + case 0: + mBottomMargin += mOffset; + break; + case 90: + mRightMargin += mOffset; + break; + case 180: + mTopMargin += mOffset; + break; + case 270: + mLeftMargin += mOffset; + break; + } + if (mCurrentInsets != null) { + if (mCurrentInsets.right > 0) { + // navigation bar on the right + mRightMargin = mRightMargin > 0 ? mRightMargin : mCurrentInsets.right; + } else { + // navigation bar on the bottom + mBottomMargin = mBottomMargin > 0 ? mBottomMargin : mCurrentInsets.bottom; + } + } + // make sure all the children are resized + super.onMeasure(widthMeasureSpec - mLeftMargin - mRightMargin, + heightMeasureSpec - mTopMargin - mBottomMargin); + setMeasuredDimension(widthMeasureSpec, heightMeasureSpec); + } + + @Override + public void onLayout(boolean changed, int l, int t, int r, int b) { + r -= l; + b -= t; + l = 0; + t = 0; + int orientation = getResources().getConfiguration().orientation; + // Lay out children + for (int i = 0; i < getChildCount(); i++) { + View v = getChildAt(i); + if (v instanceof CameraControls) { + // Lay out camera controls to center on the short side of the screen + // so that they stay in place during rotation + int width = v.getMeasuredWidth(); + int height = v.getMeasuredHeight(); + if (orientation == Configuration.ORIENTATION_PORTRAIT) { + int left = (l + r - width) / 2; + v.layout(left, t + mTopMargin, left + width, b - mBottomMargin); + } else { + int top = (t + b - height) / 2; + v.layout(l + mLeftMargin, top, r - mRightMargin, top + height); + } + } else { + v.layout(l + mLeftMargin, t + mTopMargin, r - mRightMargin, b - mBottomMargin); + } + } + } +} |