LPick-图片选择器

图片选择器 github地址

效果图

lpick.gif
感谢

这个项目是基于RxGalleryFinal的二次开发,使用到的开源项目如下:

  • PermissionsDispatcher 处理动态权限申请
  • uCrop 非常好用的图片裁剪库
  • picasso 用来图片加载
  • PhotoView 大图显示
  • rxjava和rxandroid 用于异步请求
  • SuperRecyclerView 列表加载更多
  • leakcanary 内存泄漏检查
  • butterknife View绑定
  • logger log日志打印
用法如下:
//开启选择图库
LPick.getInstance()
          .withPickCount(5) //最多选择图片
          .withSpanCount(4) //配置列数
          .pick(this,REQUEST_CODE);
//开启裁剪
 LPick.getInstance()
          .useSourceImageAspectRatio()
          .crop(PickImgSimpleActivity.this,Uri.fromFile(new File(model.mImgPath)),createUriSave());

@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data)
{
    super.onActivityResult(requestCode, resultCode, data);
    if (requestCode == REQUEST_CODE && resultCode == Activity.RESULT_OK)
    {
        //获取选择的图片
        mPickModelList = data.getParcelableArrayListExtra(Constances.PICK_SOUCRE_KEY);
        mAdapter.notifyDataSetChanged();
    }else if (resultCode == RESULT_OK && requestCode == LPick.REQUEST_CROP)
    {
        //获取裁剪结果
        Uri output = LPick.getOutput(data);
        Logger.d("裁剪结果:" + output.getPath());
    }
}
相关知识

现在成熟好用的图片选择器项目很多,为什么我要重复造轮子呢?因为Google提供了很多好用的工具类,没找的合适的项目来实践下,所有就想着写个图片选择器,把较新的知识用上。

  • DiffUtil是Google提供的一个数据比较工具类
  • Rxjava就不用说了,非常好用。灵活使用操作符,可以让代码显得更优雅
    ......

重要

关于图片的压缩,因为没有相关的知识,所有都是按不超过最大尺寸,等比例缩放来压缩图片。如果有好建议,请提issues,谢谢

//裁剪载入最大尺寸
public final static int MAX_CROP_SIZE = 1500;
//裁剪输出最大尺寸
public final static int MAX_RESULT_SIZE = 1000;
//小图最大尺寸
public final static int MAX_THUMB_SIZE = 300;
//大图最大尺寸
public final static int MAX_BIG_SIZE = 800;

这个很完善的项目,如果用在项目上,可以试试这个TelegramGallery

项目还在更新中...

你可能感兴趣的:(LPick-图片选择器)