mirror of
https://github.com/Myzel394/Alibi.git
synced 2025-06-22 08:30:31 +02:00
fix: Properly resize preview to full screen
This commit is contained in:
parent
dd9fd930f5
commit
b0c81ef630
@ -1,18 +1,28 @@
|
|||||||
package app.myzel394.alibi.ui.screens
|
package app.myzel394.alibi.ui.screens
|
||||||
|
|
||||||
import android.annotation.SuppressLint
|
import android.annotation.SuppressLint
|
||||||
|
import android.content.Context
|
||||||
|
import android.graphics.Point
|
||||||
import android.hardware.camera2.CameraCharacteristics
|
import android.hardware.camera2.CameraCharacteristics
|
||||||
|
import android.hardware.display.DisplayManager
|
||||||
|
import android.os.Build
|
||||||
import android.util.Size
|
import android.util.Size
|
||||||
|
import android.view.Display
|
||||||
import android.view.SurfaceHolder
|
import android.view.SurfaceHolder
|
||||||
import android.view.SurfaceView
|
import android.view.SurfaceView
|
||||||
import android.view.ViewGroup
|
import android.view.ViewGroup
|
||||||
|
import android.view.WindowManager
|
||||||
import androidx.compose.foundation.layout.fillMaxSize
|
import androidx.compose.foundation.layout.fillMaxSize
|
||||||
import androidx.compose.material3.Button
|
import androidx.compose.material3.Button
|
||||||
import androidx.compose.material3.ExperimentalMaterial3Api
|
import androidx.compose.material3.ExperimentalMaterial3Api
|
||||||
import androidx.compose.material3.Text
|
import androidx.compose.material3.Text
|
||||||
import androidx.compose.runtime.*
|
import androidx.compose.runtime.*
|
||||||
import androidx.compose.ui.Modifier
|
import androidx.compose.ui.Modifier
|
||||||
|
import androidx.compose.ui.draw.scale
|
||||||
|
import androidx.compose.ui.platform.LocalConfiguration
|
||||||
import androidx.compose.ui.platform.LocalContext
|
import androidx.compose.ui.platform.LocalContext
|
||||||
|
import androidx.compose.ui.platform.LocalDensity
|
||||||
|
import androidx.compose.ui.unit.dp
|
||||||
import androidx.compose.ui.viewinterop.AndroidView
|
import androidx.compose.ui.viewinterop.AndroidView
|
||||||
import androidx.navigation.NavController
|
import androidx.navigation.NavController
|
||||||
import app.myzel394.alibi.CameraHandler
|
import app.myzel394.alibi.CameraHandler
|
||||||
@ -44,8 +54,27 @@ fun RecorderScreen(
|
|||||||
if (camera == null) {
|
if (camera == null) {
|
||||||
return
|
return
|
||||||
} else {
|
} else {
|
||||||
|
var scaleValue by remember { mutableFloatStateOf(1f) }
|
||||||
|
|
||||||
|
val screenSize = if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.S) {
|
||||||
|
val windowManager = context.getSystemService(Context.WINDOW_SERVICE) as WindowManager
|
||||||
|
val bounds = windowManager.currentWindowMetrics.bounds
|
||||||
|
|
||||||
|
Size(bounds.width(), bounds.height())
|
||||||
|
} else {
|
||||||
|
val displayManager = context.getSystemService(Context.DISPLAY_SERVICE) as DisplayManager
|
||||||
|
val display = displayManager.getDisplay(Display.DEFAULT_DISPLAY)
|
||||||
|
|
||||||
|
val size = Point()
|
||||||
|
display.getRealSize(size)
|
||||||
|
|
||||||
|
Size(size.x, size.y)
|
||||||
|
}
|
||||||
|
|
||||||
AndroidView(
|
AndroidView(
|
||||||
modifier = Modifier.fillMaxSize(),
|
modifier = Modifier
|
||||||
|
.fillMaxSize()
|
||||||
|
.scale(scaleValue),
|
||||||
factory = { context ->
|
factory = { context ->
|
||||||
val surface = object : SurfaceView(context) {
|
val surface = object : SurfaceView(context) {
|
||||||
override fun onMeasure(widthMeasureSpec: Int, heightMeasureSpec: Int) {
|
override fun onMeasure(widthMeasureSpec: Int, heightMeasureSpec: Int) {
|
||||||
@ -77,6 +106,11 @@ fun RecorderScreen(
|
|||||||
(previewSize.width * widthScaleRatio).toInt(),
|
(previewSize.width * widthScaleRatio).toInt(),
|
||||||
(previewSize.height * heightScaleUpRatio).toInt()
|
(previewSize.height * heightScaleUpRatio).toInt()
|
||||||
)
|
)
|
||||||
|
|
||||||
|
scaleValue = max(
|
||||||
|
screenSize.width / optimalWidth.toFloat(),
|
||||||
|
screenSize.height / optimalHeight.toFloat(),
|
||||||
|
)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
Loading…
x
Reference in New Issue
Block a user