调用系统照相机,图库功能实现
2014-09-01 09:35
423 查看
修改用户的头像中常见功能。已经有两个项目中有需求。
底部弹出Popupwindow,将图片设置到指定位置。
1,自定义的Popupwindow中,设置点击事件的监听和回调接口
public void setHeadActionListener(HeadPicListener listener){
this.listener = listener;
}
public void show(View parent){
window.showAtLocation(parent, Gravity.BOTTOM, 0, 0);
}
// 拍照
// 从相册中选择
// 结果
public interface HeadPicListener {
/* 拍照 */
public int PICK_FROM_CAMERA = 1;
/* 剪切 */
public int CROP_FROM_CAMERA = 2;
/* 从相机选择图片 */
public int PICK_FROM_FILE = 3;
/* 拍照 */
public void takePic();
/* 用户相册 */
public void userAlbum();
}
2,Activity类里,实现接口监听,调用拍照,或选择图片的方法
pop.setHeadActionListener(new HeadPicListener() {
@Override
public void userAlbum() {
pickFromFile();
}
@Override
public void takePic() {
pickFormCamera();
}
});
/**
* 手机相册
*/
private void pickFromFile() {
Intent intent = new Intent(Intent.ACTION_PICK, null);
intent.setDataAndType(MediaStore.Images.Media.EXTERNAL_CONTENT_URI,
"image/*");
startActivityForResult(intent, HeadPicListener.PICK_FROM_FILE);
}
/**
* 手机拍照
*/
private void pickFormCamera() {
tempFile = new File(photo.getAbsoluteFile(), getPhotoFileName());
// 调用系统的拍照功能
Intent intent = new Intent(MediaStore.ACTION_IMAGE_CAPTURE);
// 指定调用相机拍照后照片的存储路径
intent.putExtra(MediaStore.EXTRA_OUTPUT, Uri.fromFile(tempFile));
startActivityForResult(intent, HeadPicListener.PICK_FROM_CAMERA);
}
3,拍照结束或者选择图片完成后
@Override
public void onActivityResult(int requestCode, int resultCode, Intent data) {
ImageLoader imageLoader = ImageLoader.getInstance();
imageLoader.init(ImageLoaderConfiguration.createDefault(getActivity()));
switch (requestCode) {
case HeadPicListener.PICK_FROM_CAMERA:
// 当选择拍照时调用
if (tempFile.length() > 0) {
String path = tempFile.getAbsolutePath();
imageLoader.displayImage("file:/" + path, my_img_takePic,
options);
}
break;
case HeadPicListener.PICK_FROM_FILE:
// 当选择从本地获取图片时
if (data != null) {
Uri mImageCaptureUri = data.getData();
File tmpFile = new File(FileUtil.getRealPath(getActivity(),
mImageCaptureUri));
final String path = tmpFile.getAbsolutePath();
imageLoader.displayImage("file:/" + path, my_img_takePic,
options);
}
default:
break;
}
其中,还有文件暂时存放的位置,图片生成工具类(略)。
两个项目中都出现的东西,现在才知道总结,不羞愧吗?
底部弹出Popupwindow,将图片设置到指定位置。
1,自定义的Popupwindow中,设置点击事件的监听和回调接口
public void setHeadActionListener(HeadPicListener listener){
this.listener = listener;
}
public void show(View parent){
window.showAtLocation(parent, Gravity.BOTTOM, 0, 0);
}
// 拍照
// 从相册中选择
// 结果
public interface HeadPicListener {
/* 拍照 */
public int PICK_FROM_CAMERA = 1;
/* 剪切 */
public int CROP_FROM_CAMERA = 2;
/* 从相机选择图片 */
public int PICK_FROM_FILE = 3;
/* 拍照 */
public void takePic();
/* 用户相册 */
public void userAlbum();
}
2,Activity类里,实现接口监听,调用拍照,或选择图片的方法
pop.setHeadActionListener(new HeadPicListener() {
@Override
public void userAlbum() {
pickFromFile();
}
@Override
public void takePic() {
pickFormCamera();
}
});
/**
* 手机相册
*/
private void pickFromFile() {
Intent intent = new Intent(Intent.ACTION_PICK, null);
intent.setDataAndType(MediaStore.Images.Media.EXTERNAL_CONTENT_URI,
"image/*");
startActivityForResult(intent, HeadPicListener.PICK_FROM_FILE);
}
/**
* 手机拍照
*/
private void pickFormCamera() {
tempFile = new File(photo.getAbsoluteFile(), getPhotoFileName());
// 调用系统的拍照功能
Intent intent = new Intent(MediaStore.ACTION_IMAGE_CAPTURE);
// 指定调用相机拍照后照片的存储路径
intent.putExtra(MediaStore.EXTRA_OUTPUT, Uri.fromFile(tempFile));
startActivityForResult(intent, HeadPicListener.PICK_FROM_CAMERA);
}
3,拍照结束或者选择图片完成后
@Override
public void onActivityResult(int requestCode, int resultCode, Intent data) {
ImageLoader imageLoader = ImageLoader.getInstance();
imageLoader.init(ImageLoaderConfiguration.createDefault(getActivity()));
switch (requestCode) {
case HeadPicListener.PICK_FROM_CAMERA:
// 当选择拍照时调用
if (tempFile.length() > 0) {
String path = tempFile.getAbsolutePath();
imageLoader.displayImage("file:/" + path, my_img_takePic,
options);
}
break;
case HeadPicListener.PICK_FROM_FILE:
// 当选择从本地获取图片时
if (data != null) {
Uri mImageCaptureUri = data.getData();
File tmpFile = new File(FileUtil.getRealPath(getActivity(),
mImageCaptureUri));
final String path = tmpFile.getAbsolutePath();
imageLoader.displayImage("file:/" + path, my_img_takePic,
options);
}
default:
break;
}
其中,还有文件暂时存放的位置,图片生成工具类(略)。
两个项目中都出现的东西,现在才知道总结,不羞愧吗?
相关文章推荐
- Android编程实现调用系统图库与裁剪图片功能
- Android 实现调用系统照相机拍照和录像的功能
- 调用系统相机 图库 截图功能。实现大图片裁剪保存
- 如何调用系统照相机实现类似腾讯微博那个拍照上传的功能
- Android实现图片的裁剪(不调用系统功能)
- android调用系统相机实现拍照功能
- Android实现图片的裁剪(不调用系统功能)
- linux下使用系统调用编程实现dir命令功能
- 更改调用系统功能,如照相机,短信等界面切换成中文字
- android调用系统相机实现拍照功能
- Android调用系统相机拍照,并且模仿实现水印相机简单功能
- iOS-调用系统的短信和发送邮件功能,实现短信分享邮件分享
- android调用系统相机实现拍照功能
- android 调用系统分享功能以及实现自定义分享
- MIPS:用系统功能调用实现简单输入输出
- android调用系统相机实现拍照功能
- 实现在一个SAP系统中调用其它SAP系统的功能
- iOS-调用系统的短信和发送邮件功能,实现短信分享邮件分享
- android调用系统相机实现拍照功能
- Asp.Net中调用win32系统内核功能的实现方法