feat: Add ChangeNavColors

This commit is contained in:
Myzel394 2023-08-23 12:15:57 +02:00
parent b0c81ef630
commit f035c40c21
No known key found for this signature in database
GPG Key ID: 79CC92F37B3E1A2B
2 changed files with 55 additions and 1 deletions

View File

@ -19,6 +19,7 @@ import androidx.compose.material3.Text
import androidx.compose.runtime.*
import androidx.compose.ui.Modifier
import androidx.compose.ui.draw.scale
import androidx.compose.ui.graphics.Color
import androidx.compose.ui.platform.LocalConfiguration
import androidx.compose.ui.platform.LocalContext
import androidx.compose.ui.platform.LocalDensity
@ -28,6 +29,7 @@ import androidx.navigation.NavController
import app.myzel394.alibi.CameraHandler
import app.myzel394.alibi.ui.models.AudioRecorderModel
import app.myzel394.alibi.ui.models.VideoRecorderModel
import app.myzel394.alibi.ui.utils.ChangeNavColors
import app.myzel394.alibi.ui.utils.getOptimalPreviewSize
import kotlinx.coroutines.launch
import java.io.File
@ -70,6 +72,8 @@ fun RecorderScreen(
Size(size.x, size.y)
}
ChangeNavColors(color = Color.Transparent)
AndroidView(
modifier = Modifier

View File

@ -1,9 +1,59 @@
package app.myzel394.alibi.ui.utils
import android.os.Build
import android.view.View
import android.view.WindowManager
import androidx.compose.foundation.isSystemInDarkTheme
import androidx.compose.runtime.Composable
import androidx.compose.runtime.DisposableEffect
import androidx.compose.runtime.LaunchedEffect
import androidx.compose.ui.graphics.Color
import androidx.compose.ui.graphics.toArgb
import androidx.compose.ui.platform.LocalContext
@Composable
fun rememberIsInDarkMode(): Boolean {
return isSystemInDarkTheme()
}
}
@Composable
fun ChangeNavColors(
color: Color
) {
val activity = LocalContext.current as androidx.activity.ComponentActivity
val window = activity.window
DisposableEffect(Unit) {
val originalStatusBarColor = window.statusBarColor
val originalNavigationBarColor = window.navigationBarColor
var systemUiVisibility = 0
// Use a dark scrim by default since light nav bar is API 27+
var navigationBarColor = color
val winParams = activity.window.attributes
systemUiVisibility = systemUiVisibility or View.SYSTEM_UI_FLAG_LIGHT_STATUS_BAR
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.O) {
systemUiVisibility = systemUiVisibility or View.SYSTEM_UI_FLAG_LIGHT_NAVIGATION_BAR
navigationBarColor = Color.Transparent
}
systemUiVisibility = systemUiVisibility or
View.SYSTEM_UI_FLAG_LAYOUT_STABLE or
View.SYSTEM_UI_FLAG_LAYOUT_FULLSCREEN or
View.SYSTEM_UI_FLAG_LAYOUT_HIDE_NAVIGATION
window.decorView.systemUiVisibility = systemUiVisibility
winParams.flags = winParams.flags and
(WindowManager.LayoutParams.FLAG_TRANSLUCENT_STATUS or
WindowManager.LayoutParams.FLAG_TRANSLUCENT_NAVIGATION).inv()
window.statusBarColor = Color.Transparent.toArgb()
window.navigationBarColor = navigationBarColor.toArgb()
window.attributes = winParams
onDispose {
window.statusBarColor = originalStatusBarColor
window.navigationBarColor = originalNavigationBarColor
}
}
}