diff options
Diffstat (limited to 'src/com/android/camera/ui/OneUICameraControls.java')
| -rw-r--r--[-rwxr-xr-x] | src/com/android/camera/ui/OneUICameraControls.java | 192 |
1 files changed, 112 insertions, 80 deletions
diff --git a/src/com/android/camera/ui/OneUICameraControls.java b/src/com/android/camera/ui/OneUICameraControls.java index 669565d52..b84f9065a 100755..100644 --- a/src/com/android/camera/ui/OneUICameraControls.java +++ b/src/com/android/camera/ui/OneUICameraControls.java @@ -25,17 +25,21 @@ import android.graphics.Canvas; import android.graphics.Paint; import android.graphics.Path; import android.graphics.Point; +import android.support.v7.widget.RecyclerView; import android.util.AttributeSet; import android.util.TypedValue; +import android.view.LayoutInflater; import android.view.View; import android.view.ViewGroup; import android.view.Display; import android.widget.FrameLayout; +import android.widget.ImageView; import android.widget.LinearLayout; import android.widget.SeekBar; import android.widget.TextView; import com.android.camera.CaptureModule; +import com.android.camera.CaptureUI; import com.android.camera.Storage; import com.android.camera.imageprocessor.filter.BeautificationFilter; @@ -45,7 +49,7 @@ public class OneUICameraControls extends RotatableLayout { private static final String TAG = "CAM_Controls"; - private static final float TOP_PANEL_SPACE_NUM = 4f; + private static final float TOP_PANEL_SPACE_NUM = 5f; private static final float BOTTOM_PANEL_SPACE_NUM = 5f; private static final float PANEL_INDEX_0 = 0f; private static final float PANEL_INDEX_1 = 1f; @@ -68,9 +72,11 @@ public class OneUICameraControls extends RotatableLayout { private View mMakeupSeekBarHighText; private View mMakeupSeekBarLayout; private View mCancelButton; + private View mModeSwitcher; private ViewGroup mProModeLayout; private View mSettingsButton; + private RecyclerView mModeSelectLayout; private ArrowTextView mRefocusToast; private static final int WIDTH_GRID = 5; @@ -110,6 +116,8 @@ public class OneUICameraControls extends RotatableLayout { private RotateLayout mIsoRotateLayout; private RotateLayout mZoomSeekBarLayout; + private CaptureUI mCUI; + public OneUICameraControls(Context context, AttributeSet attrs) { super(context, attrs); mPaint = new Paint(Paint.ANTI_ALIAS_FLAG); @@ -167,6 +175,7 @@ public class OneUICameraControls extends RotatableLayout { mRemainingPhotos = (LinearLayout) findViewById(R.id.remaining_photos); mRemainingPhotosText = (TextView) findViewById(R.id.remaining_photos_text); mCancelButton = findViewById(R.id.cancel_button); + mModeSwitcher = findViewById(R.id.mode_switcher); mProModeLayout = (ViewGroup) findViewById(R.id.pro_mode_layout); mExposureText = (TextView) findViewById(R.id.exposure_value); @@ -183,75 +192,13 @@ public class OneUICameraControls extends RotatableLayout { mIsoRotateLayout = (RotateLayout) findViewById(R.id.iso_rotate_layout); mZoomSeekBarLayout = (RotateLayout) findViewById(R.id.zoom_seekbar_layout); - mExposureText.setOnClickListener(new OnClickListener() { - @Override - public void onClick(View v) { - resetProModeIcons(); - int mode = mProMode.getMode(); - if (mode == ProMode.EXPOSURE_MODE) { - mProMode.setMode(ProMode.NO_MODE); - } else { - mExposureText.setSelected(true); - mProMode.setMode(ProMode.EXPOSURE_MODE); - } - } - }); - mManualText.setOnClickListener(new OnClickListener() { - @Override - public void onClick(View v) { - resetProModeIcons(); - int mode = mProMode.getMode(); - if (mode == ProMode.MANUAL_MODE) { - mProMode.setMode(ProMode.NO_MODE); - } else { - mManualText.setSelected(true); - mProMode.setMode(ProMode.MANUAL_MODE); - } - } - }); - mWhiteBalanceText.setOnClickListener(new OnClickListener() { - @Override - public void onClick(View v) { - resetProModeIcons(); - int mode = mProMode.getMode(); - if (mode == ProMode.WHITE_BALANCE_MODE) { - mProMode.setMode(ProMode.NO_MODE); - } else { - mWhiteBalanceText.setSelected(true); - mProMode.setMode(ProMode.WHITE_BALANCE_MODE); - } - } - }); - mIsoText.setOnClickListener(new OnClickListener() { - @Override - public void onClick(View v) { - resetProModeIcons(); - int mode = mProMode.getMode(); - if (mode == ProMode.ISO_MODE) { - mProMode.setMode(ProMode.NO_MODE); - } else { - mIsoText.setSelected(true); - mProMode.setMode(ProMode.ISO_MODE); - } - } - }); - mZoomSeekbarText.setOnClickListener(new OnClickListener() { - @Override - public void onClick(View v) { - resetProModeIcons(); - int mode = mProMode.getMode(); - if (mode == ProMode.ZOOM_MODE) { - mProMode.setMode(ProMode.NO_MODE); - } else { - mZoomSeekbarText.setSelected(true); - mProMode.setMode(ProMode.ZOOM_MODE); - } - } - }); + mModeSelectLayout = (RecyclerView) findViewById(R.id.mode_select_layout); + mModeSelectLayout.setVisibility(View.INVISIBLE); + mViews = new View[]{ mSceneModeSwitcher, mFilterModeSwitcher, mFrontBackSwitcher, - mFlashButton, - mPreview, mPauseButton, mCancelButton, mSettingsButton + mFlashButton, mPreview, mPauseButton, mCancelButton, + mSettingsButton, mModeSwitcher }; mBottomLargeSize = getResources().getDimensionPixelSize( R.dimen.one_ui_bottom_large); @@ -320,24 +267,80 @@ public class OneUICameraControls extends RotatableLayout { } } + public void onExposureTextClick() { + resetProModeIcons(); + int mode = mProMode.getMode(); + if (mode == ProMode.EXPOSURE_MODE) { + mProMode.setMode(ProMode.NO_MODE); + } else { + mExposureText.setSelected(true); + mProMode.setMode(ProMode.EXPOSURE_MODE); + } + } + + public void onManualTextClick() { + resetProModeIcons(); + int mode = mProMode.getMode(); + if (mode == ProMode.MANUAL_MODE) { + mProMode.setMode(ProMode.NO_MODE); + } else { + mManualText.setSelected(true); + mProMode.setMode(ProMode.MANUAL_MODE); + } + } + + public void onWhiteBalanceTextClick() { + resetProModeIcons(); + int mode = mProMode.getMode(); + if (mode == ProMode.WHITE_BALANCE_MODE) { + mProMode.setMode(ProMode.NO_MODE); + } else { + mWhiteBalanceText.setSelected(true); + mProMode.setMode(ProMode.WHITE_BALANCE_MODE); + } + } + + public void onIsoTextClick() { + resetProModeIcons(); + int mode = mProMode.getMode(); + if (mode == ProMode.ISO_MODE) { + mProMode.setMode(ProMode.NO_MODE); + } else { + mIsoText.setSelected(true); + mProMode.setMode(ProMode.ISO_MODE); + } + } + + public void onZoomSeekbarTextClick() { + resetProModeIcons(); + int mode = mProMode.getMode(); + if (mode == ProMode.ZOOM_MODE) { + mProMode.setMode(ProMode.NO_MODE); + } else { + mZoomSeekbarText.setSelected(true); + mProMode.setMode(ProMode.ZOOM_MODE); + } + } + + public void initialize(CaptureUI cUI) { + mCUI = cUI; + } + + public void closeModeSwitcher(boolean animate) { + mCUI.closeModeSwitcher(animate); + } + private void setLocation(View v, boolean top, float idx) { if(v == null) { return; } - int w = v.getMeasuredWidth(); int h = v.getMeasuredHeight(); if (top) { v.setY((mTop - h) / 2); } else { v.setY(mHeight - mBottom + (mBottom - h) / 2); } - float bW; - if (top) { - bW = mWidth / TOP_PANEL_SPACE_NUM; - } else { - bW = mWidth / BOTTOM_PANEL_SPACE_NUM; - } - v.setX(bW * idx + (bW - w) / 2); + v.setX(getLocationX(v, top, idx)); } private void setLocationCustomBottom(View v, float x, float y) { @@ -352,10 +355,32 @@ public class OneUICameraControls extends RotatableLayout { v.setX(bW * x); } + private float getLocationX(View v, boolean top, float idx) { + int w = v.getMeasuredWidth(); + float bW; + if (top) { + bW = mWidth / TOP_PANEL_SPACE_NUM; + } else { + bW = mWidth / BOTTOM_PANEL_SPACE_NUM; + } + return (bW * idx + (bW - w) / 2); + } + + private void setLocationCameraModePanel() { + if(mModeSelectLayout == null) { + return; + } + mModeSelectLayout.setY(mModeSwitcher.getY() - mModeSelectLayout.getMeasuredHeight() + + mModeSwitcher.getMeasuredHeight()); + mModeSelectLayout.setX(getLocationX(mModeSelectLayout, true, 4f)); + } + private void setLocation(int w, int h) { int rotation = getUnifiedRotation(); setLocation(mSceneModeSwitcher, true, PANEL_INDEX_0); setLocation(mFilterModeSwitcher, true, PANEL_INDEX_1); + setLocation(mModeSwitcher, false, 4f); + setLocationCameraModePanel(); if (mIsVideoMode) { setLocation(mMute, true, PANEL_INDEX_1); setLocation(mFlashButton, true, PANEL_INDEX_2); @@ -365,9 +390,9 @@ public class OneUICameraControls extends RotatableLayout { setLocation(mVideoShutter, false, PANEL_INDEX_2); setLocation(mExitBestPhotpMode ,false, PANEL_INDEX_4); } else { - setLocation(mFlashButton, true, PANEL_INDEX_2); - setLocation(mSettingsButton,true, PANEL_INDEX_3); - setLocation(mFrontBackSwitcher, false, 3.15f); + setLocation(mFlashButton, true, PANEL_INDEX_3); + setLocation(mSettingsButton,true, PANEL_INDEX_4); + setLocation(mFrontBackSwitcher, true, PANEL_INDEX_2); if (mIntentMode == CaptureModule.INTENT_MODE_CAPTURE) { setLocation(mShutter, false, PANEL_INDEX_2); setLocation(mCancelButton, false, 0.85f); @@ -518,7 +543,7 @@ public class OneUICameraControls extends RotatableLayout { mSceneModeSwitcher, mFilterModeSwitcher, mFrontBackSwitcher, mFlashButton, mSettingsButton, mPreview, mMute, mMakeupSeekBarLowText, mMakeupSeekBarHighText, - mPauseButton, mExitBestPhotpMode + mPauseButton, mExitBestPhotpMode, mModeSwitcher }; for (View v : views) { @@ -532,6 +557,13 @@ public class OneUICameraControls extends RotatableLayout { mIsoRotateLayout.setOrientation(orientation, animation); mZoomSeekBarLayout.setOrientation(orientation, animation); mProMode.setOrientation(orientation); + + // Reorient the camera modes + for (int i = 0; i < ((ViewGroup) mModeSelectLayout).getChildCount(); i++) { + ((Rotatable) ((ViewGroup) mModeSelectLayout.getChildAt(i)) + .getChildAt(0)).setOrientation(orientation, animation); + } + layoutRemaingPhotos(); } |
