Android选择多图上传
大概是这么个效果,类似与微信朋友圈选择图片的效果,如下图所示

首先,图片预览的这个界面我用的是GridView,当然也可以使用GridLayout,根据需求制定行列即可。同时重写适配器实现末尾是添加图片的ImageView,GridView的item可以用imageview,也可以用PhotoView,加载图片可以用Glide或者fresco.
实现最后为添加图片的核心代码为:
@Override
public int getCount() {
//mlist为图片源 ,+1为最后添加图片 int count = mList == null ? 1 : mList.size() + 1;
if (count > MAX_PICS) { //MAX_PICS为图片数量限制
return mList.size();
} else {
return count;
}
}
@Override
public View getView(int position, View convertView, ViewGroup parent) {
convertView = inflater.inflate(R.layout.grid_item, parent,false);
ImageView iv = (ImageView) convertView.findViewById(R.id.iv_pic);
if (position < mList.size()) {
//前面的正常加载图片 picUrl为图片路径
String picUrl = mList.get(position);
Glide.with(mContext).load(picUrl).into(iv);
} else {
//最后一个显示添加图片按钮
iv.setImageResource(R.mipmap.icon_add_pic);
}
return convertView;
}
实现添加图片的功能需要使用到PictureSelector这个开源库,比较推荐这个的原因是因为通过配置一些参数可以非常方便的选择显示内容的类型,可以支持视频图片音频等,而且在他的文档中也提供了常见的异常的解决办法,通过结果回调就可以方便的获得图片的url了
@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
super.onActivityResult(requestCode, resultCode, data);
if (resultCode == RESULT_OK) {
switch (requestCode) {
case PictureConfig.CHOOSE_REQUEST:
// 图片、视频、音频选择结果回调
List<LocalMedia> selectList = PictureSelector.obtainMultipleResult(data);
// 例如 LocalMedia 里面返回三种path
// 1.media.getPath(); 为原图path
// 2.media.getCutPath();为裁剪后path,需判断media.isCut();是否为true 注意:音视频除外
// 3.media.getCompressPath();为压缩后path,需判断media.isCompressed();是否为true 注意:音视频除外
// 如果裁剪并压缩了,以取压缩路径为准,因为是先裁剪后压缩的
adapter.setList(selectList);
adapter.notifyDataSetChanged();
break;
}
}
}
总体实现思路就是这样的了,目前使用情况正常,可以根据实际的需求做出相应的修改即可。
Android选择多图上传的更多相关文章
- 微信企业号办公系统-JSSDK上传图片(多图上传)
在开发微信企业号办公系统中,涉及到了图片上传功能,一开始使用的flash插件上传方法,在苹果手机上可以调用相机直接拍摄照片,但在安卓手机上只能选择照片. 微信jssdk-api带有一套完整的调用选择本 ...
- Android仿微信图片上传,可以选择多张图片,缩放预览,拍照上传等
仿照微信,朋友圈分享图片功能 .可以进行图片的多张选择,拍照添加图片,以及进行图片的预览,预览时可以进行缩放,并且可以删除选中状态的图片 .很不错的源码,大家有需要可以下载看看 . 微信 微信 微信 ...
- HTML5 原生API input file 来实现多图上传,并大图预览
闲来无事,突然想用原生来实现图片的多图上传. 一.效果图大致如下: 1.上传时可以选择多图 2.上传之后缩略图下过图如下: 3.点击缩略图,大图展示当前所点击的图片,并可以左右滑动查看其它的缩略图对应 ...
- yii2组件之多图上传插件FileInput的详细使用
作者:白狼 出处:http://www.manks.top/yii2_multiply_images.html 本文版权归作者,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连 ...
- PHP之:多图上传
撰写日期:2016-6-30 15:17:35 Thursday 参考 http://a3147972.blog.51cto.com/2366547/1381136 (08-05ThinkPHP+sw ...
- Android端通过HttpURLConnection上传文件到服务器
Android端通过HttpURLConnection上传文件到服务器 一:实现原理 最近在做Android客户端的应用开发,涉及到要把图片上传到后台服务器中,自己选择了做Spring3 MVC HT ...
- js移动端/H5同时选择多张图片上传并使用canvas压缩图片
最近在做一个H5的项目,里边涉及到拍照上传图片的功能以及识别图片的功能,这里对识别图片的功能不做赘述,不属本文范畴.我在做完并上线项目后,同事跟我提了一个要求是可不可以同时选择多张图片上传,我做的时候 ...
- springBoot+ vue+ Element-ui实现合并多图上传(一次请求多张图片)
这次上传使用的是Elemet-ui的uoload上传组件,组件预留的钩子回调还是比较充足的. 1: 实现多图上传主要用到以下两个属性: 下面讲一下属性使用: <el-upload :actio ...
- ueditor编辑器多图上传为什么顺序打乱了
我上一个版本用的是ueditor1.3.6,自从1.4.2版以后,“前端上传模块统一改用webuploader”,ueditor在多图上传一直考虑漏掉了图片顺序的问题. 我的网站在用户上传图片文章的时 ...
随机推荐
- mybatis多参数传递,延迟加载,缓存,注解开发
1.Mybatis的多参数传递方式 需求:更具id 和 名字查询用户: select * from user where id = ? and name = ?: 1):QueryVo 或者 User ...
- Docker中安装elasticsearch6.7.1
先拉取镜像 docker pull docker.elastic.co/elasticsearch/elasticsearch:6.7.1 然后创建容器 (这是一条长的命令!!!) dock ...
- 前后端token机制 识别用户登录信息
Token,就是令牌,最大的特点就是随机性,不可预测.一般黑客或软件无法猜测出来. 那么,Token有什么作用?又是什么原理呢? Token一般用在两个地方: 1)防止表单重复提交. 2)anti c ...
- python-文件读写
python对文件的操作对文件操作的步骤:1.打开文件2.读写文件3.关闭文件 一.读取文件的方法有三种:read(),readline(),readlines()f.readline() #每次读出 ...
- 有价值的IPFS博客
前一阵子研究IPFS,回头找资料有些找不到,再次汇总一下有价值的IPFS资料 戴嘉乐-IPFS的本质架构及应用:https://blog.csdn.net/u012357002/article/d ...
- java操作svn工具类SvnUtil
直接上代码,工作中使用的版本,记录下. public class SvnUtil { private static Logger logger = Logger.getLogger(SvnUtil.c ...
- learning coap protocol
reference: http://coap.technology/spec.html
- 《程序设计入门——C语言》翁恺老师 第四周编程练习记录
1 奇偶个数(5分) 题目内容: 你的程序要读入一系列正整数数据,输入-1表示输入结束,-1本身不是输入的数据.程序输出读到的数据中的奇数和偶数的个数. 输入格式: 一系列正整数,整数的范围是(0,1 ...
- 文件属性和ls -lhi
第1章 无法上网及拍错过程 远程连接拍错过程 1. 查看路是否通畅 2. 是否有拦击 iptables(防火墙) selinux 3. 查看是否有条件 ...
- Vue.directive添加全局指令详解
自定义指令创建: Vue.directive( 'mycolor(指令名称:推荐全部小写,驼峰命名会出现问题,看最后面)' , { bind:function(){}, //本例只介绍inserted ...