您的位置:首页 > 其它

调用系统照相机,图库功能实现

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;
        }

 

其中,还有文件暂时存放的位置,图片生成工具类(略)。

两个项目中都出现的东西,现在才知道总结,不羞愧吗?
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: