0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
会员中心
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

Compose Material 3 稳定版现已发布 | 2022 Android 开发者峰会

谷歌开发者 来源:未知 2022-11-21 18:10 次阅读
30755d3e-6984-11ed-8abf-dac502259ad0.png

作者 /Android 开发技术推广工程师 Gurupreet Singh

首个稳定版 Compose Material 3 现已发布。借助此内容库,您可以使用 Material Design 3 (新一代 Material Design) 构建 Jetpack Compose 界面。立即开始在应用中使用 Material Design 3 吧!

  • Compose Material 3https://developer.android.google.cn/reference/kotlin/androidx/compose/material3/package-summary
  • Material Design 3https://m3.material.io/
*文中交替使用的术语 "Material Design 3"、"Material 3" 和 "M3" 均指代同一内容。

Material 3 不仅包含更新后的主题和组件、动态配色等个性化功能,还旨在与最新的 Android 视觉风格和系统界面相得益彰。

30a8980c-6984-11ed-8abf-dac502259ad0.png

△ 多个使用 Material Design 3 主题的应用

您可以将 Compose Material 3 依赖项添加到 build.gradle 文件中,即可开始在应用中使用 Material Design 3:
// 在模块 build.gradle 中添加依赖项


执行“androidx.compose.material3$material3_version”

注意: 您可以前往 Compose Material 3 版本页面了解最新的 M3 版本:

https://developer.android.google.cn/jetpack/androidx/releases/compose-material3

配色方案

Material 3 不仅提供更广泛的、更细粒度的颜色自定义选项,还提供开箱即用的浅色和深色配色方案。借助 Material Theme Builder,您可以使用核心颜色生成自定义配色方案,并选择导出 Compose 主题代码。您可以阅读更多关于配色方案及颜色角色的内容

30d95f50-6984-11ed-8abf-dac502259ad0.png

△用于导出 Material 3 配色方案的 Material Theme Builder

  • Material Theme Builderhttps://material.io/material-theme-builder
  • 更多关于配色方案及颜色角色的内容https://m3.material.io/styles/color/the-color-system/key-colors-tones

动态配色

动态配色源自用户的壁纸,可应用于应用和系统界面中。
  • 动态配色

    https://m3.material.io/styles/color/dynamic-color/overview

动态配色适用于 Android 12 (API 级别 31) 及更高版本的系统。如果系统支持动态配色,则可以设置动态 ColorScheme。如果不支持,您可以转而使用自定义的深色或浅色 ColorScheme

30e81cc0-6984-11ed-8abf-dac502259ad0.png

Reply 示例: 动态壁纸主题 (左) 和默认应用主题 (右)
  • Reply 示例

    https://github.com/android/compose-samples/tree/main/Reply

ColorScheme 类为构建器提供函数以创建动态和自定义的深色浅色配色方案:

  • 深色

    https://developer.android.google.cn/reference/kotlin/androidx/compose/material3/package-summary#dynamiclightcolorscheme

  • 浅色

    https://developer.android.google.cn/reference/kotlin/androidx/compose/material3/package-summary#dynamicdarkcolorscheme

Theme.kt
// 动态配色适用于 Android 12 及更高版本的系统
val dynamicColor = Build.VERSION.SDK_INT >= Build.VERSION_CODES.S
val colorScheme = when {
  dynamicColor && darkTheme -> dynamicDarkColorScheme(LocalContext.current)
  dynamicColor && !darkTheme -> dynamicLightColorScheme(LocalContext.current)
  darkTheme -> darkColorScheme(...)
  else -> lightColorScheme(...)
}


MaterialTheme(
  colorScheme = colorScheme,
  typography = typography,
  shapes = shapes
) {
  // M3 应用内容

Material 组件

Compose Material 3 API 包含大量全新和经过优化的 Material 组件,且我们计划在未来的版本中添加更多组件。许多 Material 组件 (如 CardRadioButtonCheckBox) 已不再是实验性组件;这些组件的 API 十分稳定,可以在没有 ExperimentalMaterial3Api 注释的情况使用。

M3 Switch 组件采用全新界面,支持符合无障碍性的最小触摸目标尺寸、颜色映射,以及不同的 Switch 滑块图标选项。该界面增加了触摸目标的尺寸,同时增加了用户互动时的滑块尺寸,从而为用户提供反馈: 滑块正在与之互动。

31126692-6984-11ed-8abf-dac502259ad0.gif

△Material 3 Switch 滑块互动
Switch(
      checked = isChecked,
      onCheckedChange = { /*...*/ },
      thumbContent = {
          Icon(
              imageVector = Icons.Default.Check,
              contentDescription = stringResource(id = R.string.switch_check)
          )
      },
)

抽屉式导航栏组件现在提供封装容器表,以便单独更改内容的颜色、形状和高度。

抽屉式导航栏组件 内容
ModalNavigationDrawer ModalDrawerSheet
PermanentNavigationDrawer PermanentDrawerSheet
DismissableNavigationDrawer DismissableDrawerSheet
316702e2-6984-11ed-8abf-dac502259ad0.png

△ModalNavigationDrawer

其中内容封装在 ModalDrawerSheet 中
ModalNavigationDrawer {
    ModalDrawerSheet(
        drawerShape = MaterialTheme.shapes.small,
        drawerContainerColor = MaterialTheme.colorScheme.primaryContainer,
        drawerContentColor = MaterialTheme.colorScheme.onPrimaryContainer,
        drawerTonalElevation = 4.dp,
    ) {
        DESTINATIONS.forEach { destination ->
            NavigationDrawerItem(
                selected = selectedDestination == destination.route,
                onClick = { ... },
                icon = { ... },
                label = { ... }
            )
        }
    }
}

除现有的应用栏外,我们还推出了全新的CenterAlignedTopAppBar。该栏可用于应用的主要根网页: 您可以借助主页和操作图标显示应用名称或页面标题。

CenterAlignedTopAppBar(
          title = {
              Text(stringResources(R.string.top_stories))
          },
          scrollBehavior = scrollBehavior,
          navigationIcon =  { /* Navigation Icon */},
          actions = { /* App bar actions */}
)

您可以前往Compose Material 3 API 参考文档概览,查看 M3 最新组件和布局。也欢迎您关注版本发布页面,即时获取全新的和更新后的 API。

  • Compose Material 3 API 参考文档概览

    https://developer.android.google.cn/reference/kotlin/androidx/compose/material3/package-summary#overview

  • 版本发布页面

    https://developer.android.google.cn/jetpack/androidx/releases/compose-material3

排版

Material 3 将排版的命名及分组简化为:
  • 显示

  • 大标题
  • 小标题
  • 正文
  • 标签
每项内容都有大、中、小三种字体大小可供选择,总计 15 种文本样式。 Typography构造函数为每种样式提供默认值,因此您无需设置您不想自定义的参数:
val typography = Typography(
  titleLarge = TextStyle(
      fontWeight = FontWeight.SemiBold,
      fontSize = 22.sp,
      lineHeight = 28.sp,
      letterSpacing = 0.sp
  ),
  titleMedium = TextStyle(
      fontWeight = FontWeight.SemiBold,
      fontSize = 16.sp,
      lineHeight = 24.sp,
      letterSpacing = 0.15.sp
  ),
  ...
}

如需自定义排版,您可以更改 TextStyle字体相关的属性 (如 fontFamilyletterSpacing)。
bodyLarge = TextStyle(
  fontWeight = FontWeight.Normal,
  fontFamily = FontFamily.SansSerif,
  fontStyle = FontStyle.Italic,
  fontSize = 16.sp,
  lineHeight = 24.sp,
  letterSpacing = 0.15.sp,
  baselineShift = BaselineShift.Subscript
)

  • TextStylehttps://developer.android.google.cn/reference/kotlin/androidx/compose/ui/text/TextStyle
  • 字体相关https://developer.android.google.cn/reference/kotlin/androidx/compose/ui/text/font/package-summary

形状

Material 3 形状比例定义了容器边角的样式,提供从方形到正圆形的一系列不同角度。

不同的形状大小如下:
  • 超小号

  • 小号

  • 中号

  • 大号

  • 超大号

31b27a42-6984-11ed-8abf-dac502259ad0.png

将 Material Design 3 的不同形状作为默认值用于不同组件每种形状都有一个默认值,但您可以进行覆盖:
val shapes = Shapes(
  extraSmall = RoundedCornerShape(4.dp),
  small = RoundedCornerShape(8.dp),
  medium = RoundedCornerShape(12.dp),
  large = RoundedCornerShape(16.dp),
  extraLarge = RoundedCornerShape(28.dp)
)

您可以前往官方网站,阅读更多关于应用形状的内容:

https://m3.material.io/styles/shape/overview

窗口大小类

Jetpack Compose 和 Material 3 提供了帮助您的应用实现自适应的窗口大小工件。如需开始使用,您可以将 Compose Material 3 窗口大小类依赖项添加到您的 build.gradle 文件中:

// 在模块 build.gradle 中添加依赖项


implementation "androidx.compose.material3$material3_version"

窗口大小类将大小划分到标准大小的存储分区中,这些存储分区是旨在针对大部分特殊情况优化应用的断点。

31be50e2-6984-11ed-8abf-dac502259ad0.png

用于将设备划分到不同大小的存储分区中的 WindowWidthSize 类

您可以查看 Reply Compose 示例,详细了解自适应应用和窗口大小类的实现:

https://github.com/android/compose-samples/tree/main/Reply

窗口边衬区支持

M3 组件 (如顶部应用栏、抽屉式导航栏、普通导航栏和侧边栏) 包含对窗口边衬区的内置支持。无论是单独使用还是与 Scaffold 配合使用,这些组件都能自动处理由状态栏、导航栏和系统界面的其他部分确定的边衬区。 Scaffold 现在支持 contentWindowInsets 参数,该参数有助于为 Scaffold 内容确定边衬区。 只有当 topBarbottomBar 无法在 Scaffold 中使用时,您才需要考虑使用 Scaffold 边衬区,因为这些组件会以组件级别处理边衬区。
Scaffold(
    contentWindowInsets = WindowInsets(16.dp)
) {
    // Scaffold content
}

资源

随着 Compose Material 3 迎来稳定版本,现在是全面了解该内容库并准备好在应用中使用的绝佳时机。您可以查看下方资源,即刻开始使用。

  • 完整的 Material 3 和 Compose 示例 Reply:

    https://github.com/android/compose-samples/tree/main/Reply
  • 开始将 Material 3 添加至您应用的指南:https://developer.android.google.cn/jetpack/compose/themes/material3
  • Material 2 升级至 Material 3 的迁移指南:

    https://developer.android.google.cn/jetpack/compose/themes/material2-material3

  • Jetpack Compose 示例 GitHub 代码库,您可以在其中找到各种使用 Material 3 的最新示例:

    https://github.com/android/compose-samples

  • StackOverflow中的 Compose 社区:

    https://stackoverflow.com/questions/tagged/material-desig

  • Kotlin Slack 群组

    http://slack.kotlinlang.org/

  • 您可以在错误追踪器,将发现的问题分享给我们并追踪功能请求:

    https://issuetracker.google.com/issues/new?component=742043

欢迎您持续关注我们,及时了解更多开发技术和产品更新等资讯动态。

31c8f132-6984-11ed-8abf-dac502259ad0.gif

3213df76-6984-11ed-8abf-dac502259ad0.gif 点击屏末||即刻了解 Compose Material 3 更多相关内容

321c7230-6984-11ed-8abf-dac502259ad0.png

3233bb0c-6984-11ed-8abf-dac502259ad0.gif

336fd852-6984-11ed-8abf-dac502259ad0.png


原文标题:Compose Material 3 稳定版现已发布 | 2022 Android 开发者峰会

文章出处:【微信公众号:谷歌开发者】欢迎添加关注!文章转载请注明出处。


声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • 谷歌
    +关注

    关注

    27

    文章

    6144

    浏览量

    105184

原文标题:Compose Material 3 稳定版现已发布 | 2022 Android 开发者峰会

文章出处:【微信号:Google_Developers,微信公众号:谷歌开发者】欢迎添加关注!文章转载请注明出处。

收藏 人收藏

    评论

    相关推荐

    苹果发布Apple Intelligence开发者测试版

    此下跌超过3%。 据苹果官方介绍,Apple Intelligence预览版已经面向开发者和部分用户开放,但正式的公开版本将作为iOS 18.1的一部分,在下周正式发布。届时,备受瞩目的生成式AI工具将
    的头像 发表于 10-24 09:57 290次阅读

    谷歌正式向Pixel设备推送Android 15稳定版

    10月17日最新资讯,谷歌今日已正式向Pixel系列设备推送Android 15稳定版更新。目前,已有部分Pixel设备成功完成升级,而更大范围的推送预计将在本周末进行。
    的头像 发表于 10-17 16:31 380次阅读

    谷歌开始推送Android 15稳定版

    近日,谷歌正式向Pixel系列设备推送了Android 15稳定版操作系统。目前,已有部分Pixel设备率先完成了系统升级,预计本周晚些时候,更大规模的更新推送将全面展开。
    的头像 发表于 10-17 16:12 784次阅读

    KaihongOS 4.1.2开发者预览版正式上线,诚邀开发者免费试用!

    独特的抢先体验机会,涵盖了原生应用开发、分布式能力、原子化服务等核心功能特性,助力开发者探索国产操作系统的更多可能性。此次发布的预览版适配RK3568、RK358
    的头像 发表于 09-28 08:07 308次阅读
    KaihongOS 4.1.2<b class='flag-5'>开发者</b>预览版正式上线,诚邀<b class='flag-5'>开发者</b>免费试用!

    KaihongOS 4.1.2开发者预览版正式上线,诚邀开发者免费试用!

    开发者提供了独特的抢先体验机会,涵盖了原生应用开发、分布式能力、原子化服务等核心功能特性,助力开发者探索国产操作系统的更多可能性。 此次发布的预览版适配RK3568、RK3588、ES
    的头像 发表于 09-26 15:59 431次阅读

    谷歌Android 15 Beta 3的新功能

    从近期发布的 Beta 3 开始,Android 15 达成了平台稳定性里程碑版本,这意味着开发者 API 和所有面向应用的行为都已是最终版
    的头像 发表于 09-09 15:55 484次阅读

    2024 RISC-V 中国峰会:华秋电子助力RISC-V生态!

    百家业界领先企业及顶尖研究机构的专家学者,吸引了约3000名开发者、学者及行业精英亲临现场。在峰会前后,还策划了超过20场丰富多彩的同期活动,为全球开发者提供了一个深入交流、碰撞思想、共谋RISC-V
    发表于 08-26 16:46

    香橙派全球开发者峰会发布多款AI赋能新品及全新AI战略

    2024年3月24日14:00,香橙派全球开发者峰会2024·春季在深圳举行。大会以“AI使能,万物新生”为主题,5000多名开发者、合作伙伴、技术领袖、行业专家、政府代表等通过线上线
    的头像 发表于 03-26 14:27 1664次阅读
    香橙派全球<b class='flag-5'>开发者</b><b class='flag-5'>峰会发布</b>多款AI赋能新品及全新AI战略

    Android 15的首个开发者预览版现已发布

    Android 15 的首个开发者预览版现已发布,以便各位开发者能与我们通力协作,打造更优秀的 Andr
    的头像 发表于 03-12 14:16 872次阅读
    <b class='flag-5'>Android</b> 15的首个<b class='flag-5'>开发者</b>预览版<b class='flag-5'>现已</b><b class='flag-5'>发布</b>

    Testin云测国内首发Android 15开发者预览版云真机

    Android 15来了,Testin云测助您快速抢占先机! 目前,谷歌已发布Android 15的第一个开发者预览版本(Android
    的头像 发表于 02-24 09:33 886次阅读
    Testin云测国内首发<b class='flag-5'>Android</b> 15<b class='flag-5'>开发者</b>预览版云真机

    谷歌Android 15开发者预览版遇问题,OTA更新暂停

    谷歌在Android Developer官网发表声明,因发现“已知问题”,将暂时关闭Android 15 DP1的OTA更新订阅服务。谷歌解释道:“禁用OTA镜像下载是为了深入调查问题。”对于想要尝鲜Android 15的
    的头像 发表于 02-21 14:08 638次阅读

    Mozilla发布Firefox 123.0稳定版,新添网站兼容性报告工具

    2023年2月20日,Mozilla发布Firefox 123.0稳定版及115.9 ESR版本,并更迭Beta、Dev、Nightly三个开发频道版本至124、125;手机版Firefox亦升级到123.0。
    的头像 发表于 02-20 15:45 630次阅读

    鸿蒙开发者预览版如何?

    在24年的华为鸿蒙发布会中表示。预览版已经向开发者开放申请,首批支持的机型有三款分别为华为 Mate 60、华为Mate 60 Pro、华为Mate X5。 其HarmonyOS NEXT去除
    发表于 02-17 21:54

    鸿蒙系统优缺点,能否作为开发者选择

    开发的岗位需求,尤其在这个大环境不好的情况下,会引出更多岗位。 鸿蒙的开发岗位,不会内卷、薪资高、岗位多。对于开发者非常友好。 新型操作系统,比Android、ios更加安全实用。
    发表于 02-16 21:00

    欢迎加入飞腾派开发者社区,感谢每一位开发者

    发烧友论坛一起策划了飞腾派开发板测评活动,受到了广大开发者的喜爱。 通过这次活动,飞腾派成功地吸引了众多高质量开发者的关注和参与,进一步扩大了其在开发者社区中的影响力。此次活动将电子
    发表于 12-11 16:11