diff options
author | Byunghun Jeon <bjeon@codeaurora.org> | 2016-07-14 11:13:36 -0700 |
---|---|---|
committer | Jay Wang <jaywang@codeaurora.org> | 2016-09-27 11:08:28 -0700 |
commit | a6038bde5f3fbdd05519f1be8ad6f369fd0365bf (patch) | |
tree | ab9761c31171a7053b329a3d08573b370f747336 /src/com/android/camera/CaptureUI.java | |
parent | 8eefd5866870e7293665df25625ab69fb8e2de0f (diff) | |
download | android_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.java | 740 |
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) { |