欢迎光临
我们一直在努力

Android上传图片到服务器okhttp一

 

①Android权限申请

②网络访问框架OKHttp

③内存溢出问题:图片压缩

④Android 系统7.0以上调用系统相机无效

⑤有关图片上传过程中遇到的内存溢出问题

 

 Android上传图片到服务器okhttp一

 

①HTML

 

 

②Java代码

<基本功能>

 实体类

 

适配器

 1 /*  2  *Create By 小群子 2018/12/10  3 */  4  5 public class LoadPicAdapter extends Recyclerview.Adapter<LoadPicAdapter.MyViewHolder> {  6  7  context context;  8 List<LoadFileVo> filelist = null;  9  View view;  10 int picNum = 8;//列表的图片个数最大值  11  12 public LoadPicAdapter(Context context, List<LoadFileVo> fileList) {  13 this.context = context;  14 this.fileList = fileList;  15  }  16  17 public LoadPicAdapter(Context context, List<LoadFileVo> fileList, int picNum) {  18 this.context = context;  19 this.fileList = fileList;  20 this.picNum = picNum;  21  }  22  23 public interface OnItemClickListener {  24 void click(View view, int positon);  25  26 void del(View view);  27  }  28  29  OnItemClickListener listener;  30  31 public void setListener(OnItemClickListener listener) {  32 this.listener = listener;  33  }  34  35  @Override  36 public MyViewHolder onCreateViewHolder(ViewGroup parent, int viewType) {  37  38 view = LayoutInflater.from(context).inflate(R.layout.load_item_pic, parent, false);  39 return new MyViewHolder(view);  40  }  41  42  @Override  43 public void onBindViewHolder(MyViewHolder holder, final int position) {  44  45 //通过默认设置第一个为空文件为添加退保,且在文件个数小于最大限制值的情况。当图片个数等于最大限制值,第一个则不是添加按钮  46 if (position == 0&&fileList.get(position).getBitmap()==null) {  47 holder.ivPic.setImageResource(R.drawable.addpic);//加号图片  48 holder.ivPic.setOnClickListener(new View.OnClickListener() {  49  @Override  50 public void onClick(View view) {  51  listener.click(view, position);  52  }  53  });  54  holder.ivDel.setVisibility(View.INVISIBLE);  55  holder.bg_progressbar.setVisibility(View.GONE);  56  57 } else {  58 // Uri uri = Uri.parse(fileList.get(position).getFile().getPath());  59 // holder.ivPic.setImageURI(uri);  60  61  holder.ivPic.setImageBitmap(fileList.get(position).getBitmap());  62 //使用压缩后的图片进行填充到界面上  63 
64 65 66 holder.ivDel.setVisibility(View.VISIBLE); 67 holder.bg_progressbar.setVisibility(View.VISIBLE); 68 holder.bg_progressbar.setProgress(fileList.get(position).getPg()); 69 } 70 71 72 holder.ivDel.setOnClickListener(new View.OnClickListener() { 73 @Override 74 public void onClick(View view) { 75 //判断图片是否上传,上传后将无法删除 76 if (fileList.get(position).isUpload()) { 77 Toast.makeText(context, "该图片已上传!", Toast.LENGTH_SHORT).show(); 78 } else { 79 fileList.remove(position); 80 if (fileList.size()==picNum-1&&fileList.get(0).getBitmap()!=null){ 81 fileList.add(0,new LoadFileVo()); 82 }//如果数量达到最大数时,前面的加号去掉,然后再减去时,则添加前面的加号 83 notifyDataSetChanged(); 84 if (listener!=null){ 85 listener.del(view);//传递接口,计算图片个数显示在界面中 86 } 87 88 } 89 } 90 }); 91 92 93 } 94 95 @Override 96 public int getItemCount() { 97 return fileList.size(); 98 } 99 100 101 static class MyViewHolder extends RecyclerView.ViewHolder { 102 @BindView(R.id.ivPic) 103 ImageView ivPic; 104 @BindView(R.id.ivDel) 105 ImageView ivDel; 106 @BindView(R.id.bg_progressbar) 107 ProgressBar bg_progressbar; 108 109 View view; 110 111 112 MyViewHolder(View view) { 113 super(view); 114 this.view = view; 115 ButterKnife.bind(this, view); 116 } 117 } 118 }

 

item 布局//布局自行优化

 

 

《核心代码》

 

注:这里需要在Android中配置一个proveder 具体请参考 Android 系统7.0以上调用相机兼容问题

《获取返回的图片》

 

图片上传到后台OKhttp

 

  • 海报
海报图正在生成中...
赞(0) 打赏
声明:
1、本博客不从事任何主机及服务器租赁业务,不参与任何交易,也绝非中介。博客内容仅记录博主个人感兴趣的服务器测评结果及一些服务器相关的优惠活动,信息均摘自网络或来自服务商主动提供;所以对本博客提及的内容不作直接、间接、法定、约定的保证,博客内容也不具备任何参考价值及引导作用,访问者需自行甄别。
2、访问本博客请务必遵守有关互联网的相关法律、规定与规则;不能利用本博客所提及的内容从事任何违法、违规操作;否则造成的一切后果由访问者自行承担。
3、未成年人及不能独立承担法律责任的个人及群体请勿访问本博客。
4、一旦您访问本博客,即表示您已经知晓并接受了以上声明通告。
文章名称:《Android上传图片到服务器okhttp一》
文章链接:https://www.456zj.com/5629.html
本站资源仅供个人学习交流,请于下载后24小时内删除,不允许用于商业用途,否则法律问题自行承担。

评论 抢沙发

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址