使用Kotlin从图库中选择图像

Rav*_*avi 4 android kotlin

最近我开始学习Kotlin.在拥有一些基本功能后,我被图像选择器困住了.

是否有任何特定的方法从库和相机中选择图像Kotlin?或者我应该在我们的普通Java代码中实现,然后从Kotlin文件中调用它?

Java代码:

Intent intent = new Intent();
intent.setType("image/*");
intent.setAction(Intent.ACTION_GET_CONTENT);
startActivityForResult(Intent.createChooser(intent, "Select Picture"), PICK_IMAGE);
Run Code Online (Sandbox Code Playgroud)

使用Kotlin什么其他差异来执行此操作?

Mel*_*dek 13

这里有一个用于选择图像和捕获图像的示例功能代码:

 fun selectImageInAlbum() {
        val intent = Intent(Intent.ACTION_GET_CONTENT)
        intent.type = "image/*"
        if (intent.resolveActivity(packageManager) != null) {
            startActivityForResult(intent, REQUEST_SELECT_IMAGE_IN_ALBUM)
        }
    }
 fun takePhoto() {
        val intent1 = Intent(MediaStore.ACTION_IMAGE_CAPTURE)
        if (intent1.resolveActivity(packageManager) != null) {
            startActivityForResult(intent1, REQUEST_TAKE_PHOTO)
        }
    }
 companion object {
        private val REQUEST_TAKE_PHOTO = 0
        private val REQUEST_SELECT_IMAGE_IN_ALBUM = 1
    }
Run Code Online (Sandbox Code Playgroud)

另外,不要忘记将其添加到清单文件中:

<uses-permission android:name="android.permission.CAMERA"/>
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
Run Code Online (Sandbox Code Playgroud)

我希望我能提供帮助


小智 5

现在它startActivityForResult()已被弃用,这是新的方式。首先,在内部执行此操作onCreate

科特林:

    val selectImageIntent = registerForActivityResult(GetContent())
    { uri ->
        imageView.setImageURI(uri)
    }
Run Code Online (Sandbox Code Playgroud)

爪哇:

ActivityResultLauncher<String> selectImageIntent = registerForActivityResult(
        new ActivityResultContracts.GetContent(),
        new ActivityResultCallback<Uri>() {
            @Override
            public void onActivityResult(Uri uri) {
                imageView.setImageURI(uri);
            }
        });
Run Code Online (Sandbox Code Playgroud)

并致电selectImageIntent.launch("image/*")启动画廊。


Ego*_*kin 2

你也可以用 Kotlin 编写。

val intent = Intent()
intent.type = "image/*"
intent.action = Intent.ACTION_GET_CONTENT
startActivityForResult(Intent.createChooser(intent, "Select Picture"), PICK_IMAGE);
Run Code Online (Sandbox Code Playgroud)

  • 您可以将任何 java 代码编写为 kotlin 模拟。您甚至可以将 javacode 复制到 kotlin 文件以将 javacode 转换为 kotlincode (2认同)