From 9916e1e62cc36b25a7c30d1fd9aaace5d05a26dc Mon Sep 17 00:00:00 2001 From: Steve Kondik Date: Fri, 11 Nov 2016 17:46:10 -0800 Subject: snap: Hide overlays early when going to filmstrip Change-Id: Ic66abb6dbce0283f3c76512f40daf6bb4a9b8f54 --- src/com/android/camera/BaseUI.java | 46 ++++++++++++++++++++++++++++++++++++++ 1 file changed, 46 insertions(+) diff --git a/src/com/android/camera/BaseUI.java b/src/com/android/camera/BaseUI.java index f48b2875a..7fd3c1805 100644 --- a/src/com/android/camera/BaseUI.java +++ b/src/com/android/camera/BaseUI.java @@ -4,6 +4,7 @@ import android.graphics.Point; import android.graphics.RectF; import android.view.View; import android.view.ViewGroup; +import android.view.ViewStub; import com.android.camera.ui.CameraControls; import com.android.camera.ui.CaptureAnimationOverlay; @@ -12,6 +13,9 @@ import com.android.camera.util.CameraUtil; import org.codeaurora.snapcam.R; +import java.util.ArrayList; +import java.util.List; + /** we can start accumulating common code between UI classes here * toward an eventual unification - WF */ public abstract class BaseUI { @@ -27,6 +31,9 @@ public abstract class BaseUI { protected int mBottomMargin = 0; protected int mScreenRatio = CameraUtil.RATIO_UNKNOWN; + private boolean mOverlaysDisabled; + private final List mDisabledViews = new ArrayList<>(); + public BaseUI(CameraActivity activity, ViewGroup rootView, int layout) { mActivity = activity; mRootView = rootView; @@ -55,12 +62,14 @@ public abstract class BaseUI { public void showPreviewCover() { if (mPreviewCover != null && mPreviewCover.getVisibility() != View.VISIBLE) { mPreviewCover.setVisibility(View.VISIBLE); + disableOverlays(); } } public void hidePreviewCover() { if (mPreviewCover != null && mPreviewCover.getVisibility() != View.GONE) { mPreviewCover.setVisibility(View.GONE); + enableOverlays(); } } @@ -133,4 +142,41 @@ public abstract class BaseUI { protected void onPreviewRectChanged(RectF rect) { mCaptureOverlay.setPreviewRect(rect); } + + private void enableOverlays() { + synchronized (mDisabledViews) { + if (!mOverlaysDisabled) { + return; + } + + for (View v : mDisabledViews) { + v.setVisibility(View.VISIBLE); + } + + mDisabledViews.clear(); + mOverlaysDisabled = false; + } + } + + private void disableOverlays() { + synchronized (mDisabledViews) { + if (mOverlaysDisabled) { + return; + } + + mOverlaysDisabled = true; + + View focusRingView = mRootView.findViewById(R.id.focus_ring); + if (focusRingView != null && focusRingView.getVisibility() == View.VISIBLE) { + focusRingView.setVisibility(View.GONE); + mDisabledViews.add(focusRingView); + } + + View faceView = mRootView.findViewById(R.id.face_view); + if (faceView != null && faceView.getVisibility() == View.VISIBLE) { + faceView.setVisibility(View.GONE); + mDisabledViews.add(faceView); + } + } + } } -- cgit v1.2.3