头像上传

上传文件
@Multipart
@POST
Observable post(@Url String url, @QueryMap Map<String, Object> map, @Part MultipartBody.Part file);

RetrofitUtils
public void post(String url, Map<String, Object> map, MultipartBody.Part body, final HttpListener listener) {
Observer observer = new Observer() {

        @Override
        public void onCompleted() {

        }

        @Override
        public void onError(Throwable e) {
            if (listener != null) {
                listener.setError(e.getMessage());
            }
        }

        @Override
        public void onNext(ResponseBody responseBody) {
            if (listener != null) {
                try {
                    listener.setSuccess(responseBody.string());
                } catch (IOException e) {
                    e.printStackTrace();
                }
            }
        }
    };


    myApiService.post(url, map, body)
            .subscribeOn(Schedulers.io())//发射(IO就是)子线程
            .observeOn(AndroidSchedulers.mainThread())//运行主线程
            .subscribe(observer);
}

model层
@Override
public void post(String url, Map<String, Object> map, final Class clazz, MultipartBody.Part body, final MyCallBack callBack) {
RetrofitUtils.getInstance().post(url, map, body, new RetrofitUtils.HttpListener() {
@Override
public void setSuccess(String jsonStr) {
Gson gson = new Gson();
Object o = gson.fromJson(jsonStr, clazz);
callBack.setSuceess(o);
}

        @Override
        public void setError(String error) {

        }
    });
}

presenter层
@Override
public void postRequest(String url, Map<String, Object> map,MultipartBody.Part body, Class clazz) {
modelImpls.post(url, map, clazz, body, new MyCallBack() {
@Override
public void setSuceess(Object suceess) {
iView.Success(suceess);
}

        @Override
        public void setError(Object error) {
            iView.Error(error);
        }
    });
}

pop弹框
private void setLinstener() {
View view = View.inflate(getActivity(), R.layout.pop, null);
pop = new PopupWindow(view, ViewGroup.LayoutParams.MATCH_PARENT, ViewGroup.LayoutParams.WRAP_CONTENT, true);
pop.setBackgroundDrawable(new ColorDrawable(Color.WHITE));
pop.showAtLocation(view, Gravity.BOTTOM, 0, 0);
TextView paizhao = (TextView) view.findViewById(R.id.paizhao);
TextView xiangce = (TextView) view.findViewById(R.id.xiangce);
TextView cancel = (TextView) view.findViewById(R.id.cancel);
//拍照
paizhao.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
Intent intent = new Intent(MediaStore.ACTION_IMAGE_CAPTURE);
intent.addCategory(“android.intent.category.DEFAULT”);
startActivityForResult(intent, 1000);
pop.dismiss();
}
});
//相册
xiangce.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
Intent intent = new Intent(Intent.ACTION_PICK);
intent.setType(“image/*”);
startActivityForResult(intent, 2000);
pop.dismiss();
}
});
//取消
cancel.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
pop.dismiss();
}
});
}

pop的xml文件

<TextView
    android:id="@+id/xiangce"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:text="相册"
    android:gravity="center"
    android:layout_marginTop="10dp"/>

<TextView
    android:id="@+id/cancel"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:text="取消"
    android:gravity="center"
    android:layout_marginTop="10dp"
    android:layout_marginBottom="30dp"/>

返回的图片
@Override
public void onActivityResult(int requestCode, int resultCode, Intent data) {
// TODO Auto-generated method stub
super.onActivityResult(requestCode, resultCode, data);
if (requestCode == 1000) {//拍照
Bitmap bitmap = data.getParcelableExtra(“data”);
Uri uri = Uri.parse(MediaStore.Images.Media.insertImage(getActivity().getContentResolver(), bitmap, null,null));
wodeImgs.setImageURI(uri);
String[] filePathColumn = {MediaStore.Images.Media.DATA};
Cursor cursor = getActivity().getContentResolver().query(uri,
filePathColumn, null, null, null);
cursor.moveToFirst();
int columnIndex = cursor.getColumnIndex(filePathColumn[0]);
//picturePath就是图片在储存卡所在的位置
String picturePath = cursor.getString(columnIndex);
cursor.close();

        File file = new File(picturePath);
        RequestBody requestBody1 = RequestBody.create(MediaType.parse("image/*"), file);
        MultipartBody.Part part = MultipartBody.Part.createFormData("file", file.getName(), requestBody1);
        maps.put("uid", 23807);
        presenterImpls.postRequest(Contacts.FILE_UPLOAD_URL, maps, part, Header.class);
    }
    if (requestCode == 2000) {//相册
        Uri uri = data.getData();
        wodeImgs.setImageURI(uri);
        String[] filePathColumn = {MediaStore.Images.Media.DATA};
        Cursor cursor = getActivity().getContentResolver().query(uri,
                filePathColumn, null, null, null);
        cursor.moveToFirst();
        int columnIndex = cursor.getColumnIndex(filePathColumn[0]);
        //picturePath就是图片在储存卡所在的位置
        String picturePath = cursor.getString(columnIndex);
        cursor.close();

        File file = new File(picturePath);
        RequestBody requestBody1 = RequestBody.create(MediaType.parse("image/*"), file);
        MultipartBody.Part part = MultipartBody.Part.createFormData("file", file.getName(), requestBody1);
        maps.put("uid", 23807);
        presenterImpls.postRequest(Contacts.FILE_UPLOAD_URL, maps, part, Header.class);
    }
}

成功回调
先查询个人信息得到图片集合,在判断是否上传成功
public void Success(Object daa) {
if (daa instanceof MessageBean) {
MessageBean messageBean = (MessageBean) daa;
String icon = messageBean.getData().getIcon();
String[] split = icon.split("\|");
if(split.length>0){
String replace = split[0].replace(“https”, “http”);//图片
Uri parse = Uri.parse(replace);
Glide.with(getActivity()).load(replace).into(wodeImgs);
}
}

    if (daa instanceof Header) {
        Header header = (Header) daa;
        Log.e("aaas", header.getMsg());
    }
}

详解
public class WoDeFragment extends Fragment implements IView {

@BindView(R.id.wode_imgs)
ImageView wodeImgs;
@BindView(R.id.wode_name)
TextView wodeName;
@BindView(R.id.wode_ni_name)
TextView wodeNiName;
Unbinder unbinder;
private View v;
private PopupWindow pop;
private Map<String, Object> maps = new HashMap<>();
private Map<String, Object> map = new HashMap<>();
private PresenterImpls presenterImpls;

@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
                         Bundle savedInstanceState) {
    v = inflater.inflate(R.layout.fragment_wo_de, container, false);
    unbinder = ButterKnife.bind(this, v);
    presenterImpls = new PresenterImpls(this);
    map.put("uid", 23807);
    presenterImpls.getRequest(Contacts.USER_INFO, map, MessageBean.class);
    return v;
}

private void setLinstener() {
    View view = View.inflate(getActivity(), R.layout.pop, null);
    pop = new PopupWindow(view, ViewGroup.LayoutParams.MATCH_PARENT, ViewGroup.LayoutParams.WRAP_CONTENT, true);
    pop.setBackgroundDrawable(new ColorDrawable(Color.WHITE));
    pop.showAtLocation(view, Gravity.BOTTOM, 0, 0);
    TextView paizhao = (TextView) view.findViewById(R.id.paizhao);
    TextView xiangce = (TextView) view.findViewById(R.id.xiangce);
    TextView cancel = (TextView) view.findViewById(R.id.cancel);
    //拍照
    paizhao.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View v) {
            Intent intent = new Intent(MediaStore.ACTION_IMAGE_CAPTURE);
            intent.addCategory("android.intent.category.DEFAULT");
            startActivityForResult(intent, 1000);
            pop.dismiss();
        }
    });
    //相册
    xiangce.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View v) {
            Intent intent = new Intent(Intent.ACTION_PICK);
            intent.setType("image/*");
            startActivityForResult(intent, 2000);
            pop.dismiss();
        }
    });
    //取消
    cancel.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View v) {
            pop.dismiss();
        }
    });
}

@Override
public void onActivityResult(int requestCode, int resultCode, Intent data) {
    // TODO Auto-generated method stub
    super.onActivityResult(requestCode, resultCode, data);
    if (requestCode == 1000) {//拍照
        Bitmap bitmap = data.getParcelableExtra("data");
        Uri uri = Uri.parse(MediaStore.Images.Media.insertImage(getActivity().getContentResolver(), bitmap, null,null));
        wodeImgs.setImageURI(uri);
        String[] filePathColumn = {MediaStore.Images.Media.DATA};
        Cursor cursor = getActivity().getContentResolver().query(uri,
                filePathColumn, null, null, null);
        cursor.moveToFirst();
        int columnIndex = cursor.getColumnIndex(filePathColumn[0]);
        //picturePath就是图片在储存卡所在的位置
        String picturePath = cursor.getString(columnIndex);
        cursor.close();

        File file = new File(picturePath);
        RequestBody requestBody1 = RequestBody.create(MediaType.parse("image/*"), file);
        MultipartBody.Part part = MultipartBody.Part.createFormData("file", file.getName(), requestBody1);
        maps.put("uid", 23807);
        presenterImpls.postRequest(Contacts.FILE_UPLOAD_URL, maps, part, Header.class);
    }
    if (requestCode == 2000) {//相册
        Uri uri = data.getData();
        wodeImgs.setImageURI(uri);
        String[] filePathColumn = {MediaStore.Images.Media.DATA};
        Cursor cursor = getActivity().getContentResolver().query(uri,
                filePathColumn, null, null, null);
        cursor.moveToFirst();
        int columnIndex = cursor.getColumnIndex(filePathColumn[0]);
        //picturePath就是图片在储存卡所在的位置
        String picturePath = cursor.getString(columnIndex);
        cursor.close();

        File file = new File(picturePath);
        RequestBody requestBody1 = RequestBody.create(MediaType.parse("image/*"), file);
        MultipartBody.Part part = MultipartBody.Part.createFormData("file", file.getName(), requestBody1);
        maps.put("uid", 23807);
        presenterImpls.postRequest(Contacts.FILE_UPLOAD_URL, maps, part, Header.class);
    }
}

@Override
public void onDestroyView() {
    super.onDestroyView();
    unbinder.unbind();
}


@Override
public void Success(Object daa) {
    if (daa instanceof MessageBean) {
        MessageBean messageBean = (MessageBean) daa;
        String icon = messageBean.getData().getIcon();
        String[] split = icon.split("\\|");
        if(split.length>0){
            String replace = split[0].replace("https", "http");//图片
            Uri parse = Uri.parse(replace);
            Glide.with(getActivity()).load(replace).into(wodeImgs);
        }
    }

    if (daa instanceof Header) {
        Header header = (Header) daa;
        Log.e("aaas", header.getMsg());
    }
}

@Override
public void Error(Object err) {

}

@OnClick(R.id.wode_imgs)
public void onViewClicked(View v) {
    switch (v.getId()) {
        case R.id.wode_imgs:
            setLinstener();
            break;
    }
}

}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值