如何构建 Jetpack Compose 项目?
How to structure a Jetpack Compose project?
我是 Android 和 Jetpack Compose 的新手。使用 Views 屏幕是在不同的 Fragments 或 Activity 中定义的,但是使用 Compose 时,所有屏幕看起来都是在 MainAcitivity 中定义的。使用 Compose 时,为不同屏幕构建屏幕代码的最佳方式是什么?这里有任何最佳实践指南吗?
我想这完全取决于您 and/or 您的团队。
我在一个真正的多模块项目中使用 compose 并遵循这种方法:
core/components
:common/generic 整个应用程序使用的组件。
core/theme:
:类与应用主题相关。
[feature]/components
:与上一个包不同的是,这个包包含跨屏幕共享的相同功能的组件。当然 if/when 一个组件被两个或多个功能使用,它应该被提升到 core/components
包。
[feature]/screens
:包含与给定功能相关的屏幕。
[feature]/navigation
:这是 NavHost
和其他与导航相关的 类 所在的位置。
我认为没有“最好”的代码结构方式,这取决于项目的大小和您的偏好。但我是这样组织我的 compose 项目的 UI 层的:
screens
:包含包含屏幕特定组件和最终视图模型的包,如 home
。
Navigation.kt
:包含用于管理应用程序导航的 NavHost
and other navigation-related utils. I use the navigation-compose 库。
screens/shared
:包含 类 or/and 不特定于单个屏幕的功能,例如:在不同屏幕或共享视图模型中使用的可重用组件。
MainActivity
:将包含 NavHost
的可组合项设置为其内容。
GameResApplication
:没有什么特别之处,我创建它是因为我正在使用 Hilt。
theme
:由 Android Studio 创建。
utils
:我在 @Preview
可组合项中使用的一些 UI 实用程序和虚假数据。
这是github
上的真实项目示例
我是 Android 和 Jetpack Compose 的新手。使用 Views 屏幕是在不同的 Fragments 或 Activity 中定义的,但是使用 Compose 时,所有屏幕看起来都是在 MainAcitivity 中定义的。使用 Compose 时,为不同屏幕构建屏幕代码的最佳方式是什么?这里有任何最佳实践指南吗?
我想这完全取决于您 and/or 您的团队。 我在一个真正的多模块项目中使用 compose 并遵循这种方法:
core/components
:common/generic 整个应用程序使用的组件。core/theme:
:类与应用主题相关。[feature]/components
:与上一个包不同的是,这个包包含跨屏幕共享的相同功能的组件。当然 if/when 一个组件被两个或多个功能使用,它应该被提升到core/components
包。[feature]/screens
:包含与给定功能相关的屏幕。[feature]/navigation
:这是NavHost
和其他与导航相关的 类 所在的位置。
我认为没有“最好”的代码结构方式,这取决于项目的大小和您的偏好。但我是这样组织我的 compose 项目的 UI 层的:
screens
:包含包含屏幕特定组件和最终视图模型的包,如home
。Navigation.kt
:包含用于管理应用程序导航的NavHost
and other navigation-related utils. I use the navigation-compose 库。screens/shared
:包含 类 or/and 不特定于单个屏幕的功能,例如:在不同屏幕或共享视图模型中使用的可重用组件。MainActivity
:将包含NavHost
的可组合项设置为其内容。GameResApplication
:没有什么特别之处,我创建它是因为我正在使用 Hilt。theme
:由 Android Studio 创建。utils
:我在@Preview
可组合项中使用的一些 UI 实用程序和虚假数据。
这是github
上的真实项目示例