Jetpack Compose 入门:打开相册选择(单选/多选)图片

ActivityResultContracts.PickVisualMedia() 和 ActivityResultContracts.PickMultipleVisualMedia() 来打开相册,不需要权限请求那一块。PickVisualMediaRequest()`指定要选择的图片还是视频,默认是 PickVis

hefengbao 发布于 2023.09.21 ,最后更新于 2023.09.21

ActivityResultContracts.PickVisualMedia()ActivityResultContracts.PickMultipleVisualMedia() 来打开相册,不需要权限请求那一块。

PickVisualMediaRequest() 指定要选择的图片还是视频,默认是 ActivityResultContracts.PickVisualMedia.ImageAndVideo ,另外还有:

ActivityResultContracts.PickVisualMedia.ImageOnly 只选照片;

ActivityResultContracts.PickVisualMedia.VideoOnly 只选影片;

ActivityResultContracts.PickVisualMedia.SingleMimeType() 选择某一类型的照片,例如 ActivityResultContracts.PickVisualMedia.SingleMimeType("image/gif")

简单示例:

@Composable
fun OpenAlbumScreen(
    modifier: Modifier = Modifier,
) {
    val singleLauncher = rememberLauncherForActivityResult(
        contract = ActivityResultContracts.PickVisualMedia(),
        onResult = {
            //TODO
        }
    )
    
    val multiLauncher = rememberLauncherForActivityResult(
        contract = ActivityResultContracts.PickMultipleVisualMedia(9),
        onResult = {
            //TODO
        }
    )

    Column(
        modifier = modifier.fillMaxWidth(),
        verticalArrangement = Arrangement.Top,
        horizontalAlignment = Alignment.CenterHorizontally
    ) {
        Button(
            onClick = {
                singleLauncher.launch(PickVisualMediaRequest())
            }
        ) {
            Text(text = "打开相册(单选)")
        }

        Button(
            onClick = {
                multiLauncher.launch(PickVisualMediaRequest())
            }
        ) {
            Text(text = "打开相册(多选)")
        }
    }
}

Demo:https://github.com/hefengbao/jetpack-compose-demo ,获取代码:

git clone git@github.com:hefengbao/jetpack-compose-demo.git

Android    Android   Jetpack Compose Tutorial  

hefengbao

暂无个人简介

有0条评论

发表评论

您的电子邮箱地址不会被公开。 必填项已用 * 标注

来源:

https://www.8ug.icu/articles/jetpack-compose-tutorial-PickVisualMedia-PickMultipleVisualMedia-p6Q0eOa12Z