朝花夕拾-android 从手机选择图片或拍照设置头像
2015-04-15 16:17
615 查看
Demo源码位置:http://git.oschina.net/zj2012zy/Android-Demo/tree/master/AndroidDemo/headset
一般需要用户信息的好多的也需要设置用户头像,通常设置用户头像的操纵要么从手机选择一张图片,要么直接通过手机拍照进行设置。示意图如下:
另外:制作手机的动态截屏,可以使用应用宝的动态截屏功能,非常的方便。
布局文件很简单:就是两个按钮加一个imageview用来显示设置好的头像,就不说了。
核心代码为如下四个函数:
1.选择一张图片
2、拍照并存储
3、处理拍照或者是选择的照片,截取头像,其中可指定截取头像的大小。
4、整体流程基本都是通过调用系统activity实现,代码如下
文章从简,具体实现请参考demo,欢迎留言讨论
一般需要用户信息的好多的也需要设置用户头像,通常设置用户头像的操纵要么从手机选择一张图片,要么直接通过手机拍照进行设置。示意图如下:
另外:制作手机的动态截屏,可以使用应用宝的动态截屏功能,非常的方便。
布局文件很简单:就是两个按钮加一个imageview用来显示设置好的头像,就不说了。
核心代码为如下四个函数:
1.选择一张图片
public static void selectPhoto(Activity activity) { Intent intent = new Intent(Intent.ACTION_GET_CONTENT); intent.setType("image/jpeg"); intent.putExtra("return-data", true); activity.startActivityForResult(intent, PHOTO_PICKED_WITH_DATA); }
2、拍照并存储
public static String takePicture(Activity activity) { createDirFile(Environment.getExternalStorageDirectory().getPath() + "/zhaojie/images/"); Intent intent = new Intent(MediaStore.ACTION_IMAGE_CAPTURE); String timeStamp = new SimpleDateFormat("yyyyMMddHHmmss").format(new Date()); String path = Environment.getExternalStorageDirectory().getPath() + "/zhaojie/images/" + timeStamp + ".png"; File file = createNewFile(path); if (file != null) { intent.putExtra(MediaStore.EXTRA_OUTPUT, Uri.fromFile(file)); } activity.startActivityForResult(intent, INTENT_REQUEST_CODE_CAMERA); return path; }
3、处理拍照或者是选择的照片,截取头像,其中可指定截取头像的大小。
private void cropImageUri(Uri uri, int requestCode) { Intent intent = new Intent("com.android.camera.action.CROP"); intent.setDataAndType(uri, "image/*"); intent.putExtra("crop", "true"); intent.putExtra("aspectX", 1); intent.putExtra("aspectY", 1); intent.putExtra("outputX", 320); intent.putExtra("outputY", 320); intent.putExtra("scale", true); intent.putExtra(MediaStore.EXTRA_OUTPUT, uri); intent.putExtra("return-data", true); intent.putExtra("outputFormat", Bitmap.CompressFormat.JPEG.toString()); intent.putExtra("noFaceDetection", true); // no face detection startActivityForResult(intent, requestCode); }
4、整体流程基本都是通过调用系统activity实现,代码如下
protected void onActivityResult(int requestCode, int resultCode, Intent data) { super.onActivityResult(requestCode, resultCode, data); if (resultCode != RESULT_OK) return; Bitmap tempPhoto = null; switch (requestCode) { case PHOTO_PICKED_WITH_DATA: // ???????? ContentResolver cr = this.getContentResolver(); try { Uri uri = data.getData(); cropImageUri(uri, PHOTO_CROP_DATA); // tempPhoto = // BitmapFactory.decodeStream(cr.openInputStream(uri)); // mStepPhoto.setUserPhoto(tempPhoto); } catch (Exception e) { e.printStackTrace(); } break; case INTENT_REQUEST_CODE_CAMERA: tempPhoto = BitmapFactory.decodeFile(headPath); cropImageUri(Uri.fromFile(new File(headPath)), PHOTO_CROP_DATA); break; case PHOTO_CROP_DATA: tempPhoto = data.getParcelableExtra("data"); mHead.setImageBitmap(tempPhoto); break; } }
文章从简,具体实现请参考demo,欢迎留言讨论
相关文章推荐
- Android设置头像,手机拍照或从本地相册选取图片作为头像
- android开发 通过拍照或选择本地图片并剪裁图片设置成头像
- android选择系统相机拍照和系统相册,裁剪图片并保存和设置头像,适配至7.0
- Android设置头像,手机拍照或从本地相册选取图片作为头像
- Android通过手机拍照或从本地相册选取图片设置头像
- Android拍照或选择本地图片并剪裁图片设置成头像
- Android设置头像,手机拍照或从本地相册选取图片作为头像
- Android设置头像,手机拍照或从本地相册选取图片作为头像
- Android设置头像,手机拍照或从本地相册选取图片作为头像
- Android设置头像,手机拍照或从本地相冊选取图片作为头像
- iOS 调用相机拍照和选择图库图片 设置头像
- android 相机拍照或从图库获取图片并裁剪设置头像
- Android 设置用户头像 -》拍照/相册选择+裁剪 实现
- Android手机拍照或选取图库图片作为头像
- android 拍照+从手机相册选择返回图片到imagview
- 通过拍照或选择本地图片并剪裁图片设置成头像
- Android拍照或者从手机相册里选择图片
- iOS上传头像, 相册权限,相册权限,拍照上传,相册选择图片,拍照页面语言设置,保存到相册
- Android之修改用户头像并上传服务器(实现手机拍照和SD卡选择上传)
- react native结合Android原生实现调用相机或图库选择图片设置头像