diff --git a/app/src/main/kotlin/com/simplemobiletools/camera/activities/MainActivity.kt b/app/src/main/kotlin/com/simplemobiletools/camera/activities/MainActivity.kt index 15691056..5ddc51bb 100644 --- a/app/src/main/kotlin/com/simplemobiletools/camera/activities/MainActivity.kt +++ b/app/src/main/kotlin/com/simplemobiletools/camera/activities/MainActivity.kt @@ -11,6 +11,7 @@ import android.os.Bundle import android.provider.MediaStore import android.view.* import android.widget.LinearLayout +import androidx.constraintlayout.widget.ConstraintSet import androidx.core.content.ContextCompat import androidx.core.view.* import androidx.transition.* @@ -318,7 +319,9 @@ class MainActivity : SimpleActivity(), PhotoProcessor.MediaSavedListener, Camera initInPhotoMode = isInPhotoMode, ) - mFocusCircleView = FocusCircleView(this) + mFocusCircleView = FocusCircleView(this).apply { + id = View.generateViewId() + } view_holder.addView(mFocusCircleView) setupPreviewImage(true) @@ -752,6 +755,19 @@ class MainActivity : SimpleActivity(), PhotoProcessor.MediaSavedListener, Camera button.iconTint = ColorStateList(states, iconColors) } + override fun adjustPreviewView(requiresCentering: Boolean) { + val constraintSet = ConstraintSet() + constraintSet.clone(view_holder) + if (requiresCentering) { + constraintSet.connect(preview_view.id, ConstraintSet.TOP, top_options.id, ConstraintSet.BOTTOM) + constraintSet.connect(preview_view.id, ConstraintSet.BOTTOM, camera_mode_tab.id, ConstraintSet.TOP) + } else { + constraintSet.connect(preview_view.id, ConstraintSet.TOP, ConstraintSet.PARENT_ID, ConstraintSet.TOP) + constraintSet.connect(preview_view.id, ConstraintSet.BOTTOM, ConstraintSet.PARENT_ID, ConstraintSet.BOTTOM) + } + constraintSet.applyTo(view_holder) + } + override fun mediaSaved(path: String) { rescanPaths(arrayListOf(path)) { setupPreviewImage(true) diff --git a/app/src/main/kotlin/com/simplemobiletools/camera/implementations/CameraXPreview.kt b/app/src/main/kotlin/com/simplemobiletools/camera/implementations/CameraXPreview.kt index 3025b7fb..a620e1c2 100644 --- a/app/src/main/kotlin/com/simplemobiletools/camera/implementations/CameraXPreview.kt +++ b/app/src/main/kotlin/com/simplemobiletools/camera/implementations/CameraXPreview.kt @@ -162,6 +162,8 @@ class CameraXPreview( MySize(selectedQuality.width, selectedQuality.height) } + listener.adjustPreviewView(resolution.requiresCentering()) + val isFullSize = resolution.isFullScreen previewView.scaleType = if (isFullSize) ScaleType.FILL_CENTER else ScaleType.FIT_CENTER val rotation = previewView.display.rotation diff --git a/app/src/main/kotlin/com/simplemobiletools/camera/implementations/CameraXPreviewListener.kt b/app/src/main/kotlin/com/simplemobiletools/camera/implementations/CameraXPreviewListener.kt index 5c9f1866..d8756c5a 100644 --- a/app/src/main/kotlin/com/simplemobiletools/camera/implementations/CameraXPreviewListener.kt +++ b/app/src/main/kotlin/com/simplemobiletools/camera/implementations/CameraXPreviewListener.kt @@ -29,6 +29,6 @@ interface CameraXPreviewListener { isFrontCamera: Boolean, onSelect: (index: Int, changed: Boolean) -> Unit, ) - fun showFlashOptions(photoCapture: Boolean) + fun adjustPreviewView(requiresCentering: Boolean) } diff --git a/app/src/main/kotlin/com/simplemobiletools/camera/models/MySize.kt b/app/src/main/kotlin/com/simplemobiletools/camera/models/MySize.kt index 4201aa8d..265bcab7 100644 --- a/app/src/main/kotlin/com/simplemobiletools/camera/models/MySize.kt +++ b/app/src/main/kotlin/com/simplemobiletools/camera/models/MySize.kt @@ -17,6 +17,10 @@ data class MySize(val width: Int, val height: Int, val isFullScreen: Boolean = f val megaPixels: String = String.format("%.1f", (width * height.toFloat()) / ONE_MEGA_PIXEL) + fun requiresCentering(): Boolean { + return !isFullScreen && (isFourToThree() || isThreeToTwo() || isSquare()) + } + fun isSixteenToNine() = ratio == 16 / 9f private fun isFiveToThree() = ratio == 5 / 3f diff --git a/app/src/main/res/layout/activity_main.xml b/app/src/main/res/layout/activity_main.xml index 91e32770..31b74910 100644 --- a/app/src/main/res/layout/activity_main.xml +++ b/app/src/main/res/layout/activity_main.xml @@ -11,7 +11,9 @@ + android:layout_height="0dp" + app:layout_constraintBottom_toBottomOf="parent" + app:layout_constraintTop_toTopOf="parent" />