Android调用手机自带图库选择图片
2015-07-05 16:39
513 查看
这里我们采用的布局文件中 有一个ImageView(set_pic)和Button,布局较为简单(这里就不再给出)。其中Button用于打开手机自带图库进行选择图片,而ImageView就用于显示选中的文件。
Button注册了点击事件监听器,内部代码如下:
其中ActivityRequestCode.SHOW_MAP_DEPOT只是一个常量,作为请求码,表示活动:
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自带图库选择图片了。
相关文章推荐
- 单独编译Android的image文件
- android测试环境搭建
- android四大组件(详细总结)
- Android分享软件功能的实现
- Android IOS WebRTC 音视频开发总结(三三)-- Periscope介绍
- Android学习 21->进度条之SeekBar和RatingBar
- android下webp的学习和使用
- android编程之代码布局(一)
- Android应用程序消息处理机制笔记
- The following classes could not be found: - android.support.v7.internal.widget.ActionBarOverlayLayou解决方案
- android studio导入so包
- 启动android模拟器后,界面卡住拖不动的解决方案
- Android项目中使用自定义进度加载Dialog
- Android案例(1)——一个简单的计算器
- 【Android】利用Activity生命周期监听应用前后台切换
- android开发中经常看到@Override原来是这个意思
- 从源码解释Android事件分发机制
- Android之使用adb wireless进行调试
- Android NDK编程浅入深出之--Android.mk
- Android中ViewHolder模式开发的详细解释