From 9f58d642b70129c4fa85e2bd29faba8456341f8a Mon Sep 17 00:00:00 2001 From: Giacomo Randazzo Date: Sun, 3 Mar 2019 19:54:15 +0100 Subject: [PATCH] Fix bug --- .../java/com/otaliastudios/cameraview/CameraView.java | 8 ++++++++ .../java/com/otaliastudios/cameraview/OverlayLayout.java | 2 ++ .../com/otaliastudios/cameraview/demo/CameraActivity.java | 6 ++++++ demo/src/main/res/layout/activity_camera.xml | 1 + 4 files changed, 17 insertions(+) diff --git a/cameraview/src/main/java/com/otaliastudios/cameraview/CameraView.java b/cameraview/src/main/java/com/otaliastudios/cameraview/CameraView.java index a3e9738c..c9134686 100644 --- a/cameraview/src/main/java/com/otaliastudios/cameraview/CameraView.java +++ b/cameraview/src/main/java/com/otaliastudios/cameraview/CameraView.java @@ -1711,6 +1711,14 @@ public class CameraView extends FrameLayout implements LifecycleObserver { return mCameraController.getDisableOverlayFor(); } + /** + * Force the overlay to be redrawn. + */ + public void invalidateOverlay() { + if (mPreviewOverlayLayout != null) { + mPreviewOverlayLayout.postInvalidate(); + } + } //endregion //region Callbacks and dispatching diff --git a/cameraview/src/main/java/com/otaliastudios/cameraview/OverlayLayout.java b/cameraview/src/main/java/com/otaliastudios/cameraview/OverlayLayout.java index 4b4a1472..9d177a11 100644 --- a/cameraview/src/main/java/com/otaliastudios/cameraview/OverlayLayout.java +++ b/cameraview/src/main/java/com/otaliastudios/cameraview/OverlayLayout.java @@ -4,6 +4,7 @@ import android.content.Context; import android.graphics.Canvas; import android.graphics.Color; import android.graphics.Paint; +import android.graphics.PorterDuff; import android.util.AttributeSet; import android.view.Surface; import android.view.View; @@ -36,6 +37,7 @@ public class OverlayLayout extends FrameLayout { float xScale = surfaceCanvas.getWidth() / (float) canvas.getWidth(); surfaceCanvas.scale(xScale, xScale); + surfaceCanvas.drawColor(Color.TRANSPARENT, PorterDuff.Mode.CLEAR); super.draw(surfaceCanvas); outputSurface.unlockCanvasAndPost(surfaceCanvas); diff --git a/demo/src/main/java/com/otaliastudios/cameraview/demo/CameraActivity.java b/demo/src/main/java/com/otaliastudios/cameraview/demo/CameraActivity.java index 0b0d348a..fc627843 100644 --- a/demo/src/main/java/com/otaliastudios/cameraview/demo/CameraActivity.java +++ b/demo/src/main/java/com/otaliastudios/cameraview/demo/CameraActivity.java @@ -10,6 +10,7 @@ import androidx.appcompat.app.AppCompatActivity; import android.view.View; import android.view.ViewGroup; import android.view.ViewTreeObserver; +import android.widget.TextView; import android.widget.Toast; import com.otaliastudios.cameraview.CameraException; @@ -180,12 +181,17 @@ public class CameraActivity extends AppCompatActivity implements View.OnClickLis private void toggleCamera() { if (camera.isTakingPicture() || camera.isTakingVideo()) return; + TextView watermarkTitle = findViewById(R.id.watermark_title); switch (camera.toggleFacing()) { case BACK: + watermarkTitle.setText("Back facing"); + camera.invalidateOverlay(); message("Switched to back camera!", false); break; case FRONT: + watermarkTitle.setText("Front facing"); + camera.invalidateOverlay(); message("Switched to front camera!", false); break; } diff --git a/demo/src/main/res/layout/activity_camera.xml b/demo/src/main/res/layout/activity_camera.xml index 4a7a6001..f2249973 100644 --- a/demo/src/main/res/layout/activity_camera.xml +++ b/demo/src/main/res/layout/activity_camera.xml @@ -46,6 +46,7 @@ android:contentDescription="Watermark" />