【发布时间】:2020-12-30 19:19:52
【问题描述】:
我想截取 Jetpack Compose 上特定可组合功能的屏幕截图。我怎样才能做到这一点?请任何人帮助我。我想截取可组合功能的屏幕截图并与其他应用程序共享。
我的函数示例:
@Composable
fun PhotoCard() {
Stack() {
Image(imageResource(id = R.drawable.background))
Text(text = "Example")
}
}
这个功能怎么截图?
【问题讨论】:
-
目前,AFAIK 的 Compose 中没有直接用于此的内容。但是,您可以让
AndroidComposeView渲染您的可组合,然后将AndroidComposeViewdraw()的内容添加到Bitmap支持的Canvas。这不会涵盖所有内容,但它应该与普通视图的“屏幕截图”一样好。有关示例,请参阅 this Kotlinlang Slack post,尽管它已有几个月的历史,需要针对当前版本的 Compose 进行更新。 -
一年后,开发团队谈到了截图(around 25:00),但它是在测试的上下文中。如果这个功能在任何地方都可用,那就太好了。或者我们可以将测试依赖添加到我们的生产应用程序中?
-
@CommonsWare 你介意发布实际的解决方案吗?只有拥有经过验证的 Jetbrains 帐户的人才能访问该 Slack 频道。
-
@Maarten:“你介意发布实际的解决方案吗?” - 那个 Slack 线程大约有一年的历史。从那时起,几乎所有关于 Compose 的东西都已经过时了。请参阅 this Medium post 和 corresponding GitHub repo 了解更新的内容。
-
谢谢!这仍然将
View与可组合项交织在一起,如果能够轻松访问类似于SemanticsNodeInteraction.captureToImage的东西会很好。我已经为它提交了功能请求:issuetracker.google.com/issues/198182887
标签: android kotlin android-jetpack-compose android-jetpack