从图库中选取图片设置给ImageView

从图库中选取图片设置给ImageView,主要点:onActivityResult方法的使用,运行效果如下

1.布局文件中添加一个ImageView:

<ImageView
    android:paddingTop="50dp"
    android:id="@+id/iv"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:layout_gravity="center_horizontal"
    android:src="@drawable/head"/>
2.主代码中MainActivity中:
private ImageView mIv;//声明mIv对象
public static final int SET_PHOTO = 1;//请求码

 mIv = (ImageView) findViewById(R.id.iv);//得到mIv对象

mIv.setOnClickListener(new View.OnClickListener() {//设置点击事件
            @Override
            public void onClick(View view) {
                Intent i = new Intent(Intent.ACTION_PICK,
                        MediaStore.Images.Media.EXTERNAL_CONTENT_URI);
                startActivityForResult(i, SET_PHOTO);// 设定结果返回
            }
        });

@Override
    protected void onActivityResult(int requestCode, int resultCode, Intent data) {
        super.onActivityResult(requestCode, resultCode, data);
        if (data != null) {
            switch (requestCode) {
                case SET_PHOTO:
                    //打开相册并选择照片,这个方式选择单张
                    // 获取返回的数据,这里是android自定义的Uri地址
                    Uri selectedImage = data.getData();
                    String[] filePathColumn = {MediaStore.Images.Media.DATA};
                    // 获取选择照片的数据视图
                    Cursor cursor = getContentResolver().
                            query(selectedImage, filePathColumn, null, null, null);
                    cursor.moveToFirst();
                    // 从数据视图中获取已选择图片的路径
                    int columnIndex = cursor.getColumnIndex(filePathColumn[0]);
                    String picturePath = cursor.getString(columnIndex);
                    cursor.close();
                    // 将图片显示到界面上
                    mIv.setImageBitmap(BitmapFactory.decodeFile(picturePath));
                    break;
            }
        }
    }

3.注意添加SD卡读取权限

 <!-- 读sd卡权限 -->
    <uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE"/>

源码下载地址:https://github.com/toly1994328/SetPhoto

原文地址:https://www.cnblogs.com/toly-top/p/9782041.html