Android仿微信图片选择器

很多项目要用到图片选择控件,每次都要写一大堆逻辑。于是基于图片选择组件(PhotoPicker)封装了一个控件PhotoUploadView。方便简易,一键集成,几句代码就可以添加类似微信的图片选择控件了。下面介绍一下该控件有些什么特点以及怎么使用。先看图:

效果如上图,点击加号弹出选择框,目前提供了两种形式,一个如图所见的PopupWindow,另一个是MaterialDialog,选择拍照或者从图库获取,从图库获取后就进入图二,选择完之后就图三或图四这里因为很多项目需要不一样,所以特别封装了:图三的情况:上传成功之后进度提示隐藏和失败重发提示隐藏,或者是批量上传不需要进度提示的和失败重发的。图四的情况:选择完后遍历上传,有可能出现某一张上传失败。点击图中的重发按钮触发重发的事件当然如果你觉得删除和重发的icon难看,完全可以自己取代替换它,删除的图标叫icon_photo_view_cancel,重发的图标叫icon_photo_view_resend,只需要按照这个命名,然后放在自己项目底下的mipmap包,控件会自动替换,不需要去set什么。

先说依赖,可以在你项目的build.gradle添加依赖compile 'com.github.BmobSnail:PhotoUploadView:1.0.0'
又或者在我的github下载库下来再导入。然后在你的布局用使用改控件,PictureUploadView

<upload.view.PictureUploadView android:id="@+id/pictureUploadView" android:layout_width="match_parent" android:layout_height="wrap_content" android:layout_margin="@dimen/partition_normal" android:horizontalSpacing="2dp" android:numColumns="3" android:scrollbars="none" android:verticalSpacing="1dp" />

看着这些属性是不是很熟悉,没错!它就是基础GridView的,所以完全可以当作GridView,GridView有的它也有,简单易懂了吧。添加完这一步你就可以在布局看到图一那样有个加号的控件了。然后就是写代码的节奏了。控件可以选择设置选择原图路径还是压缩后的路径,因此就有了设置缓存路径这一步在你的application中初始化一下缓存路径,以后的压缩后的图片都缓存在这路径底下

String cache = StorageUtils.getOwnCacheDirectory(this, "Upload/photo").getAbsolutePath(); PictureLibrary.init(this, cache + "/");

紧接着就是使用了,控件执行初始化init,之所以还要一次这样初始化步骤是有项目需求是要编辑已发送成功的带图片的帖子,那些图也要显示在选择图片控件上,所以有第五个参数,获取到图片数据的集合后传进去,就能显示那些网络的图片,这时候可以删除添加像普通那样使用了。setShowMethod是使用那种风格显示弹框

mPictureUploadView = (PictureUploadView) findViewById(R.id.pictureUploadView); //第一个参数上下文 //第二个参数有CHAT(返回原图路径),UPLOAD(返回压缩路径) //第三个参数选择个数//第四个参数默认为true(可不填),false为不显示上传进度 //第五个参数默认为数据集合List(可不填) mPictureUploadView.init(this, UploadPicHelper.UPLOAD, 3, true); mPictureUploadView.setShowMethod(PictureUploadView.POPUPWINDOW);//POPUPWINDOW,DIALOGmPictureUploadView.setUploadCallBack(this);

设置一下回调方法并实现PictureUploadView.UploadCallBack并重写两个方法,添加的回调和删除的回调,mUploadMap为上传成功之后保存成功的hashMap,mLocalMap为本地记录添加和删除的hashMap,之后的上传成功和上传失败要根据这个map的tag来决定哪个图片的重发按钮该显示还是隐藏的。

private Map<String, String> mUploadMap, mLocalMap; //添加图片 @Override public void onAddCallback(String path, String tag) { mLocalMap.put(tag, path); //upload(path, tag); } //删除图片 @Override public void onRemoveCallback(String tag) { mUploadMap.remove(tag); mLocalMap.remove(tag); }

最后再重写一下这个onActivityResult,不重写不会除非上面两个回调方法,所以就看不到有图片添加

@Override protected void onActivityResult(int requestCode, int resultCode, Intent data) { if (resultCode == RESULT_OK) { mPictureUploadView.setResult(requestCode, resultCode, data); } super.onActivityResult(requestCode, resultCode, data); }

只需要上面这几步就可以实现像微信的那个图片选择控件一样了,其它上传回调的处理参考github里面的demo,有兴趣的朋友可以试试,欢迎大家指正。

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持脚本之家。

时间: 2024-08-04 01:12:27

Android仿微信图片选择器的相关文章

Android仿微信图片选择器_Android

很多项目要用到图片选择控件,每次都要写一大堆逻辑.于是基于图片选择组件(PhotoPicker)封装了一个控件PhotoUploadView.方便简易,一键集成,几句代码就可以添加类似微信的图片选择控件了.下面介绍一下该控件有些什么特点以及怎么使用.先看图: 效果如上图,点击加号弹出选择框,目前提供了两种形式,一个如图所见的PopupWindow,另一个是MaterialDialog,选择拍照或者从图库获取,从图库获取后就进入图二,选择完之后就图三或图四这里因为很多项目需要不一样,所以特别封装了

Android仿微信图片点击全屏效果_Android

废话不多说先看下效果 先是微信的 再是模仿的 先说下实现原理再一步步分析 这里总共有2个Activity一个就是主页一个就是显示我们图片效果的页面参数通过Intent传送素材内容均来自网络(感谢聪明的蘑菇) 图片都是Glide异步下的下的下的重要的事情说三次然后就是用动画做放大操作然后显示出来了并没有做下载原图的实现反正也是一样 下载下来Set上去而且动画都不需要更简便. OK我们来看分析下 obj目录下分别创建了2个对象一个用来使用来处理显示页面的图片尺寸信息以及位置信息还有一个是用来附带UR

Android仿微信图片点击全屏效果

废话不多说,先看下效果: 先是微信的 再是模仿的 先说下实现原理,再一步步分析 这里总共有2个Activity一个就是主页,一个就是显示我们图片效果的页面,参数通过Intent传送,素材内容均来自网络,(感谢聪明的蘑菇) 图片都是Glide异步下的,下的,下的重要的事情说三次,然后就是用动画做放大操作然后显示出来了(并没有做下载原图的实现,反正也是一样 下载下来Set上去而且动画都不需要更简便). OK,我们来看分析下 obj,目录下分别创建了2个对象,一个用来使用来处理显示页面的图片尺寸信息以

Android仿微信图片上传,可以选择多张图片,缩放预览,拍照上传等

仿照微信,朋友圈分享图片功能 .可以进行图片的多张选择,拍照添加图片,以及进行图片的预览,预览时可以进行缩放,并且可以删除选中状态的图片 .很不错的源码,大家有需要可以下载看看 . 微信 微信 微信 微信 下载地址 : 微信上传图片源码 很多网友不知道怎么获取图片路径,这里贴出来: String path = Bimp.tempSelectBitmap.get(position).getImagePath(); //部分代码如下 package com.king.photo.activity;

Android仿微信照片选择器实现预览查看图片_Android

好了下面进入正题,我们先看一下实现效果吧: 下面来介绍一下代码:  本思路就是: 1.先到手机中扫描jpeg和png的图片 2.获取导图片的路径和图片的父路径名也就是文件夹名 3.将图片路径和文件夹名分别添加导数据源中 4.数据源有了就是显示了,文件夹显示是利用的popwindow,而图片显示则是GridView 看一下具体代码: 首先开启一个线程去扫描图片 /** * 利用ContentProvider扫描手机中的图片,此方法在运行在子线程中 完成图片的扫描,最终获得jpg最多的那个文件夹 *

Android仿微信照片选择器实现预览查看图片

好了下面进入正题,我们先看一下实现效果吧: 下面来介绍一下代码: 本思路就是: 1.先到手机中扫描jpeg和png的图片 2.获取导图片的路径和图片的父路径名也就是文件夹名 3.将图片路径和文件夹名分别添加导数据源中 4.数据源有了就是显示了,文件夹显示是利用的popwindow,而图片显示则是GridView 看一下具体代码: 首先开启一个线程去扫描图片 /** * 利用ContentProvider扫描手机中的图片,此方法在运行在子线程中 完成图片的扫描,最终获得jpg最多的那个文件夹 */

Android仿微信图片点击浏览的效果_Android

本篇我们来做一个类似于微信的图片点击浏览的效果,点击小图图片后会放大至全屏显示,且中间有一个2D平滑过渡的效果. 思路如下: 首先,从图片缩略界面跳转到图片详情页面,应该是从一个Activity跳转到另外一个Activity,应该图片详情页面也有很多操作,用View或者Dialog不是很好.所以现在难点就是,如何使得前一个界面的ImageView在另外一个界面做缩放切割动画. 其次,一般缩略界面的ImageView的是正方形的,并且是CENTER_CROP缩放属性的.CENTER_CROP属性会

Android 高仿QQ图片选择器_Android

当做一款APP,需要选择本地图片时,首先考虑的无疑是系统相册,但是Android手机五花八门,再者手机像素的提升,大图无法返回等异常因数,导致适配机型比较困难,微信.QQ都相继的在自己的APP里集成了图片选择功能,放弃了系统提供的图片选择器,这里仿造QQ做了一个本地图片选择器,PS:之前有人说"仿"写成"防"了,今儿特意注意了下,求不错. 先上一张效果图,无图无真相啊~~~ 实现的效果大概是这样的: 1.单选:跳转到本地图片选择文件夹,选择文件夹后,进入到该文件夹下

Android高仿微信图片选择功能的PhotoPicker

类似于微信修改头像的功能基本上每个app都会有,以前公司开发的项目就有修改头像的功能,但是用的Android系统自带的图片 选择器.用Android系统的图片选择器有个好处就是稳定,不会有什么问题.但也有它的缺点,比如不可定制,我们想要修改一下符合自己app的风格无法 做到. 既然大部分app都要用到图片选择器,为啥我不自己写一个呢?难不成每次都用系统自带的?那显得太没水平.所以,我就有了一个自己编写一个图片选择器的想法,以后只要有项目需要这个功能,直接拿来用就行了,这多爽! 其实github上