如何在 Jetpack Compose 中将图像从一个可组合函数传递到另一个可组合函数?

2024-02-17

我正在开发一个带有文本和图像的应用程序。在一个可组合项(活动)上,图像与文本一起显得很小,如缩略图。这个想法是:当用户触摸(单击)图像时,导航组件会将用户带到另一个可组合项(活动)中该图像的全屏版本。这有可能吗?如果是,怎么办?提前致谢。


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

  • 如果您从资源文件夹加载图像,则应传递资源 ID(即R.drawable.your_image);
  • 如果您正在使用assets文件夹或某些远程 URL,您应该传递图像Uri (i.e. /path_in_assets/your_image or https://foo.bar/your_image).

然后,您可以使用“ListActivity”将图像 ID 传递到下一个活动Intent extras.

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 https://coil-kt.github.io/coil/compose/对于 URL 资源:

Image(painter = rememberAsyncImagePainter(imageId), contentDescription = null)
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

如何在 Jetpack Compose 中将图像从一个可组合函数传递到另一个可组合函数? 的相关文章

随机推荐