mirror of
https://github.com/awfixers-stuff/OwnDroid.git
synced 2026-03-23 11:05:59 +00:00
Merge branch 'animation'
This commit is contained in:
@@ -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) })
|
||||
|
||||
@@ -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)}
|
||||
|
||||
@@ -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))
|
||||
|
||||
@@ -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)}
|
||||
|
||||
@@ -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)}
|
||||
|
||||
@@ -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)}
|
||||
|
||||
@@ -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)}
|
||||
|
||||
@@ -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(
|
||||
|
||||
@@ -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)}
|
||||
|
||||
@@ -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()}
|
||||
|
||||
@@ -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<Float> = spring(stiffness = Spring.StiffnessMediumLow)
|
||||
private val spring:FiniteAnimationSpec<IntOffset> = spring(stiffness = Spring.StiffnessMediumLow, visibilityThreshold = IntOffset.VisibilityThreshold)
|
||||
|
||||
val animateListSize:FiniteAnimationSpec<IntSize> = 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<IntOffset> = tween(450, easing = bezier)
|
||||
|
||||
val navHostEnterTransition: AnimatedContentTransitionScope<NavBackStackEntry>.() -> 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<NavBackStackEntry>.() -> 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<NavBackStackEntry>.() -> 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<NavBackStackEntry>.() -> ExitTransition = {
|
||||
fadeOut(animationSpec = fade) +
|
||||
fadeOut(tween(83, easing = LinearEasing)) +
|
||||
slideOutOfContainer(
|
||||
animationSpec = spring,
|
||||
animationSpec = tween,
|
||||
towards = AnimatedContentTransitionScope.SlideDirection.Start,
|
||||
targetOffset = {targetOffsetValue}
|
||||
targetOffset = {TARGET_OFFSET_VALUE}
|
||||
)
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user