您的位置:首页 > 移动开发 > Android开发

Android调用手机自带图库选择图片

2015-07-05 16:39 513 查看
这里我们采用的布局文件中 有一个ImageView(set_pic)和Button,布局较为简单(这里就不再给出)。其中Button用于打开手机自带图库进行选择图片,而ImageView就用于显示选中的文件。

Button注册了点击事件监听器,内部代码如下:

// 调用android自带的图库
Intent intent = new Intent(Intent.ACTION_PICK,
android.provider.MediaStore.Images.Media.EXTERNAL_CONTENT_URI);
startActivityForResult(intent, ActivityRequestCode.SHOW_MAP_DEPOT);


其中ActivityRequestCode.SHOW_MAP_DEPOT只是一个常量,作为请求码,表示活动:

public interface ActivityRequestCode {
public static final int SHOW_MAP_DEPOT = 1; //显示Android自带图库,用于选择用户自己的图片
}
其中调用android自带图库的那个活动还需添加一个回调方法,用于接收自带图库返回的图片路径:

public void onActivityResult(int requestCode, int resultCode, Intent data) {
super.onActivityResult(requestCode, resultCode, data);

if (data != null) {
if (requestCode == ActivityRequestCode.SHOW_MAP_DEPOT
&& resultCode == Activity.RESULT_OK)
showYourPic(data);
}
}


// 调用android自带图库,显示选中的图片
private void showYourPic(Intent data) {
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();

if (picturePath.equals(""))
return;

pic_path = picturePath; // 保存所添加的图片的路径

// 缩放图片, width, height 按相同比例缩放图片
BitmapFactory.Options options = new BitmapFactory.Options();
// options 设为true时,构造出的bitmap没有图片,只有一些长宽等配置信息,但比较快,设为false时,才有图片
options.inJustDecodeBounds = true;
Bitmap bitmap = BitmapFactory.decodeFile(picturePath, options);
int scale = (int) (options.outWidth / (float) 300);
if (scale <= 0)
scale = 1;
options.inSampleSize = scale;
options.inJustDecodeBounds = false;
bitmap = BitmapFactory.decodeFile(picturePath, options);

set_pic.setImageBitmap(bitmap);
set_pic.setMaxHeight(350);
set_pic.setVisibility(ImageView.VISIBLE);
}
这样我们就可以使用android自带图库选择图片了。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: