diff --git a/app/src/main/java/com/bintianqi/owndroid/MainActivity.kt b/app/src/main/java/com/bintianqi/owndroid/MainActivity.kt index b35ca4e..7f0e837 100644 --- a/app/src/main/java/com/bintianqi/owndroid/MainActivity.kt +++ b/app/src/main/java/com/bintianqi/owndroid/MainActivity.kt @@ -48,7 +48,6 @@ import com.bintianqi.owndroid.ui.theme.bgColor import kotlinx.coroutines.delay var backToHome = false -lateinit var displayMetrics: DisplayMetrics @ExperimentalMaterial3Api class MainActivity : ComponentActivity() { private fun registerActivityResult(){ @@ -75,7 +74,6 @@ class MainActivity : ComponentActivity() { WindowCompat.setDecorFitsSystemWindows(window, false) super.onCreate(savedInstanceState) registerActivityResult() - displayMetrics = applicationContext.resources.displayMetrics setContent { OwnDroidTheme { MyScaffold() @@ -108,10 +106,10 @@ fun MyScaffold(){ .background(bgColor) .imePadding() .pointerInput(Unit) {detectTapGestures(onTap = {focusMgr.clearFocus()})}, - enterTransition = Animations().navHostEnterTransition, - exitTransition = Animations().navHostExitTransition, - popEnterTransition = Animations().navHostPopEnterTransition, - popExitTransition = Animations().navHostPopExitTransition + enterTransition = Animations.navHostEnterTransition, + exitTransition = Animations.navHostExitTransition, + popEnterTransition = Animations.navHostPopEnterTransition, + popExitTransition = Animations.navHostPopExitTransition ){ composable(route = "HomePage", content = { HomePage(navCtrl)}) composable(route = "SystemManage", content = { SystemManage(navCtrl) }) diff --git a/app/src/main/java/com/bintianqi/owndroid/Setting.kt b/app/src/main/java/com/bintianqi/owndroid/Setting.kt index 865d909..4d7ab9f 100644 --- a/app/src/main/java/com/bintianqi/owndroid/Setting.kt +++ b/app/src/main/java/com/bintianqi/owndroid/Setting.kt @@ -47,10 +47,10 @@ fun AppSetting(navCtrl:NavHostController){ ){ NavHost( navController = localNavCtrl, startDestination = "Home", - enterTransition = Animations().navHostEnterTransition, - exitTransition = Animations().navHostExitTransition, - popEnterTransition = Animations().navHostPopEnterTransition, - popExitTransition = Animations().navHostPopExitTransition, + enterTransition = Animations.navHostEnterTransition, + exitTransition = Animations.navHostExitTransition, + popEnterTransition = Animations.navHostPopEnterTransition, + popExitTransition = Animations.navHostPopExitTransition, modifier = Modifier.background(bgColor).padding(top = it.calculateTopPadding()) ){ composable(route = "Home"){Home(localNavCtrl)} diff --git a/app/src/main/java/com/bintianqi/owndroid/dpm/ApplicationManage.kt b/app/src/main/java/com/bintianqi/owndroid/dpm/ApplicationManage.kt index 4bc7b28..5d760e4 100644 --- a/app/src/main/java/com/bintianqi/owndroid/dpm/ApplicationManage.kt +++ b/app/src/main/java/com/bintianqi/owndroid/dpm/ApplicationManage.kt @@ -122,10 +122,10 @@ fun ApplicationManage(navCtrl:NavHostController){ } NavHost( navController = localNavCtrl, startDestination = "Home", - enterTransition = Animations().navHostEnterTransition, - exitTransition = Animations().navHostExitTransition, - popEnterTransition = Animations().navHostPopEnterTransition, - popExitTransition = Animations().navHostPopExitTransition, + enterTransition = Animations.navHostEnterTransition, + exitTransition = Animations.navHostExitTransition, + popEnterTransition = Animations.navHostPopEnterTransition, + popExitTransition = Animations.navHostPopExitTransition, modifier = Modifier.background(bgColor) ){ composable(route = "Home"){Home(localNavCtrl,pkgName)} @@ -253,7 +253,7 @@ private fun UserCtrlDisabledPkg(pkgName:String){ Text(text = stringResource(R.string.ucd_desc)) Spacer(Modifier.padding(vertical = 5.dp)) Text(text = stringResource(R.string.app_list_is)) - SelectionContainer(modifier = Modifier.horizontalScroll(rememberScrollState()).animateContentSize(Animations().animateListSize)){ + SelectionContainer(modifier = Modifier.horizontalScroll(rememberScrollState()).animateContentSize()){ Text(text = if(listText==""){stringResource(R.string.none)}else{listText}) } Spacer(Modifier.padding(vertical = 5.dp)) @@ -437,7 +437,7 @@ private fun CrossProfilePkg(pkgName: String){ } LaunchedEffect(Unit){refresh()} Text(text = stringResource(R.string.app_list_is)) - SelectionContainer(modifier = Modifier.horizontalScroll(rememberScrollState()).animateContentSize(Animations().animateListSize)){ + SelectionContainer(modifier = Modifier.horizontalScroll(rememberScrollState()).animateContentSize()){ Text(text = if(list==""){stringResource(R.string.none)}else{list}) } Row(modifier = Modifier.fillMaxWidth(), horizontalArrangement = Arrangement.SpaceBetween){ @@ -485,7 +485,7 @@ private fun CrossProfileWidget(pkgName: String){ Text(text = stringResource(R.string.cross_profile_widget), style = typography.headlineLarge) Spacer(Modifier.padding(vertical = 5.dp)) Text(text = stringResource(R.string.app_list_is)) - SelectionContainer(modifier = Modifier.horizontalScroll(rememberScrollState()).animateContentSize(Animations().animateListSize)){ + SelectionContainer(modifier = Modifier.horizontalScroll(rememberScrollState()).animateContentSize()){ Text(text = if(list==""){stringResource(R.string.none)}else{list}) } Spacer(Modifier.padding(vertical = 5.dp)) @@ -611,7 +611,7 @@ private fun PermittedAccessibility(pkgName: String){ } Spacer(Modifier.padding(vertical = 5.dp)) Text(text = stringResource(R.string.app_list_is)) - SelectionContainer(modifier = Modifier.horizontalScroll(rememberScrollState()).animateContentSize(Animations().animateListSize)){ + SelectionContainer(modifier = Modifier.horizontalScroll(rememberScrollState()).animateContentSize()){ Text(text = if(listText==""){stringResource(R.string.none)}else{listText}) } Spacer(Modifier.padding(vertical = 5.dp)) diff --git a/app/src/main/java/com/bintianqi/owndroid/dpm/ManagedProfile.kt b/app/src/main/java/com/bintianqi/owndroid/dpm/ManagedProfile.kt index 6138fb1..f80db86 100644 --- a/app/src/main/java/com/bintianqi/owndroid/dpm/ManagedProfile.kt +++ b/app/src/main/java/com/bintianqi/owndroid/dpm/ManagedProfile.kt @@ -61,10 +61,10 @@ fun ManagedProfile(navCtrl: NavHostController) { ){ NavHost( navController = localNavCtrl, startDestination = "Home", - enterTransition = Animations().navHostEnterTransition, - exitTransition = Animations().navHostExitTransition, - popEnterTransition = Animations().navHostPopEnterTransition, - popExitTransition = Animations().navHostPopExitTransition, + enterTransition = Animations.navHostEnterTransition, + exitTransition = Animations.navHostExitTransition, + popEnterTransition = Animations.navHostPopEnterTransition, + popExitTransition = Animations.navHostPopExitTransition, modifier = Modifier.background(bgColor).padding(top = it.calculateTopPadding()) ){ composable(route = "Home"){Home(localNavCtrl)} diff --git a/app/src/main/java/com/bintianqi/owndroid/dpm/Network.kt b/app/src/main/java/com/bintianqi/owndroid/dpm/Network.kt index 476f437..29930f2 100644 --- a/app/src/main/java/com/bintianqi/owndroid/dpm/Network.kt +++ b/app/src/main/java/com/bintianqi/owndroid/dpm/Network.kt @@ -82,10 +82,10 @@ fun Network(navCtrl: NavHostController){ ){ NavHost( navController = localNavCtrl, startDestination = "Home", - enterTransition = Animations().navHostEnterTransition, - exitTransition = Animations().navHostExitTransition, - popEnterTransition = Animations().navHostPopEnterTransition, - popExitTransition = Animations().navHostPopExitTransition, + enterTransition = Animations.navHostEnterTransition, + exitTransition = Animations.navHostExitTransition, + popEnterTransition = Animations.navHostPopEnterTransition, + popExitTransition = Animations.navHostPopExitTransition, modifier = Modifier.background(bgColor).padding(top = it.calculateTopPadding()) ){ composable(route = "Home"){Home(localNavCtrl,scrollState)} diff --git a/app/src/main/java/com/bintianqi/owndroid/dpm/Password.kt b/app/src/main/java/com/bintianqi/owndroid/dpm/Password.kt index 427d041..1d16d46 100644 --- a/app/src/main/java/com/bintianqi/owndroid/dpm/Password.kt +++ b/app/src/main/java/com/bintianqi/owndroid/dpm/Password.kt @@ -74,10 +74,10 @@ fun Password(navCtrl: NavHostController){ ){ NavHost( navController = localNavCtrl, startDestination = "Home", - enterTransition = Animations().navHostEnterTransition, - exitTransition = Animations().navHostExitTransition, - popEnterTransition = Animations().navHostPopEnterTransition, - popExitTransition = Animations().navHostPopExitTransition, + enterTransition = Animations.navHostEnterTransition, + exitTransition = Animations.navHostExitTransition, + popEnterTransition = Animations.navHostPopEnterTransition, + popExitTransition = Animations.navHostPopExitTransition, modifier = Modifier.background(bgColor).padding(top = it.calculateTopPadding()) ){ composable(route = "Home"){Home(localNavCtrl,scrollState)} diff --git a/app/src/main/java/com/bintianqi/owndroid/dpm/Permissions.kt b/app/src/main/java/com/bintianqi/owndroid/dpm/Permissions.kt index 8e9b245..32da9b9 100644 --- a/app/src/main/java/com/bintianqi/owndroid/dpm/Permissions.kt +++ b/app/src/main/java/com/bintianqi/owndroid/dpm/Permissions.kt @@ -78,10 +78,10 @@ fun DpmPermissions(navCtrl:NavHostController){ ){ NavHost( navController = localNavCtrl, startDestination = "Home", - enterTransition = Animations().navHostEnterTransition, - exitTransition = Animations().navHostExitTransition, - popEnterTransition = Animations().navHostPopEnterTransition, - popExitTransition = Animations().navHostPopExitTransition, + enterTransition = Animations.navHostEnterTransition, + exitTransition = Animations.navHostExitTransition, + popEnterTransition = Animations.navHostPopEnterTransition, + popExitTransition = Animations.navHostPopExitTransition, modifier = Modifier.background(bgColor).padding(top = it.calculateTopPadding()) ){ composable(route = "Home"){Home(localNavCtrl,scrollState)} diff --git a/app/src/main/java/com/bintianqi/owndroid/dpm/SystemManager.kt b/app/src/main/java/com/bintianqi/owndroid/dpm/SystemManager.kt index 994703b..c5e44e9 100644 --- a/app/src/main/java/com/bintianqi/owndroid/dpm/SystemManager.kt +++ b/app/src/main/java/com/bintianqi/owndroid/dpm/SystemManager.kt @@ -88,10 +88,10 @@ fun SystemManage(navCtrl:NavHostController){ ){ NavHost( navController = localNavCtrl, startDestination = "Home", - enterTransition = Animations().navHostEnterTransition, - exitTransition = Animations().navHostExitTransition, - popEnterTransition = Animations().navHostPopEnterTransition, - popExitTransition = Animations().navHostPopExitTransition, + enterTransition = Animations.navHostEnterTransition, + exitTransition = Animations.navHostExitTransition, + popEnterTransition = Animations.navHostPopEnterTransition, + popExitTransition = Animations.navHostPopExitTransition, modifier = Modifier.background(bgColor).padding(top = it.calculateTopPadding()) ){ composable(route = "Home"){Home(localNavCtrl,scrollState)} @@ -547,7 +547,7 @@ private fun LockTaskFeatures(){ } LaunchedEffect(Unit){refreshWhitelist()} Text(text = stringResource(R.string.whitelist_app), style = typography.titleLarge) - SelectionContainer(modifier = Modifier.animateContentSize(Animations().animateListSize)){ + SelectionContainer(modifier = Modifier.animateContentSize()){ Text(text = if(listText==""){ stringResource(R.string.none) }else{listText}) } OutlinedTextField( diff --git a/app/src/main/java/com/bintianqi/owndroid/dpm/UserManager.kt b/app/src/main/java/com/bintianqi/owndroid/dpm/UserManager.kt index 9a52ffc..29ff085 100644 --- a/app/src/main/java/com/bintianqi/owndroid/dpm/UserManager.kt +++ b/app/src/main/java/com/bintianqi/owndroid/dpm/UserManager.kt @@ -82,10 +82,10 @@ fun UserManage(navCtrl:NavHostController) { ){ NavHost( navController = localNavCtrl, startDestination = "Home", - enterTransition = Animations().navHostEnterTransition, - exitTransition = Animations().navHostExitTransition, - popEnterTransition = Animations().navHostPopEnterTransition, - popExitTransition = Animations().navHostPopExitTransition, + enterTransition = Animations.navHostEnterTransition, + exitTransition = Animations.navHostExitTransition, + popEnterTransition = Animations.navHostPopEnterTransition, + popExitTransition = Animations.navHostPopExitTransition, modifier = Modifier.background(bgColor).padding(top = it.calculateTopPadding()) ){ composable(route = "Home"){Home(localNavCtrl,scrollState)} diff --git a/app/src/main/java/com/bintianqi/owndroid/dpm/UserRestriction.kt b/app/src/main/java/com/bintianqi/owndroid/dpm/UserRestriction.kt index 7d65311..77e0522 100644 --- a/app/src/main/java/com/bintianqi/owndroid/dpm/UserRestriction.kt +++ b/app/src/main/java/com/bintianqi/owndroid/dpm/UserRestriction.kt @@ -80,10 +80,10 @@ fun UserRestriction(navCtrl: NavHostController){ ){ NavHost( navController = localNavCtrl, startDestination = "Home", - enterTransition = Animations().navHostEnterTransition, - exitTransition = Animations().navHostExitTransition, - popEnterTransition = Animations().navHostPopEnterTransition, - popExitTransition = Animations().navHostPopExitTransition, + enterTransition = Animations.navHostEnterTransition, + exitTransition = Animations.navHostExitTransition, + popEnterTransition = Animations.navHostPopEnterTransition, + popExitTransition = Animations.navHostPopExitTransition, modifier = Modifier.background(bgColor).padding(top = it.calculateTopPadding()) ){ composable(route = "Internet"){Internet()} diff --git a/app/src/main/java/com/bintianqi/owndroid/ui/Animations.kt b/app/src/main/java/com/bintianqi/owndroid/ui/Animations.kt index 4ba6ea4..d6fbe40 100644 --- a/app/src/main/java/com/bintianqi/owndroid/ui/Animations.kt +++ b/app/src/main/java/com/bintianqi/owndroid/ui/Animations.kt @@ -1,58 +1,51 @@ package com.bintianqi.owndroid.ui import androidx.compose.animation.* -import androidx.compose.animation.core.FiniteAnimationSpec -import androidx.compose.animation.core.Spring -import androidx.compose.animation.core.VisibilityThreshold -import androidx.compose.animation.core.spring +import androidx.compose.animation.core.* import androidx.compose.ui.unit.IntOffset -import androidx.compose.ui.unit.IntSize import androidx.navigation.NavBackStackEntry -import com.bintianqi.owndroid.displayMetrics -class Animations{ - private val fade: FiniteAnimationSpec = spring(stiffness = Spring.StiffnessMediumLow) - private val spring:FiniteAnimationSpec = spring(stiffness = Spring.StiffnessMediumLow, visibilityThreshold = IntOffset.VisibilityThreshold) - - val animateListSize:FiniteAnimationSpec = spring(stiffness = Spring.StiffnessMediumLow, visibilityThreshold = IntSize.VisibilityThreshold) - - private val screenWidth = displayMetrics.widthPixels - private val initialOffsetValue = screenWidth/10 - private val targetOffsetValue = screenWidth/10 +object Animations{ + private const val INITIAL_OFFSET_VALUE = 96 + private const val TARGET_OFFSET_VALUE = 96 + + private val bezier = CubicBezierEasing(0.4f, 0f, 0f, 1f) + + private val tween: FiniteAnimationSpec = tween(450, easing = bezier) val navHostEnterTransition: AnimatedContentTransitionScope.() -> EnterTransition = { - fadeIn(animationSpec = fade) + + fadeIn(tween(83, easing = LinearEasing)) + slideIntoContainer( - animationSpec = spring, + animationSpec = tween, towards = AnimatedContentTransitionScope.SlideDirection.End, - initialOffset = {initialOffsetValue} + initialOffset = {INITIAL_OFFSET_VALUE} ) } val navHostExitTransition: AnimatedContentTransitionScope.() -> ExitTransition = { - fadeOut(animationSpec = fade) + + fadeOut(tween(83, easing = LinearEasing)) + slideOutOfContainer( - animationSpec = spring, + animationSpec = tween, towards = AnimatedContentTransitionScope.SlideDirection.Start, - targetOffset = {-targetOffsetValue} + targetOffset = {-TARGET_OFFSET_VALUE} ) } val navHostPopEnterTransition: AnimatedContentTransitionScope.() -> EnterTransition = { - fadeIn(animationSpec = fade) + + fadeIn(tween(83, easing = LinearEasing)) + slideIntoContainer( - animationSpec = spring, + animationSpec = tween, towards = AnimatedContentTransitionScope.SlideDirection.End, - initialOffset = {-initialOffsetValue} + initialOffset = {-INITIAL_OFFSET_VALUE} ) } val navHostPopExitTransition: AnimatedContentTransitionScope.() -> ExitTransition = { - fadeOut(animationSpec = fade) + + fadeOut(tween(83, easing = LinearEasing)) + slideOutOfContainer( - animationSpec = spring, + animationSpec = tween, towards = AnimatedContentTransitionScope.SlideDirection.Start, - targetOffset = {targetOffsetValue} + targetOffset = {TARGET_OFFSET_VALUE} ) }