关于图片上传

597 阅读2分钟

以前的那个非常复杂且难以维护。

1、拍照上传
2、相册上传
3、权限申请

参考:

<uses-feature android:name="android.hardware.camera" />
    <!--相机权限-->
    <uses-permission android:name="android.permission.CAMERA" />
    <!--写入SD卡的权限:如果你希望保存相机拍照后的照片-->
    <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
    <!--读取SD卡的权限:打开相册选取图片所必须的权限-->
    <uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE" />
--------------------- 
作者:code小生 
来源:CSDN 
原文:https://blog.csdn.net/wufeng55/article/details/80918749 
版权声明:本文为博主原创文章,转载请附上博文链接!

一、打开相机

/**
     * 打开系统相机(亲测可用)
     */
    private void openSysCamera() {
        Intent cameraIntent = new Intent(MediaStore.ACTION_IMAGE_CAPTURE);// 打开系统相机
        // 将拍摄的照片保存在SD卡
        cameraIntent.putExtra(MediaStore.EXTRA_OUTPUT, Uri.fromFile(
                new File(Environment.getExternalStorageDirectory(), imgName)));
        // 开启跳转        
        startActivityForResult(cameraIntent, CAMERA_RESULT_CODE);
    }

部署照片

@Bind(R.id.img)
SimpleDraweeView Img;
private File file;

file = new File(uri.getPath());
Img.setImageURI(uri);

总之,拍照或是相册选择,裁剪完需要调用保存方法,才能在本地相册显示。 好吧,不调用也能在手机上找到,就是格式有些问题。


对某图片选择界面对分析

布局:
1、三列,第一张是“拍摄照片”,其他的是照片。
2、点击后,除第一张外都有“选择”和“未选择”两种状态展示,且最多选择9张。
3、点击图片、选中后点击预览都可以进预览界面,在预览界面有“原图”、“完成”、“选择”三个按钮,选择后原图展示图片大小信息。
4、未选择显示当前图片排名和总图片数,选择后显示选择的数量和当前排名。

下面我们将逐一揭开它的神秘面纱:
1、这是一个GridView嘛,三列岂不好说,布局文件中增加属性:android:numColumns="3"。
第一张差异显示要从适配器入手,每个照片都有两种属性:显示“拍摄照片”或者显示照片。我们以此对其区别展示:

@Override  
public View getView(final int position, View convertView, ViewGroup parent){
    int itemViewType = getItemViewType(position);// 获取照片属性的方法,如何获取我们稍后在谈
    if(itemViewType == ITEM_TYPE_CAMERA){// 即,如果是显示“拍摄照片”
        convertView = LayoutInflater.from(mActivity).inflate(R.layout.adapter_show_camera, parent, false);
        // mImageSize的值其实是获取的控件宽度,这样就成了一个正方形,mImageSize = Utils.getImageItemWidth(mActivity);
        convertView.setlayoutParams(new AbsListView.LayoutParams(ViewGroup.LayoutParams.MATCH_PARENT, mImageSize));
        convertView,setOnClickListener(...);
    } else {// 显示图片
        // holder复用
        final ViewHolder holder;
        if(convertView == null){
            convertView = LayoutInflater.form(mActivity).inflate(R.layout.adapter_image_list_item, parent, false);
            convertView.setlayoutParams(new AbsListView.LayoutParams(ViewGroup.LayoutParams.MATCH_PARENT, mImageSize));
        }
    }
}