mcpField
G
glance-canonical-layouts

glance-canonical-layouts

github.com/android设计与 UI10.0k237 次安装2 天前更新
代码仓库

关于 glance-canonical-layouts

为 Android 编码 Agent 提供 Jetpack Glance 小组件规范布局的实现指南,涵盖从选型、复制参考文件到配置和编译检查的流程。

主要功能

  1. 01提供多种小组件布局参考
  2. 02说明依赖与项目配置
  3. 03指导注册小组件接收器
  4. 04涵盖点击操作与状态更新
  5. 05提供布局故障排查提示

适用场景

  1. 01为应用添加清单或待办列表小组件
  2. 02构建带图片的列表或网格小组件
  3. 03实现搜索栏或操作工具栏小组件

安装

复制下面的命令,在终端中运行。

$npx skills add https://github.com/android/skills --skill glance-canonical-layouts

安装后在 Claude Code 中输入/glance-canonical-layouts确认已加载。

包含的文件

除 SKILL.md 外,安装时一起下载的参考资料和脚本。

references/
ActionDemonstrationActivity.kt
CanonicalLayoutActivity.kt
CollectionsKtx.kt
references/collections/
ActionListAppWidget.kt
CheckListAppWidget.kt
ImageGridAppWidget.kt
ImageTextListAppWidget.kt
references/collections/data/
FakeActionListDataRepository.kt
FakeCheckListDataRepository.kt
FakeImageGridDataRepository.kt
FakeImageTextListDataRepository.kt
references/collections/layout/
ActionListLayout.kt
CheckListLayout.kt
EmptyListContent.kt
ImageGridLayout.kt
ImageTextListLayout.kt
ListItem.kt
NoDataContent.kt
RoundedScrollingLazyColumn.kt
RoundedScrollingLazyVerticalGrid.kt
VerticalListItem.kt
references/res/drawable/
four_side_cookie_background.xml
sample_ac_icon.xml
sample_add_icon.xml
sample_app_logo.xml
sample_arrow_right_icon.xml
sample_bulb_icon.xml
sample_camera_icon.xml
sample_checked_circle_icon.xml
sample_circle_icon.xml

详细介绍

要实现遵循推荐设计模式的规范布局小组件:

  1. 项目必须使用 Jetpack Glance。
  2. 必须从规范布局参考文件列表中找到所需布局。
  3. 将布局参考文件一次性复制到项目的目标应用模块(例如,src/main/java/ 和 src/main/res/),以实现精确设计并减少工具调用次数。
  4. 必须在小组件提供程序类中设置 override val sizeMode: SizeMode = SizeMode.Exact。
  5. 验证项目能否编译,并更新示例中的包声明、导入路径和类名,使其与目标应用的包名一致。
  6. 清理项目中的小组件代码,移除未使用的类(例如,未使用的按钮)。
  7. 必须在 AndroidManifest.xml 的 <application> 中、<activity> 之后注册小组件接收器,并确保 android:resource="@xml/..." 与复制的 Widget Info XML 文件名一致。否则,小组件不会显示在小组件选择器中:

<receiver android:name=".glance.MyReceiver"
    android:exported="true">
    <intent-filter>
        <action android:name="android.appwidget.action.APPWIDGET_UPDATE" />
    </intent-filter>
    <meta-data
        android:name="android.appwidget.provider"
        android:resource="@xml/my_app_widget_info" />
</receiver>

依赖项

在应用模块的 build.gradle.kts(dependencies 代码块)中添加 Jetpack Glance 依赖项:

  • androidx.glance:glance-appwidget:1.2.0 或更高版本
  • androidx.glance:glance-material3:1.2.0 或更高版本
  • androidx.glance:glance-appwidget-preview:1.2.0 或更高版本
  • androidx.glance:glance-preview:1.2.0 或更高版本

实现快照滚动时,请搭配 compileSdk = 37 和 Android Gradle Plugin(AGP)9.1.0 或更高版本使用 1.3.0-alpha02 或更高版本(例如,在 gradle/libs.versions.toml 中设置 agp = "9.1.0")。

如果复制了使用 Coil 加载位图的示例数据仓库(例如,FakeImageGridDataRepository.kt、FakeImageTextListDataRepository.kt 或 FakeTextWithImageRepository.kt),并且项目中尚未包含图片加载库依赖项,请同时添加一个此类依赖项,例如 io.coil-kt:coil(例如,implementation("io.coil-kt:coil:2.7.0"))。

规范布局参考文件

操作列表布局(action_list)
清单布局(check_list)
富有表现力的工具栏布局(expressive_toolbar)
图片网格布局(image_grid)
图片文本列表布局(image_text_list)
长文本布局(long_text)
搜索工具栏布局(search_toolbar)
全屏图片布局与吸附滚动(snap_scrolling)
标准工具栏布局(standard_toolbar)
图片配文布局(text_with_image)

故障排查

  1. 背景颜色:对于纯色背景,请直接使用 GlanceModifier.background(Color),而不要使用 ColorProvider,否则背景将变为透明。
  2. 在(背景之外)使用 ColorProvider 时,避免导入错误:
    1. 导入类型:import androidx.glance.unit.ColorProvider
    2. 使用完全限定的创建方法:androidx.glance.color.ColorProvider(dayColor, nightColor)

检查清单

  • [ ] 是否已在 AndroidManifest 中注册此 Widget?
  • [ ] 是否已复制对应的 Widget Info XML 文件,并保持给定值不变,包括 minWidth、minHeight 和 minResizeHeight?
  • [ ] 是否使用了对应的 Layout Composable 文件中给定的 Glance Theme 颜色值?
  • [ ] 是否在 appwidget-provider XML 定义中为 android:minWidth 和 android:minHeight 使用了尺寸资源引用?
  • [ ] 是否在 Widget provider 类中重写了 val sizeMode: SizeMode = SizeMode.Exact?

评论

支持 Markdown