返回顶部
首页 > 资讯 > 精选 >Android Compose页面切换动画怎么实现
  • 824
分享到

Android Compose页面切换动画怎么实现

2023-06-22 02:06:27 824人浏览 安东尼
摘要

这篇文章主要介绍“Android Compose页面切换动画怎么实现”,在日常操作中,相信很多人在Android Compose页面切换动画怎么实现问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”Android

这篇文章主要介绍“Android Compose页面切换动画怎么实现”,在日常操作中,相信很多人在Android Compose页面切换动画怎么实现问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”Android Compose页面切换动画怎么实现”的疑惑有所帮助!接下来,请跟着小编一起来学习吧!

开始尝试

其实 Compose 中的 Navigation 就是之前 Jetpack 中的 Navigation 改的,所以之前的 api 还是存在的,

然后用上试试呗!

navController.navigate(route) {    anim {        enter = R.anim.in_from_right        exit = R.anim.out_to_left        popEnter = R.anim.in_from_right        popExit = R.anim.out_to_left    }}

然后就有了上面的代码进行尝试,其实写的时候也想过不行,因为在 Compose 中动画有自己的一套实现方式,并不是像之前那样放在 anim 文件夹下的 xml 文件,但还是抱着试一试的态度,最后发现。。。果然不行。。。

于是开始一顿乱找,后来发现在官方文档中已经写明了:

注意anim 块不能与 Navigation Compose 一起使用。系统会在此功能请求中跟踪 Navigation Compose 中的转换动画。

然后就没有然后了,就开始等。。。。这一等就是好久。(其实这篇文章是之前写的,但一直没发)

终于在前段时间,这个问题有了眉目,Google 并没有将这个功能放到 Navigation 库中,而是重新创建了一个库:navigation-animation,使用的时候同时引入即可进行使用。

开始撸码

首先需要做的肯定是添加依赖:

现在应用级的 build.gradle 中添加:

repositories {    MavenCentral()}

然后在 Module 级的 build.gradle 中添加:

// Navigation 动画implementation "com.google.accompanist:accompanist-navigation-animation:$accompanist_version"

接下来需要做的是迁移之前写的 Navigation 的代码,先来看看之前的写法吧:

@ExperimentalPagingApi@Composablefun NavGraph(    startDestination: String = MainDestinations.HOME_PAGE_ROUTE) {    val navController = rememberNavController()    val actions = remember(navController) { MainActions(navController) }    NavHost(        navController = navController,        startDestination = startDestination    ) {        composable(MainDestinations.HOME_PAGE_ROUTE) {            Home(actions)        }    }}

需要做的迁移有:

替换rememberNavController()rememberAnimatedNavController()

替换NavHostAnimatedNavHost

替换import androidx.navigation.compose.navigationimport com.google.accompanist.navigation.animation.navigation

替换import androidx.navigation.compose.composableimport com.google.accompanist.navigation.animation.composable

那就来吧:

@OptIn(ExperimentalAnimationApi::class, ExperimentalPagerApi::class)@Composablefun NavGraph(    startDestination: String = PlayDestinations.HOME_PAGE_ROUTE,) {    val navController = rememberAnimatedNavController()    val actions = remember(navController) { PlayActions(navController) }    AnimatedNavHost(        navController = navController,        startDestination = startDestination    ) {        setComposable(PlayDestinations.HOME_PAGE_ROUTE) {            WeatherViewPager(                toCityList = actions.toCityList,                toWeatherList = actions.toWeatherList            )        }    }}

下面就来看看如何使用这个库为页面之间切换添加动画吧:

@ExperimentalAnimationApipublic fun NavGraphBuilder.navigation(    startDestination: String,    route: String,    enterTransition: (AnimatedContentScope<NavBackStackEntry>.() -> EnterTransition?)? = null,    exitTransition: (AnimatedContentScope<NavBackStackEntry>.() -> ExitTransition?)? = null,    popEnterTransition: (        AnimatedContentScope<NavBackStackEntry>.() -> EnterTransition?    )? = enterTransition,    popExitTransition: (        AnimatedContentScope<NavBackStackEntry>.() -> ExitTransition?    )? = exitTransition,    builder: NavGraphBuilder.() -> Unit)

上面这段代码是 navigation-animation 库中的源码,可以看到除了之前 Navigation 库中的一些参数外还多了几个参数用来设置动画,来具体看看吧:

**enterTransition:**在此 NavGraph 中定义目的地的输入转换动画

**exitTransition:**在此 NavGraph 中为目的地定义退出转换动画

**popEnterTransition:**在此 NavGraph 中定义目的地的弹出输入转换动画

**popExitTransition:**在此 NavGraph 中为目的地定义弹出退出转换动画

再来看看具体使用吧:

composable(    route = route,    arguments = arguments,    deepLinks = deepLinks,    enterTransition = {        expandVertically(animationSpec = tween(300))    },    exitTransition = {        shrinkOut(animationSpec = tween(300))    },    popEnterTransition = {        expandVertically(animationSpec = tween(300))    },    popExitTransition = {        shrinkOut(animationSpec = tween(300))    },    content = content,)

到此,关于“Android Compose页面切换动画怎么实现”的学习就结束了,希望能够解决大家的疑惑。理论与实践的搭配能更好的帮助大家学习,快去试试吧!若想继续学习更多相关知识,请继续关注编程网网站,小编会继续努力为大家带来更多实用的文章!

--结束END--

本文标题: Android Compose页面切换动画怎么实现

本文链接: https://lsjlt.com/news/301951.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

猜你喜欢
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作