如何传递一个图像从一个可组合的功能到另一个在Jetpack撰写?



我正在开发一个文本和图像的应用程序。图像看起来很小,就像缩略图一样,在一个可组合(活动)中,与文本并排。其思想是:当用户触摸(点击)图像时,导航组件将用户带到另一个可组合(活动)中该图像的全屏版本。有可能吗?如果是,怎么做?提前谢谢。

不是传递图像本身,而是传递一些东西来标识图像。例如:

  • 如果你从资源文件夹加载图像,你应该传递资源ID(即R.drawable.your_image);
  • 如果你使用assets文件夹或一些远程URL,你应该传递图像Uri(即/path_in_assets/your_imagehttps://foo.bar/your_image)。

然后从"ListActivity"你可以通过Intent的附加功能将图像ID传递给下一个活动。

startActivity(
Intent(context, DetailsActivity::class.java).apply {
putExtra("imageId", yourImageId) // resource ID or image URL
}
)

在"DetailsActivity"中,在onCreate方法中,您将获得图像ID并正确加载它…

class DetailsActivity : ComponentActivity() {
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
// for uri ID
val imageId = intent.getStringExtra("imageId")
// for resource ID
val imageId = intent.getIntExtra("imageId", -1)
setContent {
YourAppTheme {
YourScreen(imageId)
}
}
}
}

最后,在您的组合中,您可以根据资源ID加载图像,使用:

Image(painter = painterResource(id = imageId), contentDescription = null)

或使用Coil作为URL资源:

Image(painter = rememberAsyncImagePainter(imageId), contentDescription = null)

最新更新