Android调用相册显示图片

在Android开发中,我们经常需要调用相册来显示用户选取的图片。本文将介绍如何在Android应用中调用相册,并显示选取的图片。

调用相册

要调用相册,首先需要在AndroidManifest.xml文件中添加相应的权限:

<uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE"/>

然后,在需要调用相册的地方,可以通过Intent来启动相册应用:

Intent intent = new Intent(Intent.ACTION_PICK, android.provider.MediaStore.Images.Media.EXTERNAL_CONTENT_URI);
startActivityForResult(intent, PICK_IMAGE_REQUEST);

上面的代码创建了一个ACTION_PICK类型的Intent,并指定了图片的URI。然后通过startActivityForResult方法启动相册应用,并传递一个请求码(PICK_IMAGE_REQUEST)。

显示选取的图片

当用户选取了图片后,可以在onActivityResult方法中获取选取的图片并显示出来:

@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
    super.onActivityResult(requestCode, resultCode, data);

    if (requestCode == PICK_IMAGE_REQUEST && resultCode == RESULT_OK && data != null && data.getData() != null) {
        Uri uri = data.getData();

        try {
            Bitmap bitmap = MediaStore.Images.Media.getBitmap(getContentResolver(), uri);
            ImageView imageView = findViewById(R.id.imageView);
            imageView.setImageBitmap(bitmap);
        } catch (IOException e) {
            e.printStackTrace();
        }
    }
}

上面的代码首先检查requestCode和resultCode是否为预期值,然后从Intent中获取选取的图片的URI。接着使用MediaStore.Images.Media.getBitmap方法将URI转换为Bitmap,并将Bitmap显示在ImageView中。

示例

下面是一个完整的示例代码,演示了如何调用相册显示图片:

public class MainActivity extends AppCompatActivity {
    private static final int PICK_IMAGE_REQUEST = 1;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        
        Button button = findViewById(R.id.button);
        button.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                Intent intent = new Intent(Intent.ACTION_PICK, android.provider.MediaStore.Images.Media.EXTERNAL_CONTENT_URI);
                startActivityForResult(intent, PICK_IMAGE_REQUEST);
            }
        });
    }

    @Override
    protected void onActivityResult(int requestCode, int resultCode, Intent data) {
        super.onActivityResult(requestCode, resultCode, data);

        if (requestCode == PICK_IMAGE_REQUEST && resultCode == RESULT_OK && data != null && data.getData() != null) {
            Uri uri = data.getData();

            try {
                Bitmap bitmap = MediaStore.Images.Media.getBitmap(getContentResolver(), uri);
                ImageView imageView = findViewById(R.id.imageView);
                imageView.setImageBitmap(bitmap);
            } catch (IOException e) {
                e.printStackTrace();
            }
        }
    }
}
<RelativeLayout xmlns:android="
    xmlns:tools="
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:paddingBottom="@dimen/activity_vertical_margin"
    android:paddingLeft="@dimen/activity_horizontal_margin"
    android:paddingRight="@dimen/activity_horizontal_margin"
    android:paddingTop="@dimen/activity_vertical_margin"
    tools:context=".MainActivity">

    <Button
        android:id="@+id/button"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="选择图片" />

    <ImageView
        android:id="@+id/imageView"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:layout_below="@id/button" />

</RelativeLayout>

总结

本文介绍了如何在Android应用中调用相册来显示用户选取的图片。通过添加相应的权限并使用Intent启动相册应用,然后在onActivityResult方法中获取选取的图片,并将其显示在ImageView中。希望本文对你理解和实践Android调用相册显示图片有所帮助。

甘特图

下图是一个使用相册调用和显示图片的甘特图:

gantt
    title Android调用相册显示图片

    section 调用相册
    添加权限			     : 2022-01-01, 1d
    启动相册应用		     : 2022-01-02, 1d
    
    section 显示选取的图片
    获取选取的图片	     : 2022-01-03, 1d
    将图片显示在ImageView中 : 2022-01-04, 1d