关于PhotoPicker的改造(以PhotoPicker为基础)
来源:互联网 发布:vs2010数据库开发实例 编辑:程序博客网 时间:2024/05/18 07:19
首先非常感谢https://github.com/donglua/PhotoPicker点击打开链接提供了这么优秀的图片选择框架,但是有些小问题,在使用https://github.com/glassLake/PhotoPicker点击打开链接的时候,不能够直接使用多次进入PhotoPicker选择图片的功能(类似于记忆上一次选择项的功能),还有图片的选择有限制等。正所谓自己动手,丰衣足食,所以我就自己来着手改造了下。
转载请注明出处:http://blog.csdn.net/u010724819/article/details/53415023
效果图如下:
最初,我在项目目录utils中添加了一个工具类,MyPhotoUtils
package me.iwf.photopicker.utils;import android.app.Application;import java.util.HashMap;import java.util.Map;/** * Created by Jiang on 2016/10/28. */public class MyPhotoUtil extends Application{ public static Map mPhotos; public static int FORRESULT = 100; public static void putPhotoMap(Object mSelectedphotos) { mPhotos = new HashMap<String,String>(); mPhotos.put("photos",mSelectedphotos); } public static Object getPhotoMap(){ if(mPhotos.get("photos") == null){ return 0; }else{ return mPhotos.get("photos"); } }}
在这里我最初的处理是在原项目自定义RecycleView点击右上角删除按钮的时候,进行了全局变量的更新:
holder.deleteBtn.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { photoPaths.remove(position); MyPhotoUtil.putPhotoMap(photoPaths); notifyDataSetChanged(); } });
再其次来处理进入图片详情的时候,我们来做的图片删除处理,这里也是将其路径集合放入了全局变量:
if (action == MultiPickResultView.ACTION_SELECT){ titlebar.setRitht(getApplicationContext().getResources().getDrawable(R.drawable.__picker_delete), "", new View.OnClickListener() { @Override public void onClick(View v) { int position = pagerFragment.getViewPager().getCurrentItem(); if (pagerFragment.getPaths().size() >0){ pagerFragment.getPaths().remove(position); pagerFragment.getViewPager().getAdapter().notifyDataSetChanged(); if (pagerFragment.getPaths().size() ==0){ titlebar.setTitle(getString(R.string.__picker_preview) +" "+getString(R.string.__picker_image_index, 0, pagerFragment.getPaths().size())); } MyPhotoUtil.putPhotoMap(pagerFragment.getPaths()); } } }); }
处理完了这两处的全局集合,我们来处理下回调事件OnActivityResult()
@Override protected void onActivityResult(int requestCode, int resultCode, Intent data) { super.onActivityResult(requestCode, resultCode, data); Intent datad = data; //这里捕捉异常 try{ tempPathslook = data.getStringArrayListExtra(PhotoPicker.KEY_SELECTED_PHOTOS); }catch (Exception ex){// Toast.makeText(TestActivity.this,ex.toString(),Toast.LENGTH_SHORT).show(); } //判断当前的集合和返回集合的差异,如果返回的更多,则添加进去,否则,则将其替换为返回的集合 if(tempPathslook.size()>pathslook.size()){ for (String temp : tempPathslook) { if (!pathslook.contains(temp)) { pathslook.add(temp); } } }else{ pathslook = tempPathslook; }// data.putStringArrayListExtra(PhotoPicker.KEY_SELECTED_PHOTOS, pathslook);// recyclerView.onActivityResult(requestCode,resultCode,data); MyPhotoUtil.putPhotoMap(pathslook);// ArrayList<String> temp = pathslook;// recyclerView.showPics(temp); recyclerView.init(this, MultiPickResultView.ACTION_SELECT, pathslook);}
在OnResume()方法中,也做了显示的处理:
@Override protected void onResume() { super.onResume(); try { pathslook = (ArrayList<String>) MyPhotoUtil.getPhotoMap(); } catch (Exception ex) {// Toast.makeText(this, ex.toString(), Toast.LENGTH_SHORT).show(); } if(pathslook!=null){ recyclerView.init(this, MultiPickResultView.ACTION_SELECT, pathslook); } }
最终的图片本地路径集合全部存储在了对象:pathslook之中,大家可以使用它来做相关的操作。
文章只是写出了一些重点修改的部分,其余的诸如修改每行显示的数目等请参照原开源框架或者我的源码。
附上源码地址:https://github.com/yeluowuhen502/MyPhotoTest点击打开链接
再次感谢原原作者提供这么好的开源框架,本文只是在其基础上做了一些修改。
1 0
- 关于PhotoPicker的改造(以PhotoPicker为基础)
- Android带多选功能的PhotoPicker
- GitHub上PhotoPicker的使用方法
- PhotoPicker的深度使用 自定义PhotoPicker 更改PhotoPicker默认黑色背景
- Android中多图片选择器PhotoPicker库的使用(仿微信,秒杀MultiImageSelector)
- android 图片选择器 photopicker
- <Android 开源库> PhotoPicker 从头到脚
- 图片选择器photopicker框架
- 一个仿微信的Android图片选择组件:PhotoPicker
- 一个仿微信的Android图片选择组件:PhotoPicker
- 一个仿微信的Android图片选择组件:PhotoPicker
- Android笔记:一个仿微信的Android图片选择组件:PhotoPicker
- <Android 开源库> Matisse,来自知乎的PhotoPicker
- Android简单实现仿微信选择图片以及拍照(PhotoPicker)
- Android中多图片选择器PhotoPicker库的使用(仿微信,秒杀MultiImageSelector)自己修改的多选
- 使用PhotoPicker完成上传头像
- 关于Bugly版本兼容Android7.0 FileProvider与PhotoPicker冲突问题
- 微信 ui 版的 PhotoPicker,最大程度地简化使用.
- 如何避免野指针
- 展望
- Android设计模式之Builder模式
- 张孝祥[致敬]-多线程学习第07课-jdk1.5后增加的多线程高级部分
- 占位
- 关于PhotoPicker的改造(以PhotoPicker为基础)
- C#点击按钮响应load事件代码
- 【读书笔记】SAP后勤模块实施攻略笔记(乐立骏 著)
- 模拟JDK动态代理
- 1.MNIST库之初探---下载和读取图片
- 实现掘金导航栏+float按钮其实可以很简单
- [C++]结构体、共同体和枚举类型
- Android设计模式之观察者模式
- 视频前背景分离论文之(4) A Probabilistic Approach to Robust Matrix Factorization