summaryrefslogtreecommitdiffstats
path: root/src/com/android/camera/CaptureUI.java
diff options
context:
space:
mode:
authorByunghun Jeon <bjeon@codeaurora.org>2016-07-14 11:13:36 -0700
committerJay Wang <jaywang@codeaurora.org>2016-09-27 11:08:28 -0700
commita6038bde5f3fbdd05519f1be8ad6f369fd0365bf (patch)
treeab9761c31171a7053b329a3d08573b370f747336 /src/com/android/camera/CaptureUI.java
parent8eefd5866870e7293665df25625ab69fb8e2de0f (diff)
downloadandroid_packages_apps_Snap-a6038bde5f3fbdd05519f1be8ad6f369fd0365bf.tar.gz
android_packages_apps_Snap-a6038bde5f3fbdd05519f1be8ad6f369fd0365bf.tar.bz2
android_packages_apps_Snap-a6038bde5f3fbdd05519f1be8ad6f369fd0365bf.zip
SnapdragonCamera: Add OneUI to Camera2
Add new UI called OneUI to Camera2. It replaces icons, adds 2 new activities for scene menu and setting menu. There is no module change anymore Change-Id: If712e6af7bbc29726dae387168aefbcd2d7c1ea9 CRs-Fixed: 1066519
Diffstat (limited to 'src/com/android/camera/CaptureUI.java')
-rw-r--r--src/com/android/camera/CaptureUI.java740
1 files changed, 71 insertions, 669 deletions
diff --git a/src/com/android/camera/CaptureUI.java b/src/com/android/camera/CaptureUI.java
index b96902f81..ac4a1a090 100644
--- a/src/com/android/camera/CaptureUI.java
+++ b/src/com/android/camera/CaptureUI.java
@@ -21,13 +21,12 @@ package com.android.camera;
import android.animation.Animator;
import android.content.Context;
+import android.content.Intent;
import android.content.res.Resources;
import android.graphics.ImageFormat;
import android.graphics.Point;
import android.graphics.Rect;
-import android.graphics.drawable.AnimationDrawable;
import android.hardware.Camera.Face;
-import android.media.ImageReader;
import android.renderscript.Allocation;
import android.renderscript.Element;
import android.renderscript.RenderScript;
@@ -36,7 +35,6 @@ import android.renderscript.Type;
import android.text.TextUtils;
import android.util.Log;
import android.view.Display;
-import android.view.Gravity;
import android.view.LayoutInflater;
import android.view.MotionEvent;
import android.view.Surface;
@@ -53,16 +51,13 @@ import android.widget.TextView;
import com.android.camera.imageprocessor.ScriptC_YuvToRgb;
import com.android.camera.imageprocessor.ScriptC_rotator;
-import com.android.camera.imageprocessor.filter.BeautificationFilter;
-import com.android.camera.imageprocessor.filter.TrackingFocusFrameListener;
import com.android.camera.ui.AutoFitSurfaceView;
import com.android.camera.ui.Camera2FaceView;
import com.android.camera.ui.CameraControls;
+import com.android.camera.ui.OneUICameraControls;
import com.android.camera.ui.CountDownView;
+import com.android.camera.ui.FlashToggleButton;
import com.android.camera.ui.FocusIndicator;
-import com.android.camera.ui.ListMenu;
-import com.android.camera.ui.ListSubMenu;
-import com.android.camera.ui.ModuleSwitcher;
import com.android.camera.ui.PieRenderer;
import com.android.camera.ui.RenderOverlay;
import com.android.camera.ui.RotateImageView;
@@ -75,66 +70,21 @@ import com.android.camera.util.CameraUtil;
import org.codeaurora.snapcam.R;
-import java.util.ArrayList;
import java.util.List;
import java.util.Locale;
-import java.util.Set;
public class CaptureUI implements FocusOverlayManager.FocusUI,
PreviewGestures.SingleTapListener,
CameraManager.CameraFaceDetectionCallback,
SettingsManager.Listener,
- ListMenu.Listener,
- ListSubMenu.Listener,
PauseButton.OnPauseButtonListener {
private static final int HIGHLIGHT_COLOR = 0xff33b5e5;
private static final String TAG = "SnapCam_CaptureUI";
- private static final int SETTING_MENU_NONE = 0;
- private static final int SETTING_MENU_IN_ANIMATION = 1;
- private static final int SETTING_MENU_ON = 2;
- private static final int SETTING_MENU_LEVEL_ONE = 0;
- private static final int SETTING_MENU_LEVEL_TWO = 1;
- private static final int SCENE_AND_FILTER_MENU_NONE = 0;
- private static final int SCENE_AND_FILTER_MENU_IN_ANIMATION = 1;
- private static final int SCENE_AND_FILTER_MENU_ON = 2;
- private static final int MODE_FILTER = 0;
- private static final int MODE_SCENE = 1;
+ private static final int FILTER_MENU_NONE = 0;
+ private static final int FILTER_MENU_IN_ANIMATION = 1;
+ private static final int FILTER_MENU_ON = 2;
private static final int ANIMATION_DURATION = 300;
private static final int CLICK_THRESHOLD = 200;
- String[] mSettingKeys = new String[]{
- SettingsManager.KEY_SELFIE_FLASH,
- SettingsManager.KEY_FLASH_MODE,
- SettingsManager.KEY_RECORD_LOCATION,
- SettingsManager.KEY_PICTURE_SIZE,
- SettingsManager.KEY_JPEG_QUALITY,
- SettingsManager.KEY_TIMER,
- SettingsManager.KEY_CAMERA_SAVEPATH,
- SettingsManager.KEY_LONGSHOT,
- SettingsManager.KEY_EXPOSURE,
- SettingsManager.KEY_WHITE_BALANCE,
- SettingsManager.KEY_FACE_DETECTION,
- SettingsManager.KEY_VIDEO_HIGH_FRAME_RATE,
- SettingsManager.KEY_VIDEO_FLASH_MODE,
- SettingsManager.KEY_VIDEO_DURATION,
- SettingsManager.KEY_VIDEO_QUALITY,
- SettingsManager.KEY_TRACKINGFOCUS,
- SettingsManager.KEY_MAKEUP,
- SettingsManager.KEY_VIDEO_TIME_LAPSE_FRAME_INTERVAL,
- SettingsManager.KEY_SHUTTER_SOUND
- };
- String[] mDeveloperKeys = new String[]{
- SettingsManager.KEY_REDEYE_REDUCTION,
- SettingsManager.KEY_MONO_ONLY,
- SettingsManager.KEY_CLEARSIGHT,
- SettingsManager.KEY_MONO_PREVIEW,
- SettingsManager.KEY_MPO,
- SettingsManager.KEY_NOISE_REDUCTION,
- SettingsManager.KEY_DIS,
- SettingsManager.KEY_VIDEO_ENCODER,
- SettingsManager.KEY_AUDIO_ENCODER,
- SettingsManager.KEY_VIDEO_ROTATION,
- SettingsManager.KEY_AUTO_VIDEOSNAP_SIZE
- };
private CameraActivity mActivity;
private View mRootView;
private View mPreviewCover;
@@ -144,14 +94,7 @@ public class CaptureUI implements FocusOverlayManager.FocusUI,
private SurfaceHolder mSurfaceHolder;
private SurfaceHolder mSurfaceHolderMono;
private int mOrientation;
- private RotateLayout mMenuLayout;
- private RotateLayout mSubMenuLayout;
- private int mSettingMenuState;
- private int mSettingMenuLevel;
- private int mSceneAndFilterMenuStatus;
- private int mSceneAndFilterMenuMode;
- private ListMenu mSettingMenu;
- private ListSubMenu mSettingSubMenu;
+ private int mFilterMenuStatus;
private PreviewGestures mGestures;
private boolean mUIhidden = false;
private SettingsManager mSettingsManager;
@@ -208,10 +151,9 @@ public class CaptureUI implements FocusOverlayManager.FocusUI,
private ShutterButton mShutterButton;
private ImageView mVideoButton;
private RenderOverlay mRenderOverlay;
- private View mMenuButton;
- private ModuleSwitcher mSwitcher;
+ private FlashToggleButton mFlashButton;
private CountDownView mCountDownView;
- private CameraControls mCameraControls;
+ private OneUICameraControls mCameraControls;
private PieRenderer mPieRenderer;
private ZoomRenderer mZoomRenderer;
private Allocation mMonoDummyAllocation;
@@ -221,14 +163,13 @@ public class CaptureUI implements FocusOverlayManager.FocusUI,
private int mScreenRatio = CameraUtil.RATIO_UNKNOWN;
private int mTopMargin = 0;
private int mBottomMargin = 0;
- private LinearLayout mSceneAndFilterLayout;
- private int mSceneAndFilterMenuSize;
+ private ViewGroup mFilterLayout;
private View mFilterModeSwitcher;
private View mSceneModeSwitcher;
private View mFrontBackSwitcher;
+ private View mMakeupButton;
private TextView mRecordingTimeView;
- private LinearLayout mLabelsLinearLayout;
private View mTimeLapseLabel;
private RotateLayout mRecordingTimeRect;
private PauseButton mPauseButton;
@@ -293,9 +234,12 @@ public class CaptureUI implements FocusOverlayManager.FocusUI,
mFilterModeSwitcher = mRootView.findViewById(R.id.filter_mode_switcher);
mSceneModeSwitcher = mRootView.findViewById(R.id.scene_mode_switcher);
mFrontBackSwitcher = mRootView.findViewById(R.id.front_back_switcher);
+ mMakeupButton = mRootView.findViewById(R.id.ts_makeup_switcher);
+ mFlashButton = (FlashToggleButton) mRootView.findViewById(R.id.flash_button);
initFilterModeButton();
initSceneModeButton();
initSwitchCamera();
+ initFlashButton();
mTrackingFocusRenderer = new TrackingFocusRenderer(mActivity, mModule, this);
mRenderOverlay.addRenderer(mTrackingFocusRenderer);
@@ -306,25 +250,10 @@ public class CaptureUI implements FocusOverlayManager.FocusUI,
mTrackingFocusRenderer.setVisible(false);
}
- mSwitcher = (ModuleSwitcher) mRootView.findViewById(R.id.camera_switcher);
- mSwitcher.setCurrentIndex(ModuleSwitcher.PHOTO_MODULE_INDEX);
- mSwitcher.setSwitchListener(mActivity);
- mSwitcher.setOnClickListener(new View.OnClickListener() {
- @Override
- public void onClick(View v) {
- if (mModule.getCameraState() == PhotoController.LONGSHOT) {
- return;
- }
- mSwitcher.showPopup();
- mSwitcher.setOrientation(mOrientation, false);
- }
- });
- mMenuButton = mRootView.findViewById(R.id.menu);
mRecordingTimeView = (TextView) mRootView.findViewById(R.id.recording_time);
mRecordingTimeRect = (RotateLayout) mRootView.findViewById(R.id.recording_time_rect);
mTimeLapseLabel = mRootView.findViewById(R.id.time_lapse_label);
- mLabelsLinearLayout = (LinearLayout) mRootView.findViewById(R.id.labels);
mPauseButton = (PauseButton) mRootView.findViewById(R.id.video_pause);
mPauseButton.setOnPauseButtonListener(this);
@@ -350,7 +279,7 @@ public class CaptureUI implements FocusOverlayManager.FocusUI,
RotateImageView muteButton = (RotateImageView) mRootView.findViewById(R.id.mute_button);
muteButton.setVisibility(View.GONE);
- mCameraControls = (CameraControls) mRootView.findViewById(R.id.camera_controls);
+ mCameraControls = (OneUICameraControls) mRootView.findViewById(R.id.camera_controls);
mFaceView = (Camera2FaceView) mRootView.findViewById(R.id.face_view);
mActivity.getWindowManager().getDefaultDisplay().getSize(mDisplaySize);
@@ -362,7 +291,6 @@ public class CaptureUI implements FocusOverlayManager.FocusUI,
mTopMargin = l / 4 * tm / (tm + bm);
mBottomMargin = l / 4 - mTopMargin;
}
- mCameraControls.setMargins(mTopMargin, mBottomMargin);
if (mPieRenderer == null) {
mPieRenderer = new PieRenderer(mActivity);
@@ -384,7 +312,6 @@ public class CaptureUI implements FocusOverlayManager.FocusUI,
mRenderOverlay.requestLayout();
((ViewGroup)mRootView).removeView(mRecordingTimeRect);
- mCameraControls.setPreviewRatio(0, true);
}
public void onCameraOpened(List<Integer> cameraIds) {
@@ -394,14 +321,10 @@ public class CaptureUI implements FocusOverlayManager.FocusUI,
mActivity.setPreviewGestures(mGestures);
}
- public ViewGroup getSceneAndFilterLayout() {
- return mSceneAndFilterLayout;
- }
-
public void reInitUI() {
- initializeSettingMenu();
initSceneModeButton();
initFilterModeButton();
+ initFlashButton();
if (mTrackingFocusRenderer != null) {
mTrackingFocusRenderer.setVisible(true);
}
@@ -418,24 +341,16 @@ public class CaptureUI implements FocusOverlayManager.FocusUI,
// called from onResume but only the first time
public void initializeFirstTime() {
// Initialize shutter button.
- mShutterButton.setImageResource(R.drawable.shutter_button_anim);
- mShutterButton.setOnClickListener(new View.OnClickListener() {
- @Override
- public void onClick(View v) {
- if (!CameraControls.isAnimating())
- doShutterAnimation();
- }
- });
mShutterButton.setOnShutterButtonListener(mModule);
mShutterButton.setVisibility(View.VISIBLE);
mVideoButton.setVisibility(View.VISIBLE);
mVideoButton.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
+ cancelCountDown();
mModule.onVideoButtonClick();
}
});
- mCameraControls.setPreviewRatio(0, true);
}
public void initializeZoom(List<Integer> ids) {
@@ -455,17 +370,17 @@ public class CaptureUI implements FocusOverlayManager.FocusUI,
}
public boolean isPreviewMenuBeingShown() {
- return mSceneAndFilterMenuStatus == SCENE_AND_FILTER_MENU_ON;
+ return mFilterMenuStatus == FILTER_MENU_ON;
}
- public void removeSceneAndFilterMenu(boolean animate) {
+ public void removeFilterMenu(boolean animate) {
if (animate) {
- animateSlideOut(mSceneAndFilterLayout);
+ animateSlideOut(mFilterLayout);
} else {
- mSceneAndFilterMenuStatus = SCENE_AND_FILTER_MENU_NONE;
- if (mSceneAndFilterLayout != null) {
- ((ViewGroup) mRootView).removeView(mSceneAndFilterLayout);
- mSceneAndFilterLayout = null;
+ mFilterMenuStatus = FILTER_MENU_NONE;
+ if (mFilterLayout != null) {
+ ((ViewGroup) mRootView).removeView(mFilterLayout);
+ mFilterLayout = null;
}
}
}
@@ -476,10 +391,6 @@ public class CaptureUI implements FocusOverlayManager.FocusUI,
if (value == null)
return;
- int[] largeIcons = mSettingsManager.getResource(SettingsManager.KEY_CAMERA_ID,
- SettingsManager.RESOURCE_TYPE_LARGEICON);
- ((ImageView) mFrontBackSwitcher).setImageResource(largeIcons[mSettingsManager
- .getValueIndex(SettingsManager.KEY_CAMERA_ID)]);
mFrontBackSwitcher.setVisibility(View.VISIBLE);
mFrontBackSwitcher.setOnClickListener(new View.OnClickListener() {
@Override
@@ -494,29 +405,26 @@ public class CaptureUI implements FocusOverlayManager.FocusUI,
index = (index + 1) % entries.length;
} while (entries[index] == null);
mSettingsManager.setValueIndex(SettingsManager.KEY_CAMERA_ID, index);
- int[] largeIcons = mSettingsManager.getResource(SettingsManager.KEY_CAMERA_ID,
- SettingsManager.RESOURCE_TYPE_LARGEICON);
- ((ImageView) v).setImageResource(largeIcons[index]);
}
});
}
+ public void initFlashButton() {
+ mFlashButton.init();
+ }
+
public void initSceneModeButton() {
mSceneModeSwitcher.setVisibility(View.INVISIBLE);
String value = mSettingsManager.getValue(SettingsManager.KEY_SCENE_MODE);
if (value == null) return;
- updateSceneModeIcon();
mSceneModeSwitcher.setVisibility(View.VISIBLE);
mSceneModeSwitcher.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
- addSceneMode();
- ViewGroup menuLayout = getSceneAndFilterLayout();
- if (menuLayout != null) {
- View view = menuLayout.getChildAt(0);
- adjustOrientation();
- animateSlideIn(view, mSceneAndFilterMenuSize, false);
- }
+ clearFocus();
+ removeFilterMenu(false);
+ Intent intent = new Intent(mActivity, SceneModeActivity.class);
+ mActivity.startActivity(intent);
}
});
}
@@ -525,20 +433,12 @@ public class CaptureUI implements FocusOverlayManager.FocusUI,
mFilterModeSwitcher.setVisibility(View.INVISIBLE);
String value = mSettingsManager.getValue(SettingsManager.KEY_COLOR_EFFECT);
if (value == null) return;
- changeFilterModeControlIcon(value);
- updateFilterModeIcon(!mSettingsManager.isOverriden(SettingsManager.KEY_COLOR_EFFECT));
mFilterModeSwitcher.setVisibility(View.VISIBLE);
mFilterModeSwitcher.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
addFilterMode();
- ViewGroup menuLayout = getSceneAndFilterLayout();
- if (menuLayout != null) {
- View view = getSceneAndFilterLayout().getChildAt(0);
- adjustOrientation();
- animateSlideIn(view, mSceneAndFilterMenuSize, false);
- }
}
});
}
@@ -550,16 +450,14 @@ public class CaptureUI implements FocusOverlayManager.FocusUI,
}
public void showRecordingUI(boolean recording) {
- mMenuButton.setVisibility(recording ? View.GONE : View.VISIBLE);
+ mFlashButton.setVisibility(recording ? View.GONE : View.VISIBLE);
if (recording) {
- mVideoButton.setImageResource(R.drawable.shutter_button_video_stop);
- hideSwitcher();
+ mVideoButton.setImageResource(R.drawable.video_stop);
mRecordingTimeView.setText("");
((ViewGroup)mRootView).addView(mRecordingTimeRect);
mMuteButton.setVisibility(View.VISIBLE);
} else {
- mVideoButton.setImageResource(R.drawable.btn_new_shutter_video);
- showSwitcher();
+ mVideoButton.setImageResource(R.drawable.video_capture);
((ViewGroup)mRootView).removeView(mRecordingTimeRect);
mMuteButton.setVisibility(View.INVISIBLE);
}
@@ -579,141 +477,6 @@ public class CaptureUI implements FocusOverlayManager.FocusUI,
mSceneModeSwitcher.setVisibility(View.VISIBLE);
}
- public void hideSwitcher() {
- mSwitcher.closePopup();
- mSwitcher.setVisibility(View.INVISIBLE);
- }
-
- public void showSwitcher() {
- mSwitcher.setVisibility(View.VISIBLE);
- }
-
- public void setSwitcherIndex() {
- mSwitcher.setCurrentIndex(ModuleSwitcher.PHOTO_MODULE_INDEX);
- }
-
- public void addSceneMode() {
- String value = mSettingsManager.getValue(SettingsManager.KEY_SCENE_MODE);
- if (value == null) return;
-
- int rotation = CameraUtil.getDisplayRotation(mActivity);
- boolean mIsDefaultToPortrait = CameraUtil.isDefaultToPortrait(mActivity);
- if (!mIsDefaultToPortrait) {
- rotation = (rotation + 90) % 360;
- }
- WindowManager wm = (WindowManager) mActivity.getSystemService(Context.WINDOW_SERVICE);
- Display display = wm.getDefaultDisplay();
-
- CharSequence[] entries = mSettingsManager.getEntries(SettingsManager.KEY_SCENE_MODE);
-
- int[] thumbnails = mSettingsManager.getResource(SettingsManager.KEY_SCENE_MODE,
- SettingsManager.RESOURCE_TYPE_THUMBNAIL);
- Resources r = mActivity.getResources();
- int height = (int) (r.getDimension(R.dimen.scene_mode_height) + 2
- * r.getDimension(R.dimen.scene_mode_padding) + 1);
- int width = (int) (r.getDimension(R.dimen.scene_mode_width) + 2
- * r.getDimension(R.dimen.scene_mode_padding) + 1);
-
- int gridRes;
- boolean portrait = (rotation == 0) || (rotation == 180);
- int size = height;
- if (portrait) {
- gridRes = R.layout.vertical_grid;
- size = width;
- } else {
- gridRes = R.layout.horiz_grid;
- }
- mSceneAndFilterMenuSize = size;
- hideUI();
-
- LayoutInflater inflater = (LayoutInflater) mActivity.getSystemService(
- Context.LAYOUT_INFLATER_SERVICE);
- FrameLayout gridOuterLayout = (FrameLayout) inflater.inflate(
- gridRes, null, false);
-
- removeSceneAndFilterMenu(false);
- mSceneAndFilterMenuStatus = SCENE_AND_FILTER_MENU_ON;
- mSceneAndFilterMenuMode = MODE_SCENE;
- mSceneAndFilterLayout = new LinearLayout(mActivity);
- ViewGroup.LayoutParams params = null;
- if (portrait) {
- params = new ViewGroup.LayoutParams(size, FrameLayout.LayoutParams.MATCH_PARENT);
- mSceneAndFilterLayout.setLayoutParams(params);
- ((ViewGroup) mRootView).addView(mSceneAndFilterLayout);
- } else {
- params = new ViewGroup.LayoutParams(FrameLayout.LayoutParams.MATCH_PARENT, size);
- mSceneAndFilterLayout.setLayoutParams(params);
- ((ViewGroup) mRootView).addView(mSceneAndFilterLayout);
- mSceneAndFilterLayout.setY(display.getHeight() - size);
- }
- gridOuterLayout.setLayoutParams(new FrameLayout.LayoutParams(FrameLayout.LayoutParams
- .MATCH_PARENT, FrameLayout.LayoutParams.MATCH_PARENT));
- LinearLayout gridLayout = (LinearLayout) gridOuterLayout.findViewById(R.id.layout);
-
- final View[] views = new View[entries.length];
- int init = mSettingsManager.getValueIndex(SettingsManager.KEY_SCENE_MODE);
- for (int i = 0; i < entries.length; i++) {
- RotateLayout sceneBox = (RotateLayout) inflater.inflate(
- R.layout.scene_mode_view, null, false);
-
- ImageView imageView = (ImageView) sceneBox.findViewById(R.id.image);
- TextView label = (TextView) sceneBox.findViewById(R.id.label);
- final int j = i;
-
- sceneBox.setOnTouchListener(new View.OnTouchListener() {
- private long startTime;
-
- @Override
- public boolean onTouch(View v, MotionEvent event) {
- if (event.getAction() == MotionEvent.ACTION_DOWN) {
- startTime = System.currentTimeMillis();
- } else if (event.getAction() == MotionEvent.ACTION_UP) {
- if (System.currentTimeMillis() - startTime < CLICK_THRESHOLD) {
- for (View v1 : views) {
- v1.setBackgroundResource(R.drawable.scene_mode_view_border);
- }
- View border = v.findViewById(R.id.border);
- border.setBackgroundResource(R.drawable.scene_mode_view_border_selected);
- updateSceneModeIcon(j);
- mSettingsManager.setValueIndex(SettingsManager.KEY_SCENE_MODE, j);
- removeSceneAndFilterMenu(true);
- }
- }
- return true;
- }
- });
-
- View border = sceneBox.findViewById(R.id.border);
- views[j] = border;
- if (i == init)
- border.setBackgroundResource(R.drawable.scene_mode_view_border_selected);
-
- imageView.setImageResource(thumbnails[i]);
- label.setText(entries[i]);
- gridLayout.addView(sceneBox);
- }
- mSceneAndFilterLayout.addView(gridOuterLayout);
- }
-
- public void updateSceneModeIcon() {
- int[] thumbnails = mSettingsManager.getResource(SettingsManager.KEY_SCENE_MODE,
- SettingsManager.RESOURCE_TYPE_THUMBNAIL);
- int thumbnail = thumbnails[mSettingsManager.getValueIndex(SettingsManager
- .KEY_SCENE_MODE)];
- if (thumbnail == -1)
- thumbnail = 0;
- ((ImageView) mSceneModeSwitcher).setImageResource(thumbnail);
- }
-
- public void updateSceneModeIcon(int idx) {
- int[] thumbnails = mSettingsManager.getResource(SettingsManager.KEY_SCENE_MODE,
- SettingsManager.RESOURCE_TYPE_THUMBNAIL);
- int thumbnail = thumbnails[idx];
- if (thumbnail == -1)
- thumbnail = 0;
- ((ImageView) mSceneModeSwitcher).setImageResource(thumbnail);
- }
-
public void addFilterMode() {
if (mSettingsManager.getValue(SettingsManager.KEY_COLOR_EFFECT) == null)
return;
@@ -736,14 +499,12 @@ public class CaptureUI implements FocusOverlayManager.FocusUI,
int gridRes;
boolean portrait = (rotation == 0) || (rotation == 180);
int size = height;
- if (portrait) {
+ if (!portrait) {
gridRes = R.layout.vertical_grid;
size = width;
} else {
gridRes = R.layout.horiz_grid;
}
- mSceneAndFilterMenuSize = size;
- hideUI();
int[] thumbnails = mSettingsManager.getResource(SettingsManager.KEY_COLOR_EFFECT,
SettingsManager.RESOURCE_TYPE_THUMBNAIL);
@@ -751,22 +512,21 @@ public class CaptureUI implements FocusOverlayManager.FocusUI,
Context.LAYOUT_INFLATER_SERVICE);
FrameLayout gridOuterLayout = (FrameLayout) inflater.inflate(
gridRes, null, false);
-
- removeSceneAndFilterMenu(false);
- mSceneAndFilterMenuStatus = SCENE_AND_FILTER_MENU_ON;
- mSceneAndFilterMenuMode = MODE_FILTER;
- mSceneAndFilterLayout = new LinearLayout(mActivity);
+ gridOuterLayout.setBackgroundColor(android.R.color.transparent);
+ removeFilterMenu(false);
+ mFilterMenuStatus = FILTER_MENU_ON;
+ mFilterLayout = new LinearLayout(mActivity);
ViewGroup.LayoutParams params = null;
- if (portrait) {
+ if (!portrait) {
params = new ViewGroup.LayoutParams(size, FrameLayout.LayoutParams.MATCH_PARENT);
- mSceneAndFilterLayout.setLayoutParams(params);
- ((ViewGroup) mRootView).addView(mSceneAndFilterLayout);
+ mFilterLayout.setLayoutParams(params);
+ ((ViewGroup) mRootView).addView(mFilterLayout);
} else {
params = new ViewGroup.LayoutParams(FrameLayout.LayoutParams.MATCH_PARENT, size);
- mSceneAndFilterLayout.setLayoutParams(params);
- ((ViewGroup) mRootView).addView(mSceneAndFilterLayout);
- mSceneAndFilterLayout.setY(display.getHeight() - size);
+ mFilterLayout.setLayoutParams(params);
+ ((ViewGroup) mRootView).addView(mFilterLayout);
+ mFilterLayout.setY(display.getHeight() - 2 * size);
}
gridOuterLayout.setLayoutParams(new FrameLayout.LayoutParams(FrameLayout.LayoutParams
.MATCH_PARENT, FrameLayout.LayoutParams.MATCH_PARENT));
@@ -811,137 +571,11 @@ public class CaptureUI implements FocusOverlayManager.FocusUI,
label.setText(entries[i]);
gridLayout.addView(filterBox);
}
- mSceneAndFilterLayout.addView(gridOuterLayout);
- }
-
- private void changeFilterModeControlIcon(String value) {
- int index;
- if (value.equals("0")) {
- index = 0;
- } else {
- index = 1;
- }
- ImageView iv = (ImageView) mFilterModeSwitcher;
- iv.setImageResource(mSettingsManager.getResource(SettingsManager
- .KEY_COLOR_EFFECT, SettingsManager.RESOURCE_TYPE_LARGEICON)[index]);
+ mFilterLayout.addView(gridOuterLayout);
}
- private void updateFilterModeIcon(boolean enable) {
- buttonSetEnabled(mFilterModeSwitcher, enable);
- }
-
- private void buttonSetEnabled(View v, boolean enable) {
- v.setEnabled(enable);
- if (v instanceof ViewGroup) {
- View v2 = ((ViewGroup) v).getChildAt(0);
- if (v2 != null)
- v2.setEnabled(enable);
- }
- }
-
- private void animateFadeOut(final View v, final int level) {
- if (v == null || mSettingMenuState == SETTING_MENU_IN_ANIMATION)
- return;
- mSettingMenuState = SETTING_MENU_IN_ANIMATION;
-
- ViewPropertyAnimator vp = v.animate();
- vp.alpha(0f).setDuration(ANIMATION_DURATION);
- vp.setListener(new Animator.AnimatorListener() {
- @Override
- public void onAnimationStart(Animator animation) {
- }
-
- @Override
- public void onAnimationRepeat(Animator animation) {
-
- }
-
- @Override
- public void onAnimationEnd(Animator animation) {
- finishSettingMenuAnimateOut(level);
- }
-
- @Override
- public void onAnimationCancel(Animator animation) {
- finishSettingMenuAnimateOut(level);
- }
- });
- vp.start();
- }
-
- private void animateSlideOut(final View v, final int level) {
- if (v == null || mSettingMenuState == SETTING_MENU_IN_ANIMATION)
- return;
- mSettingMenuState = SETTING_MENU_IN_ANIMATION;
- ViewPropertyAnimator vp = v.animate();
- if (View.LAYOUT_DIRECTION_RTL == TextUtils
- .getLayoutDirectionFromLocale(Locale.getDefault())) {
- switch (getOrientation()) {
- case 0:
- vp.translationXBy(v.getWidth());
- break;
- case 90:
- vp.translationYBy(-2 * v.getHeight());
- break;
- case 180:
- vp.translationXBy(-2 * v.getWidth());
- break;
- case 270:
- vp.translationYBy(v.getHeight());
- break;
- }
- } else {
- switch (getOrientation()) {
- case 0:
- vp.translationXBy(-v.getWidth());
- break;
- case 90:
- vp.translationYBy(2 * v.getHeight());
- break;
- case 180:
- vp.translationXBy(2 * v.getWidth());
- break;
- case 270:
- vp.translationYBy(-v.getHeight());
- break;
- }
- }
- vp.setListener(new Animator.AnimatorListener() {
- @Override
- public void onAnimationStart(Animator animation) {
- }
-
- @Override
- public void onAnimationRepeat(Animator animation) {
-
- }
-
- @Override
- public void onAnimationEnd(Animator animation) {
- finishSettingMenuAnimateOut(level);
- }
-
- @Override
- public void onAnimationCancel(Animator animation) {
- finishSettingMenuAnimateOut(level);
- }
- });
- vp.setDuration(ANIMATION_DURATION).start();
- }
-
- private void finishSettingMenuAnimateOut(int level) {
- if (level == SETTING_MENU_LEVEL_ONE) {
- mSettingMenuState = SETTING_MENU_ON;
- removeSettingMenu(level, false);
- cleanUpMenus();
- } else if (level == SETTING_MENU_LEVEL_TWO) {
- mSettingMenuState = SETTING_MENU_ON;
- removeSettingMenu(level, false);
- }
- }
-
- private void finishScenceAndFilterMenuAnimateOut() {
- removeSceneAndFilterMenu(false);
+ public void removeAndCleanUpFilterMenu() {
+ removeFilterMenu(false);
cleanUpMenus();
}
@@ -952,9 +586,9 @@ public class CaptureUI implements FocusOverlayManager.FocusUI,
}
private void animateSlideOut(final View v) {
- if (v == null || mSceneAndFilterMenuStatus == SCENE_AND_FILTER_MENU_IN_ANIMATION)
+ if (v == null || mFilterMenuStatus == FILTER_MENU_IN_ANIMATION)
return;
- mSceneAndFilterMenuStatus = SCENE_AND_FILTER_MENU_IN_ANIMATION;
+ mFilterMenuStatus = FILTER_MENU_IN_ANIMATION;
ViewPropertyAnimator vp = v.animate();
if (View.LAYOUT_DIRECTION_RTL == TextUtils
@@ -975,12 +609,12 @@ public class CaptureUI implements FocusOverlayManager.FocusUI,
@Override
public void onAnimationEnd(Animator animation) {
- finishScenceAndFilterMenuAnimateOut();
+ removeAndCleanUpFilterMenu();
}
@Override
public void onAnimationCancel(Animator animation) {
- finishScenceAndFilterMenuAnimateOut();
+ removeAndCleanUpFilterMenu();
}
});
vp.start();
@@ -1044,119 +678,6 @@ public class CaptureUI implements FocusOverlayManager.FocusUI,
vp.setDuration(ANIMATION_DURATION).start();
}
- private void initializeSettingMenu() {
- LayoutInflater inflater = (LayoutInflater) mActivity.getSystemService(
- Context.LAYOUT_INFLATER_SERVICE);
- mSettingMenu = (ListMenu) inflater.inflate(
- R.layout.list_menu, null, false);
-
- mSettingMenu.setSettingChangedListener(this);
- mSettingMenu.setSettingsManager(mSettingsManager);
-
- String[] keys = mSettingKeys;
- if (mActivity.isDeveloperMenuEnabled()) {
- String[] combined = new String[mSettingKeys.length + mDeveloperKeys.length];
- int idx = 0;
- for (String key: mSettingKeys) {
- combined[idx++] = key;
- }
- for (String key: mDeveloperKeys) {
- combined[idx++] = key;
- }
- keys = combined;
- }
- mSettingMenu.initializeForCamera2(keys);
- }
-
- public boolean isMenuBeingShown() {
- return mSettingMenuState != SETTING_MENU_NONE;
- }
-
- public boolean isMenuBeingAnimated() {
- return mSettingMenuState == SETTING_MENU_IN_ANIMATION;
- }
-
-
- public void showSettingMenu() {
- if (isMenuBeingShown() || CameraControls.isAnimating()) {
- return;
- }
- if (mSettingMenu == null) {
- initializeSettingMenu();
- }
- showSettingMenu(SETTING_MENU_LEVEL_ONE, true);
- }
-
- private void showSettingMenu(int level, boolean animate) {
- FrameLayout.LayoutParams params;
- hideUI();
-
- mSettingMenu.setVisibility(View.VISIBLE);
- mSettingMenuState = SETTING_MENU_ON;
- if (level == SETTING_MENU_LEVEL_ONE) {
- mSettingMenuLevel = SETTING_MENU_LEVEL_ONE;
- if (mMenuLayout == null) {
- mMenuLayout = new RotateLayout(mActivity, null);
- if (mRootView.getLayoutDirection() != View.LAYOUT_DIRECTION_RTL) {
- params = new FrameLayout.LayoutParams(CameraActivity.SETTING_LIST_WIDTH_1,
- FrameLayout.LayoutParams.WRAP_CONTENT, Gravity.LEFT | Gravity.TOP);
- } else {
- params = new FrameLayout.LayoutParams(CameraActivity.SETTING_LIST_WIDTH_1,
- FrameLayout.LayoutParams.WRAP_CONTENT, Gravity.RIGHT | Gravity.TOP);
- }
- mMenuLayout.setLayoutParams(params);
- ((ViewGroup) mRootView).addView(mMenuLayout);
- }
- mMenuLayout.setOrientation(mOrientation, true);
- mMenuLayout.addView(mSettingMenu);
- } else if (level == SETTING_MENU_LEVEL_TWO) {
- mSettingMenuLevel = SETTING_MENU_LEVEL_TWO;
- if (mSubMenuLayout == null) {
- mSubMenuLayout = new RotateLayout(mActivity, null);
- ((ViewGroup) mRootView).addView(mSubMenuLayout);
- }
- if (mRootView.getLayoutDirection() != View.LAYOUT_DIRECTION_RTL) {
- params = new FrameLayout.LayoutParams(CameraActivity.SETTING_LIST_WIDTH_2,
- FrameLayout.LayoutParams.WRAP_CONTENT, Gravity.LEFT | Gravity.TOP);
- } else {
- params = new FrameLayout.LayoutParams(CameraActivity.SETTING_LIST_WIDTH_2,
- FrameLayout.LayoutParams.WRAP_CONTENT, Gravity.RIGHT | Gravity.TOP);
- }
- int screenHeight = (mOrientation == 0 || mOrientation == 180)
- ? mRootView.getHeight() : mRootView.getWidth();
- int height = mSettingSubMenu.getPreCalculatedHeight();
- int yBase = mSettingSubMenu.getYBase();
- int y = Math.max(0, yBase);
- if (yBase + height > screenHeight)
- y = Math.max(0, screenHeight - height);
- if (mRootView.getLayoutDirection() != View.LAYOUT_DIRECTION_RTL) {
- params.setMargins(CameraActivity.SETTING_LIST_WIDTH_1, y, 0, 0);
- } else {
- params.setMargins(0, y, CameraActivity.SETTING_LIST_WIDTH_1, 0);
- }
-
- mSubMenuLayout.setLayoutParams(params);
-
- mSubMenuLayout.addView(mSettingSubMenu);
- mSubMenuLayout.setOrientation(mOrientation, true);
- }
- if (animate) {
- if (level == SETTING_MENU_LEVEL_ONE) {
- animateSlideIn(mMenuLayout, CameraActivity.SETTING_LIST_WIDTH_1, true);
- }
- if (level == SETTING_MENU_LEVEL_TWO) {
- animateFadeIn(mSettingSubMenu);
- }
- } else {
- if (level == SETTING_MENU_LEVEL_ONE) {
- mMenuLayout.setAlpha(0.85f);
- }
- if (level == SETTING_MENU_LEVEL_TWO) {
- mSettingSubMenu.setAlpha(0.85f);
- }
- }
- }
-
public void hideUIWhileCountDown() {
hideCameraControls(true);
mGestures.setZoomOnly(true);
@@ -1169,11 +690,12 @@ public class CaptureUI implements FocusOverlayManager.FocusUI,
public void hideCameraControls(boolean hide) {
final int status = (hide) ? View.INVISIBLE : View.VISIBLE;
- if (mMenuButton != null) mMenuButton.setVisibility(status);
+ if (mFlashButton != null) mFlashButton.setVisibility(status);
if (mFrontBackSwitcher != null) mFrontBackSwitcher.setVisibility(status);
if (mSceneModeSwitcher != null) mSceneModeSwitcher.setVisibility(status);
if (mFilterModeSwitcher != null) mFilterModeSwitcher.setVisibility(status);
- if (mSwitcher != null) mSwitcher.setVisibility(status);
+ if (mFilterModeSwitcher != null) mFilterModeSwitcher.setVisibility(status);
+ if (mMakeupButton != null) mMakeupButton.setVisibility(status);
}
public void initializeControlByIntent() {
@@ -1186,33 +708,24 @@ public class CaptureUI implements FocusOverlayManager.FocusUI,
mActivity.gotoGallery();
}
});
- mMenuButton = mRootView.findViewById(R.id.menu);
- mMenuButton.setOnClickListener(new View.OnClickListener() {
- @Override
- public void onClick(View v) {
- showSettingMenu();
- }
- });
}
public void doShutterAnimation() {
- AnimationDrawable frameAnimation = (AnimationDrawable) mShutterButton.getDrawable();
- frameAnimation.stop();
- frameAnimation.start();
}
public void showUI() {
- if (!mUIhidden || isMenuBeingShown())
+ if (!mUIhidden)
return;
mUIhidden = false;
+ mPieRenderer.setBlockFocus(false);
mCameraControls.showUI();
}
public void hideUI() {
- mSwitcher.closePopup();
if (mUIhidden)
return;
mUIhidden = true;
+ mPieRenderer.setBlockFocus(true);
mCameraControls.hideUI();
}
@@ -1226,54 +739,7 @@ public class CaptureUI implements FocusOverlayManager.FocusUI,
}
public void onOrientationChanged() {
- removeSettingMenu(SETTING_MENU_LEVEL_TWO, false);
- if (mSettingMenu != null)
- mSettingMenu.resetHighlight();
- }
-
- public void removeAllSettingMenu(boolean animate) {
- removeSettingMenu(SETTING_MENU_LEVEL_TWO, false);
- removeSettingMenu(SETTING_MENU_LEVEL_ONE, animate);
- }
-
- public void removeAllSettingMenu() {
- removeAllSettingMenu(false);
- }
-
- public void removeSettingMenu(int level, boolean animate) {
- if (mSettingMenuState == SETTING_MENU_NONE)
- return;
- if (!animate) {
- if (level == SETTING_MENU_LEVEL_TWO) {
- if (mSubMenuLayout != null) {
- mSubMenuLayout.removeView(mSubMenuLayout.getChildAt(0));
- mSubMenuLayout = null;
- }
- mSettingSubMenu = null;
- mSettingMenuState = SETTING_MENU_ON;
- mSettingMenuLevel = SETTING_MENU_LEVEL_ONE;
- } else if (level == SETTING_MENU_LEVEL_ONE) {
- mSettingMenu.resetHighlight();
- if (mMenuLayout != null) {
- mMenuLayout.removeView(mMenuLayout.getChildAt(0));
- mMenuLayout = null;
- }
- mSettingMenu = null;
- mSettingMenuState = SETTING_MENU_NONE;
- cleanUpMenus();
- }
- } else {
- if (level == SETTING_MENU_LEVEL_TWO) {
- mSettingMenu.resetHighlight();
- animateFadeOut(mSettingSubMenu, level);
- } else if (level == SETTING_MENU_LEVEL_ONE) {
- animateSlideOut(mSettingMenu, level);
- }
- }
- }
- public void removeAllMenu() {
- removeAllSettingMenu();
}
/**
@@ -1286,16 +752,11 @@ public class CaptureUI implements FocusOverlayManager.FocusUI,
}
private boolean handleBackKeyOnMenu() {
- if (mSceneAndFilterMenuStatus == SCENE_AND_FILTER_MENU_ON) {
- removeSceneAndFilterMenu(true);
+ if (mFilterMenuStatus == FILTER_MENU_ON) {
+ removeFilterMenu(true);
return true;
}
- if (mSettingMenuState == SETTING_MENU_NONE)
- return false;
- if (mSettingMenuState == SETTING_MENU_ON) {
- removeSettingMenu(mSettingMenuLevel, true);
- }
- return true;
+ return false;
}
public boolean onBackPressed() {
@@ -1309,12 +770,7 @@ public class CaptureUI implements FocusOverlayManager.FocusUI,
// ignore backs while we're taking a picture
return true;
}
- if (mSwitcher != null && mSwitcher.showsPopup()) {
- mSwitcher.closePopup();
- return true;
- } else {
- return false;
- }
+ return false;
}
public SurfaceHolder getSurfaceHolder() {
@@ -1433,10 +889,8 @@ public class CaptureUI implements FocusOverlayManager.FocusUI,
}
public boolean collapseCameraControls() {
- mSwitcher.closePopup();
// Remove all the popups/dialog boxes
boolean ret = false;
- removeAllMenu();
mCameraControls.showRefocusToast(false);
return ret;
}
@@ -1547,12 +1001,8 @@ public class CaptureUI implements FocusOverlayManager.FocusUI,
public void setOrientation(int orientation, boolean animation) {
mOrientation = orientation;
mCameraControls.setOrientation(orientation, animation);
- if (mMenuLayout != null)
- mMenuLayout.setOrientation(orientation, animation);
- if (mSubMenuLayout != null)
- mSubMenuLayout.setOrientation(orientation, animation);
- if (mSceneAndFilterLayout != null) {
- ViewGroup vg = (ViewGroup) mSceneAndFilterLayout.getChildAt(0);
+ if (mFilterLayout != null) {
+ ViewGroup vg = (ViewGroup) mFilterLayout.getChildAt(0);
if (vg != null)
vg = (ViewGroup) vg.getChildAt(0);
if (vg != null) {
@@ -1591,6 +1041,12 @@ public class CaptureUI implements FocusOverlayManager.FocusUI,
mModule.onSingleTapUp(view, x, y);
}
+ public boolean isOverControlRegion(int[] xy) {
+ int x = xy[0];
+ int y = xy[1];
+ return mCameraControls.isControlRegion(x, y);
+ }
+
public boolean isOverSurfaceView(int[] xy) {
int x = xy[0];
int y = xy[1];
@@ -1626,10 +1082,6 @@ public class CaptureUI implements FocusOverlayManager.FocusUI,
if (!previewFocused && mCountDownView != null) mCountDownView.cancelCountDown();
}
- public ViewGroup getMenuLayout() {
- return mMenuLayout;
- }
-
public boolean isShutterPressed() {
return mShutterButton.isPressed();
}
@@ -1673,17 +1125,6 @@ public class CaptureUI implements FocusOverlayManager.FocusUI,
@Override
public void onSettingsChanged(List<SettingsManager.SettingState> settings) {
- for (SettingsManager.SettingState setting : settings) {
- String key = setting.key;
- SettingsManager.Values values = setting.values;
- String value = (values.overriddenValue == null) ? values.value : values.overriddenValue;
- switch (key) {
- case SettingsManager.KEY_COLOR_EFFECT:
- changeFilterModeControlIcon(value);
- updateFilterModeIcon(values.overriddenValue == null);
- break;
- }
- }
}
public void startSelfieFlash() {
@@ -1730,45 +1171,6 @@ public class CaptureUI implements FocusOverlayManager.FocusUI,
return changed;
}
- @Override
- public void onSettingChanged(ListPreference pref) {
- removeAllSettingMenu();
- }
-
- @Override
- public void onPreferenceClicked(ListPreference pref) {
- onPreferenceClicked(pref, 0);
- }
-
- @Override
- public void onPreferenceClicked(ListPreference pref, int y) {
- LayoutInflater inflater = (LayoutInflater) mActivity.getSystemService(
- Context.LAYOUT_INFLATER_SERVICE);
- removeSettingMenu(SETTING_MENU_LEVEL_TWO, false);
- mSettingSubMenu = (ListSubMenu) inflater.inflate(R.layout.list_sub_menu, null, false);
- mSettingSubMenu.initialize(pref, y);
- mSettingSubMenu.setSettingChangedListener(mSettingMenu);
- mSettingSubMenu.setAlpha(0f);
-
- if (mSettingMenuState == SETTING_MENU_ON) {
- if (mSettingMenuLevel == SETTING_MENU_LEVEL_TWO) {
- showSettingMenu(SETTING_MENU_LEVEL_TWO, false);
- } else if (mSettingMenuLevel == SETTING_MENU_LEVEL_ONE) {
- showSettingMenu(SETTING_MENU_LEVEL_TWO, true);
- }
- }
- }
-
- @Override
- public void onListMenuTouched() {
- removeSettingMenu(SETTING_MENU_LEVEL_TWO, false);
- }
-
- @Override
- public void onListPrefChanged(ListPreference pref) {
- removeAllSettingMenu();
- }
-
private class ZoomChangeListener implements ZoomRenderer.OnZoomChangedListener {
@Override
public void onZoomValueChanged(float mZoomValue) {