开启掘金成长之旅!这是我参与「掘金日新计划 · 12 月更文挑战」的第12天,点击查看活动详情
最近这些天基本是连续的在更文,不管有没有阅读和收藏,在写的过程中,让我对compose的一些细节有了更深入的了解。文章中的例子都是自己亲自去尝试的,虽然例子都是很简单的例子,但是在写的过程中还是学了很多东西,今天我们来了解一下nowinandroid的项目。noinandroid是官方推荐的一个compose的例子。先看一下noinandroid运行起来是一个什么样子:
第一个页面是选择一些你喜欢的topic,选择好之后点击“Done”按钮就进入主界面了:
这是一个list,可以上下滚动。最下面就是导航栏。感兴趣的话可以自己下载下来玩一玩。
下面看看nowinandroid里面的代码目录结构:
- App:包里面主要就是应用的入口部分,是整个app的最上层的部分
- core:里面就是一些基础的业务,数据库,datastore,公共UI,network接口以及一些其他基础组件
- feature:这一部分就是各个module部分的实现。
先说入口部分,入口的部分就在:app/src/main/java/com/google/samples/apps/nowinandroid/ui/NiaApp.kt,这个里面主要就是使用 Scaffold来构建整个界面。在content里面使用navigation作为页面跳转:
fun NiaNavHost(
navController: NavHostController,
onBackClick: () -> Unit,
modifier: Modifier = Modifier,
startDestination: String = forYouNavigationRoute
) {
NavHost(
navController = navController,
startDestination = startDestination,
modifier = modifier,
) {
forYouScreen()
bookmarksScreen()
interestsGraph(
navigateToTopic = { topicId ->
navController.navigateToTopic(topicId)
},
navigateToAuthor = { authorId ->
navController.navigateToAuthor(authorId)
},
nestedGraphs = {
topicScreen(onBackClick)
authorScreen(onBackClick)
}
)
}
}
这个里面包含了各个页面的定义以及页面跳转的响应。 今天先到这里吧,感觉自己看的也很粗,没有看到很细节的地方,后面仔细研究了,再把各个细节写出来吧。