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在多图上传一直考虑漏掉了图片顺序的问题. 我的网站在用户上传图片文章的时 ...
随机推荐
- java之JVM(二)
- mysql5.7 timestamp错误:there can be only oneTIMESTAMP column with CURRENT_TIMESTAMP in DEFAULT or ON UPDATE
#1293 - Incorrect table definition; there can be only oneTIMESTAMP column with CURRENT_TIMESTAMP in ...
- ORA-28000 帐户已被锁定问题处理
1.问题描述 应用监控程序报警ORA-28000,PL/SQL无法登陆数据库 2.问题分析 oracle11g中默认在default概要文件中设置了 “FAILED_LOGIN_ATTEMPTS=10 ...
- Linux系统下进入目录文件需要什么权限?
在Linux下进入目录需要什么权限? 1--让我们先来了解一下Linux下一个文件有哪些权限?(在linux下一切皆文件) 一个文件可以具有的权限有:可读.可写.可执行权限 r 可读权限---read ...
- elasticsearch多字段搜索
https://blog.csdn.net/Ricky110/article/details/78888711 多字段搜索多字符串查询boost 参数 “最佳” 值,较为简单的方式就是不断试错,比较合 ...
- redis安装,windows,linux版本并部署服务
一.使用场景 项目中采用数据库访问量过大或访问过于频繁,将会对数据库带来很大的压力.redis数据库是以非关系数据库的出现,后来redis的迭代版本支持了缓存数据.登录session状 ...
- 微信小程序电商实战(-)商城首页
首先在app.json中配置页面和底部tabbar { "pages":[ "pages/index/index", "pages/kind/kind ...
- mysql 几种日志
mysql 5.5 有以下几种日志: 错误日志(error log): log-err 查询日志(general query log): log 慢查询日志: -log-slow-queries ...
- SpringBoot Actuator
SpringBoot Actuator 提供了检查项目内部信息的一整套API,通常在项目启动时可以看到. 1.引入依赖包 <dependency> <groupId>org.s ...
- 考研计算机复试(广东工业大学C语言复试2018笔试题)(精华题选)
1.obj文件是:(二进制文件) 2.函数func(float x){printf("%f",x+x);}的类型是() A.void B.int类型 C.无法确定 3.若有定义:i ...