mirror of
https://github.com/Myzel394/Alibi.git
synced 2025-06-19 07:15:25 +02:00
feat: Add ChangeNavColors
This commit is contained in:
parent
b0c81ef630
commit
f035c40c21
@ -19,6 +19,7 @@ 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.draw.scale
|
||||||
|
import androidx.compose.ui.graphics.Color
|
||||||
import androidx.compose.ui.platform.LocalConfiguration
|
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.platform.LocalDensity
|
||||||
@ -28,6 +29,7 @@ import androidx.navigation.NavController
|
|||||||
import app.myzel394.alibi.CameraHandler
|
import app.myzel394.alibi.CameraHandler
|
||||||
import app.myzel394.alibi.ui.models.AudioRecorderModel
|
import app.myzel394.alibi.ui.models.AudioRecorderModel
|
||||||
import app.myzel394.alibi.ui.models.VideoRecorderModel
|
import app.myzel394.alibi.ui.models.VideoRecorderModel
|
||||||
|
import app.myzel394.alibi.ui.utils.ChangeNavColors
|
||||||
import app.myzel394.alibi.ui.utils.getOptimalPreviewSize
|
import app.myzel394.alibi.ui.utils.getOptimalPreviewSize
|
||||||
import kotlinx.coroutines.launch
|
import kotlinx.coroutines.launch
|
||||||
import java.io.File
|
import java.io.File
|
||||||
@ -71,6 +73,8 @@ fun RecorderScreen(
|
|||||||
Size(size.x, size.y)
|
Size(size.x, size.y)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
ChangeNavColors(color = Color.Transparent)
|
||||||
|
|
||||||
AndroidView(
|
AndroidView(
|
||||||
modifier = Modifier
|
modifier = Modifier
|
||||||
.fillMaxSize()
|
.fillMaxSize()
|
||||||
|
@ -1,9 +1,59 @@
|
|||||||
package app.myzel394.alibi.ui.utils
|
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.foundation.isSystemInDarkTheme
|
||||||
import androidx.compose.runtime.Composable
|
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
|
@Composable
|
||||||
fun rememberIsInDarkMode(): Boolean {
|
fun rememberIsInDarkMode(): Boolean {
|
||||||
return isSystemInDarkTheme()
|
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
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
Loading…
x
Reference in New Issue
Block a user