跳转图库选择图片 Android

在开发Android应用程序时,有时候我们需要让用户从手机图库中选择图片。这种需求在很多应用中都会遇到,比如社交应用、相册应用等。本文将介绍如何实现在Android应用中跳转到系统图库,让用户选择图片并将图片显示在应用中。

实现步骤

  1. 添加权限

AndroidManifest.xml文件中添加读取外部存储权限:

<uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE" />
  1. 调用系统图库

在需要跳转到图库的地方调用以下代码:

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

在上面的代码中,我们创建了一个Intent对象,指定了动作为ACTION_PICK,并指定了图片的URI为MediaStore.Images.Media.EXTERNAL_CONTENT_URI,最后通过startActivityForResult方法启动图库选择图片的页面。

  1. 处理返回结果

当用户在图库中选择了图片后,系统会返回选择的图片的URI。我们需要在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 imageUri = data.getData();
        // 显示图片
        imageView.setImageURI(imageUri);
    }
}

onActivityResult方法中,我们首先检查返回的请求码是否与我们启动图库选择图片时的请求码一致,然后取出选择的图片的URI,并将其显示在ImageView中。

完整代码示例

以下是一个简单的示例代码,实现了跳转到系统图库选择图片并显示在应用中:

public class MainActivity extends AppCompatActivity {

    private static final int PICK_IMAGE_REQUEST = 1;
    private ImageView imageView;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

        imageView = findViewById(R.id.imageView);

        Button chooseImageButton = findViewById(R.id.chooseImageButton);
        chooseImageButton.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                Intent intent = new Intent(Intent.ACTION_PICK, 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 imageUri = data.getData();
            imageView.setImageURI(imageUri);
        }
    }
}

类图

以下是本文中涉及到的类的类图:

classDiagram
    MainActivity <|-- AppCompatActivity
    MainActivity : - PICK_IMAGE_REQUEST: int
    MainActivity : - imageView: ImageView
    MainActivity : + onCreate(savedInstanceState: Bundle)
    MainActivity : + onActivityResult(requestCode: int, resultCode: int, data: Intent)

结尾

通过以上代码示例,我们可以实现在Android应用中跳转到系统图库选择图片并将其显示在应用中。这种功能在很多应用中都很常见,希望本文对你有所帮助。如果有任何问题或疑问,欢迎留言讨论。