在 Figma 中,变体 用于将同一组件的不同变体(例如不同的状态或大小)组合在一起。Relay 在组件转换为代码时会保留组件的变体。在本节中,我们将了解 Relay 如何处理设计中的变体。
起点
我们将从一个包含具有三个变体的新闻卡片组件的 Figma 文件开始。
- hero-item 用于最重要的新闻文章
- article-item 用于典型的文章
- audio-item 用于您收听而不是阅读的文章
复制 Figma 示例
在本教程中,我们将使用现有的 Figma 文件作为示例。请确保您已登录您的 Figma 帐户。
- 下载 HelloNews.fig 到您的计算机。
在 Figma 中,转到文件浏览器。在左侧,将鼠标悬停在“草稿”上。“+”图标将会出现——单击“+”图标,然后单击“导入”。选择您刚刚下载的HelloNews.fig文件。这可能需要 10 秒到一分钟的时间。
在 Figma 中打开导入的文件。
创建 UI 包
Relay for Figma 插件会向我们的组件添加额外信息,以便我们可以与将在其代码中使用我们的组件的开发者合作。
- 在您的文件中打开 Relay for Figma 插件(在菜单栏中:插件 > Relay for Figma)。单击开始。
选择组件并单击创建 UI 包。
选择 UI 包后,向摘要框添加说明。例如:“用于显示列表中新闻项目的新闻卡片组件”。
保存命名版本
现在您已创建 UI 包,请准备您的组件以与开发团队共享。
- 打开 Figma Relay 插件(如果尚未打开)。
- 单击与开发者共享。
- 在与开发者共享屏幕上,您可以在保存版本历史记录部分输入新的版本名称和说明。
单击保存。
示例标题:初始新闻卡片
示例说明:新闻文章项目的第一次迭代
下载 Android Studio 项目
对于本教程的 Android Studio 部分,我们将使用预配置的 Android Studio 项目。此项目包含一个以纯文本格式显示新闻文章的应用程序。
- 下载示例 HelloNews.zip 文件。
- 双击该文件以将其解压缩,这将创建一个名为HelloNews的文件夹。将其移动到您的主文件夹。
- 返回 Android Studio。转到文件 > 打开,导航到您的主文件夹,选择HelloNews,然后单击打开。
- 打开项目时,Android Studio 会询问您是否信任该项目。单击信任项目。
导入到 Android Studio
让我们将我们的 Figma 组件导入项目。
返回 Figma,复制新闻卡片教程 Figma 文件的 URL。我们将使用此 URL 导入我们的组件。在 Figma 的右上角,单击共享按钮。在打开的对话框中,单击复制链接。
切换到 Android Studio 中的 HelloNews 项目。从 Android Studio 菜单栏中转到文件 > 新建 > 导入 UI 包…。
粘贴您的 Figma 文件的 URL 并单击下一步。
- 文件完成提取后(这可能需要一些时间),单击完成。
单击以构建您的项目。这可能需要一分钟左右的时间。
预览应用程序和组件
在 Android 视图中,打开
app/java/com/example/hellonews/ui/home/HomeScreen.kt
,您将看到应用程序的预览,该预览以纯文本格式显示几篇新闻文章,打印故事位于音频故事上方。打开
app/java (generated)/com/example/hellonews/newscard/NewsCard.kt
。这是我们 Figma 组件生成的 Jetpack Compose 代码。从预览中,我们可以看到三个新闻卡片组件的变体已从 Figma 转换为代码。让我们仔细看看代码。该
View
枚举允许我们选择为此组件使用哪个变体。枚举及其值的名称是从我们 Figma 组件的变体派生的。这在我们新闻卡片组合组件中的view
参数中使用。新闻卡片组合组件是从 UI 包生成的。它包含类型为
View
的参数,该参数设置要实例化的新闻卡片的变体。package com.example.myapplication.newscard import ... // Design to select for NewsCard enum class View { HeroItem, ArticleItem, AudioItem } /** * News card component intended to display news items for a list. * * This composable was generated from the UI Package 'news_card'. * Generated code; do not edit directly */ @Composable fun NewsCard( modifier: Modifier = Modifier, view: View = View.HeroItem ) {...}
下一步
我们还没有准备好使用新闻卡片。该组件不知道如何显示不同的新闻故事,只知道 Figma 中相同的硬编码故事。因此,如果我们现在添加组件,我们只会得到重复的相同新闻故事。我们需要一种方法来指定新闻卡片的哪些部分应该填充动态数据。
在本节中,我们将向新闻卡片组件添加内容参数。
推荐内容
- 注意:当 JavaScript 关闭时显示链接文本
- 内容参数
- 滚动
- 在 Views 中使用 Compose