从图库中选取图片设置给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