android 当活动开始时,是否可以使可组合对象以动画形式出现?

uwopmtnx  于 2022-12-28  发布在  Android
关注(0)|答案(1)|浏览(105)

我希望在Activity启动以动画形式显示用户界面的某些部分。例如,如果Activity的onCreate如下所示:

override fun onCreate(savedInstanceState: Bundle?) {
    super.onCreate(savedInstanceState)
    setContent {
        AppTheme{
            // A surface container using the 'background' color from the theme
            Surface(
                modifier = Modifier.fillMaxSize(),
                color = MaterialTheme.colorScheme.background
            ) {
                Text(text = "Message")
            }
        }
    }

如何使文本显示为淡入动画?大多数Jetpack编写动画需要一个状态,可以通过执行某些活动(例如点击按钮)来更改该状态。
我尝试使用AnimatedVisibility并将参数设置为true,但这不会给予动画,就好像没有AnimatedVisibility一样。

fcy6dtqo

fcy6dtqo1#

您可以尝试以下代码块:

override fun onCreate(savedInstanceState: Bundle?) {
    super.onCreate(savedInstanceState)
    setContent {
        /*MainView()*/
        setContent {
            var visible by remember {
                mutableStateOf(false)
            }
            LaunchedEffect(key1 = Unit, block = {
                delay(600L)
                visible = true
            })
            AnimatedVisibility(
                visible = visible, modifier = Modifier.fillMaxSize(),
                enter = fadeIn(initialAlpha = 0.0f) + slideInVertically(
                    tween(
                        durationMillis = 600,
                        delayMillis = 600,
                        easing = FastOutSlowInEasing
                    ),
                    initialOffsetY = { it * 6 }
                )

            ) {
                Text(
                    text = "Message",
                    modifier = Modifier.fillMaxSize(),
                    textAlign = TextAlign.Center,
                    fontSize = 20.sp
                )
            }
        }
    }
}

注意:AnimatedVisibility对一个简单的布尔值做出React。因此,最好在AnimatedVisibility的visible参数中提供状态已知变量的布尔值。

相关问题