跳到主要内容

Material 3 Android 应用集成

viewcompose-material3-android 是 Android Material 3 应用推荐使用的单一依赖。它组合中立 Android 应用聚合模块、Material 3 适配器与 Material Overlay Adapter,并提供具名的 Activity 和 Fragment setMaterial3UiContent 入口。

该构件是平台集成与发布边界,不是第二套 Renderer。它私有持有 Material 根 Context 解析,并通过 有意设置的 api 依赖公开中立 Host 与 Material Token API。

构件与稳定性

dependencies {
implementation("com.viewcompose:viewcompose-material3-android:0.1.0-alpha01")
}
  • 稳定性:Alpha
  • 平台:Android library,minSdk 24compileSdk 36,Java 11 字节码。
  • API 依赖:viewcompose-androidviewcompose-material3
  • Material Components、AppCompat、中立/Material Overlay、Host、Lifecycle 与 ViewModel 运行时依赖均会传递解析;只有业务 源码直接使用对应 API 时才需要显式声明。

具名 Material Host

fun installMaterial3Content(activity: ComponentActivity) {
activity.setMaterial3UiContent {
Text("Hello from Material 3 ViewCompose")
}
}

setMaterial3UiContent 会在构造根节点前解析唯一的 Material Context。同一个稳定 Context 用于 创建根节点、原生子 View 和默认 Overlay;Material3Theme 读取并提供与之匹配的不可变 Token 快照。默认的 Material3DynamicColorPolicy.UseIfAvailable 会在 Android 支持时跟随动态色;需要 确定性 XML 主题输出时传入 Disabled

具名 Host 会安装中立 Android 资源环境,并在发布每个资源版本前刷新 Material 稳定 Wrapper。应用 Locale/主题 Wrapper 修改没有重建 Activity 或触发 Configuration Callback 时,传入 rootContext 与 Host 范围的 AndroidResourceRefreshController。普通资源、环境值与 Material Token 随后从同一 版本更新。重复调用 setMaterial3UiContent 会释放旧 Render Session 并重建根节点;切换设计系统或 构造期敏感 Context 时必须走该路径,不能只在旧 View 上替换 Token。

Activity 与 Fragment Root 接受中立的 RenderDiagnostics 配置,并通过与 viewcompose-android 相同的 Host 关联树向下传播。Alpha 硬切移除了三个独立渲染回调;Material 主题解析不会改变诊断角色、采集级别、事件顺序或 Sink 失败隔离。

默认 Overlay Factory 会显式构造 Material Adapter。Material 行为不通过 ServiceLoader 选择, 因此应用其他位置存在本聚合包时,另一个设计系统 Root 也不会意外获得 Material Snackbar 或 Bottom Sheet 行为。

边界规则

本模块可以依赖 Material 与中立聚合模块;viewcompose-androidviewcompose-host-android、UI Foundation 和 Android Renderer 不得反向依赖或导入它。Material Recipe 在渲染前仍解析为中立 NodeSpec 与 Foundation 契约;具名集成不会在 Renderer 中注册 Material 分支。

相关文档

完整生成参考位于 viewcompose-material3-android API 树

兼容性说明

本模块从 0.1.0-alpha01 开始。原先使用 Material 感知型 com.viewcompose.android.setUiContent 的 Alpha 应用,应把坐标与导入分别替换为 viewcompose-material3-androidsetMaterial3UiContent。Material 策略参数保留原有默认值与 行为;源码级改名是为了防止中立 Host 静默选择 Material。

关联诊断硬切用中立的 diagnostics 参数替换三个渲染回调,不保留弃用转发重载。