Android 从相机/相册更改头像
2016-05-25 15:07
459 查看
功能要求:界面上定义一个ImageView,用来显示头像,然后该头像可以通过相册或者相机来更改,也就是我们平常看到的类似QQ或者微信来更改头像的功能
1.从相册选取照片来更改头像
这里用到隐式intent来启动系统相册,type类型是image
2.用相机拍一张照片来更改头像
重写一下activity的onActvityResult方法来获取照片
核心代码也就是上面这些了,这没有对图像进行剪切,等以后需要用到剪切功能的时候再来完善这篇博文
1.从相册选取照片来更改头像
Intent intent = new Intent(Intent.ACTION_PICK); intent.setType("image/*"); startActivityForResult(intent, FROM_ALBUM);
这里用到隐式intent来启动系统相册,type类型是image
2.用相机拍一张照片来更改头像
Intent intent = new Intent(MediaStore.ACTION_IMAGE_CAPTURE); startActivityForResult(new Intent("android.media.action.IMAGE_CAPTURE"), FROM_CAMERA);
重写一下activity的onActvityResult方法来获取照片
@Override public void onActivityResult(int requestCode, int resultCode, Intent data) { if (resultCode == Activity.RESULT_CANCELED) { return; } Bitmap bitmap = null; switch (requestCode) { case FROM_ALBUM: // 从相册获取 try { InputStream is = getActivity().getContentResolver().openInputStream(data.getData()); bitmap = BitmapFactory.decodeStream(is); is.close(); } catch (FileNotFoundException e) { e.printStackTrace(); } catch (IOException e) { e.printStackTrace(); } break; case FROM_CAMERA: // 拍照获取 bitmap = data.getExtras().getParcelable("data"); try { // 把拍的照片压缩到文件里 FileOutputStream fos = new FileOutputStream(new File(PersonalFragment.PICTURE_PATH)); bitmap.compress(CompressFormat.JPEG, 100, fos); fos.close(); } catch (FileNotFoundException e) { e.printStackTrace(); } catch (IOException e) { e.printStackTrace(); } break; } image.setImageBitmap(bitmap); }
核心代码也就是上面这些了,这没有对图像进行剪切,等以后需要用到剪切功能的时候再来完善这篇博文
相关文章推荐
- 使用C++实现JNI接口需要注意的事项
- Android IPC进程间通讯机制
- Android Manifest 用法
- [转载]Activity中ConfigChanges属性的用法
- Android之获取手机上的图片和视频缩略图thumbnails
- Android之使用Http协议实现文件上传功能
- Android学习笔记(二九):嵌入浏览器
- android string.xml文件中的整型和string型代替
- i-jetty环境搭配与编译
- android之定时器AlarmManager
- android wifi 无线调试
- Android Native 绘图方法
- Android java 与 javascript互访(相互调用)的方法例子
- android 代码实现控件之间的间距
- android FragmentPagerAdapter的“标准”配置
- Android"解决"onTouch和onClick的冲突问题
- android:installLocation简析
- android searchView的关闭事件
- SourceProvider.getJniDirectories