Android Compose 应用进阶:Navigation 组件、共享元素与预测性返回的深度实践
Android Compose 应用进阶:Navigation 组件、共享元素与预测性返回的深度实践Development of Shared element, Navigation, Predictive back component using Compose on Android
简述:
[*]打开软件预测性返回选项后,使用Navigation组件组合页面间的跳转 即可实现页面的预测性返回
[*]使用Navigation组件组合的页面,设置共享元素 即可实现共享元素间的预测性返回。
支持预测性返回手势
查看官方教程即可:
https://developer.android.com/guide/navigation/custom-back/predictive-back-gesture
Navigation导航 结合 Shared element共享元素
Navigation导航学习:
查看官方教程学习:
https://developer.android.com/develop/ui/compose/navigation?hl=zh-cn
导航主干-伪代码:
// 1. 定义导航路由
sealed class PhotoScreenRouteForColumn(val route: String) {
object Grid : PhotoScreenRouteForColumn("photo_grid") // 网格视图
// 详情路由需要两个参数
object Detail : PhotoScreenRouteForColumn("photo_detail/{outerIndex}/{innerIndex}") {
fun createRoute(outerIndex: Int, innerIndex: Int) = "photo_detail/$outerIndex/$innerIndex"
}
}
// 2.主屏幕 Composable
@Composable
fun RespondCollectScreenSimplified(
collectId: Long,
appNavController: NavController,
// ... (其他状态初始化和数据获取逻辑)
) {
// 创建内部导航控制器
val photoNavController = rememberNavController()
// 定义导航宿主
NavHost(
navController = photoNavController,
startDestination = PhotoScreenRouteForColumn.Grid.route
) {
// 路由 1: 网格视图
composable(PhotoScreenRouteForColumn.Grid.route) {
// 模拟点击照片后导航到详情
val onPhotoClick = { outerIndex: Int, innerIndex: Int ->
photoNavController.navigate(
PhotoScreenRouteForColumn.Detail.createRoute(outerIndex, innerIndex)
)
}
// 假设这里会显示一个照片列表,点击后触发 onPhotoClick
println("显示照片网格视图")
}
// 路由 2: 详情视图
composable(
route = PhotoScreenRouteForColumn.Detail.route,
arguments = listOf(
navArgument("outerIndex") { type = NavType.IntType },
navArgument("innerIndex") { type = NavType.IntType }
)
) { navBackStackEntry ->
// 获取导航参数
val outerIndexArg = navBackStackEntry.arguments?.getInt("outerIndex")
val innerIndexArg = navBackStackEntry.arguments?.getInt("innerIndex")
// 假设这里会根据 outerIndexArg 和 innerIndexArg 显示照片详情
println("显示照片详情,outerIndex: $outerIndexArg, innerIndex: $innerIndexArg")
// 返回操作
val onBackClick = {
photoNavController.popBackStack()
}
// 假设有一个按钮点击后 调用 onBackClick,即可实现返回
}
}
}
<strong>提示
来源:程序园用户自行投稿发布,如果侵权,请联系站长删除
免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作! 用心讨论,共获提升! 感谢分享,下载保存了,貌似很强大 感谢分享,下载保存了,貌似很强大 不错,里面软件多更新就更好了 很好很强大我过来先占个楼 待编辑 东西不错很实用谢谢分享 过来提前占个楼 感谢分享,学习下。 收藏一下 不知道什么时候能用到 感谢发布原创作品,程序园因你更精彩 懂技术并乐意极积无私分享的人越来越少。珍惜 懂技术并乐意极积无私分享的人越来越少。珍惜 用心讨论,共获提升! 过来提前占个楼 懂技术并乐意极积无私分享的人越来越少。珍惜 yyds。多谢分享 感谢分享,下载保存了,貌似很强大 感谢发布原创作品,程序园因你更精彩 感谢发布原创作品,程序园因你更精彩
页:
[1]
2