From 747cdc6285a7df4db59cb792d0f68a7cd7758c01 Mon Sep 17 00:00:00 2001 From: Giacomo Randazzo Date: Sun, 16 Jun 2019 22:56:23 +0200 Subject: [PATCH] override removeView --- .../com/otaliastudios/cameraview/CameraView.java | 13 +++++++++++++ .../cameraview/OverlayLayoutManager.java | 13 +++++++++++++ 2 files changed, 26 insertions(+) diff --git a/cameraview/src/main/java/com/otaliastudios/cameraview/CameraView.java b/cameraview/src/main/java/com/otaliastudios/cameraview/CameraView.java index d9c3a746..cfc69472 100644 --- a/cameraview/src/main/java/com/otaliastudios/cameraview/CameraView.java +++ b/cameraview/src/main/java/com/otaliastudios/cameraview/CameraView.java @@ -307,6 +307,19 @@ public class CameraView extends FrameLayout implements LifecycleObserver { } } + @Override + public void removeView(View child) { + if (child.getLayoutParams() instanceof OverlayLayoutParams) { + if (((OverlayLayoutParams) child.getLayoutParams()).drawInPreview) { + mOverlayLayoutManager.removeView(child); + } else { + mOverlayLayoutManagerBelow.removeView(child); + } + } else { + super.removeView(child); + } + } + @Override public LayoutParams generateLayoutParams(AttributeSet attributeSet) { OverlayLayoutParams toBeChecked = new OverlayLayoutParams(this.getContext(), attributeSet); diff --git a/cameraview/src/main/java/com/otaliastudios/cameraview/OverlayLayoutManager.java b/cameraview/src/main/java/com/otaliastudios/cameraview/OverlayLayoutManager.java index 0a273f6a..713b87de 100644 --- a/cameraview/src/main/java/com/otaliastudios/cameraview/OverlayLayoutManager.java +++ b/cameraview/src/main/java/com/otaliastudios/cameraview/OverlayLayoutManager.java @@ -66,6 +66,19 @@ class OverlayLayoutManager extends FrameLayout implements SurfaceDrawer { } } + @Override + public void removeView(View child) { + // params must be instance of OverlayLayoutParams + if (!(child.getLayoutParams() instanceof CameraView.OverlayLayoutParams)) { + return; + } + + OverlayType viewOverlayType = new OverlayType((CameraView.OverlayLayoutParams) child.getLayoutParams()); + if (mLayouts.containsKey(viewOverlayType)) { + mLayouts.get(viewOverlayType).removeView(child); + } + } + @Override public void drawOnSurfaceForPictureSnapshot(Canvas surfaceCanvas) { surfaceCanvas.save();