Android 图片选择器(三)

作者: a1bb76bf4859 | 来源:发表于2016-01-05 15:40 被阅读6683次

    ImageSelector 简介

    Android自定义相册,实现了拍照、图片选择(单选/多选)、ImageLoader无绑定 任由开发者选择

    GitHub 项目地址

    多选多选
    截图截图

    Download Apk

    ImageSelector 优点

    • UI重改
    • 所有功能可配置
    • 解决OOM情况
    • 图片多选、单选
    • 支持裁剪功能

    Gif展示

    单选截图单选截图
    多选多选

    版本说明

    1.3.0

    • 合并 由 xxxifan 提供的优化方案,现在在fragment 中也可以进行调用
    • 修改如果手机中没有图片,选择图片夹闪退的问题
    • 隐藏调用该图片选择器时,所拍摄的照片和裁剪的图片,改善选择图片时存在的垃圾图片。
    • 修改最低版本兼容,由原来的 API 15 降到 API 14,兼容 Android 4.0 以上系统。

    使用说明

    步骤一:

    通过Gradle抓取

    dependencies {
        compile 'com.yancy.imageselector:imageselector:1.3.0'
    }
    

    步骤二:

    AndroidManifest.xml 中 添加 如下权限

    <!-- 从sdcard中读取数据的权限 -->
    <uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE" />
    <!-- 往sdcard中写入数据的权限 -->
    <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
    
    

    步骤三:

    创建 图片加载器 (其中可以按照 喜好 使用不同的 第三方图片加载框架 以下为Glide示例)
    public class GlideLoader implements com.yancy.imageselector.ImageLoader {
    
       @Override
       public void displayImage(Context context, String path, ImageView imageView) {
           Glide.with(context)
                   .load(path)
                   .placeholder(com.yancy.imageselector.R.mipmap.imageselector_photo)
                   .centerCrop()
                   .into(imageView);
       }
    
    }
    
    

    步骤四:

    配置 ImageConfig

    UI 视图配置
     ImageConfig imageConfig
          = new ImageConfig.Builder(new GlideLoader())
         // 如果在 4.4 以上,则修改状态栏颜色 (默认黑色)
         .steepToolBarColor(getResources().getColor(R.color.blue))
         // 标题的背景颜色 (默认黑色)
         .titleBgColor(getResources().getColor(R.color.blue))
         // 提交按钮字体的颜色  (默认白色)
         .titleSubmitTextColor(getResources().getColor(R.color.white))
         // 标题颜色 (默认白色)
         .titleTextColor(getResources().getColor(R.color.white))
         .build();
    
    多选
     ImageConfig imageConfig
            = new ImageConfig.Builder(new GlideLoader())
            .steepToolBarColor(getResources().getColor(R.color.blue))
            .titleBgColor(getResources().getColor(R.color.blue))
            .titleSubmitTextColor(getResources().getColor(R.color.white))
            .titleTextColor(getResources().getColor(R.color.white))
            // 开启多选   (默认为多选) 
            .mutiSelect()
            // 多选时的最大数量   (默认 9 张)
            .mutiSelectMaxSize(9)
            // 开启拍照功能 (默认关闭)
            .showCamera()
            // 已选择的图片路径
            .pathList(path)
            // 拍照后存放的图片路径(默认 /temp/picture) (会自动创建)
            .filePath("/ImageSelector/Pictures")
            .build();
    
    
    ImageSelector.open(MainActivity.this, imageConfig);   // 开启图片选择器
    
    单选
     ImageConfig imageConfig
            = new ImageConfig.Builder(new GlideLoader())
            .steepToolBarColor(getResources().getColor(R.color.blue))
            .titleBgColor(getResources().getColor(R.color.blue))
            .titleSubmitTextColor(getResources().getColor(R.color.white))
            .titleTextColor(getResources().getColor(R.color.white))
            // 开启单选   (默认为多选) 
            .singleSelect()
            // 开启拍照功能 (默认关闭)
            .showCamera()
            // 拍照后存放的图片路径(默认 /temp/picture) (会自动创建)
            .filePath("/ImageSelector/Pictures")
            .build();
    
    
    ImageSelector.open(MainActivity.this, imageConfig);   // 开启图片选择器
    
    单选1:1 便捷截图
     ImageConfig imageConfig
            = new ImageConfig.Builder(new GlideLoader())
            .steepToolBarColor(getResources().getColor(R.color.blue))
            .titleBgColor(getResources().getColor(R.color.blue))
            .titleSubmitTextColor(getResources().getColor(R.color.white))
            .titleTextColor(getResources().getColor(R.color.white))
            // (截图默认配置:关闭    比例 1:1    输出分辨率  500*500)
            .crop()  
            // 开启单选   (默认为多选) 
            .singleSelect()
            // 开启拍照功能 (默认关闭)
            .showCamera()
            // 拍照后存放的图片路径(默认 /temp/picture) (会自动创建)
            .filePath("/ImageSelector/Pictures")
            .build();
    
    
    ImageSelector.open(MainActivity.this, imageConfig);   // 开启图片选择器
    
    单选自定义截图
     ImageConfig imageConfig
            = new ImageConfig.Builder(new GlideLoader())
            .steepToolBarColor(getResources().getColor(R.color.blue))
            .titleBgColor(getResources().getColor(R.color.blue))
            .titleSubmitTextColor(getResources().getColor(R.color.white))
            .titleTextColor(getResources().getColor(R.color.white))
            // (截图默认配置:关闭    比例 1:1    输出分辨率  500*500)
            .crop(1, 2, 500, 1000) 
            // 开启单选   (默认为多选) 
            .singleSelect()
            // 开启拍照功能 (默认关闭)
            .showCamera()
            // 拍照后存放的图片路径(默认 /temp/picture) (会自动创建)
            .filePath("/ImageSelector/Pictures")
            .build();
    
    
    ImageSelector.open(MainActivity.this, imageConfig);   // 开启图片选择器
    

    步骤五:

    onActivityResult 中获取选中的照片路径 数组 :

    @Override
    protected void onActivityResult(int requestCode, int resultCode, Intent data) {
     super.onActivityResult(requestCode, resultCode, data);
      if (requestCode == ImageSelector.IMAGE_REQUEST_CODE && resultCode == RESULT_OK && data != null) {
      
        // Get Image Path List
         List<String> pathList = data.getStringArrayListExtra(ImageSelectorActivity.EXTRA_RESULT);
    
         for (String path : pathList) {
             Log.i("ImagePathList", path);
         }
      }
    }
    

    代码示例

    历史版本说明

    1.3.0

    • 合并 由 xxxifan 提供的优化方案,现在在fragment 中也可以进行调用
    • 修改如果手机中没有图片,选择图片夹闪退的问题
    • 隐藏调用该图片选择器时,所拍摄的照片和裁剪的图片,改善选择图片时存在的垃圾图片。
    • 修改最低版本兼容,由原来的 API 15 降到 API 14,兼容 Android 4.0 以上系统。

    1.2.0

    • 新增截图功能

    1.1.1

    • 修改APP名被覆盖的bug

    1.1.0

    • 优化代码,开放部分UI接口

    1.0.0

    • 选择图片功能

    关于作者

    相关文章

      网友评论

      • 菠萝酱哟:Folder folder = new Folder();
        folder.name = folderFile.getName();
        folderFile.getName()报空,怎么破?
      • one1go:如何跳转到裁减界面呢
      • 大苏打007:您好 你的那个图片拍照怎么不启用图片编辑 还有 我设置多选为10张 但是选完十张之后,拍照还是可以的 显示为11张了
      • ibo:怎么配置Fresco ?
      • ZuZo左佐:这个能支持预览吗
      • 5969a34eaaf1:请问作者有没有测试小米和三星这类有时候图片无法获取的机型
      • 愚公要移山:你好 我想问一下,,在步骤三中Gilde为什么找不着呢 我是个菜鸟希望大神指点
      • 582d1188f310:titlebar上的返回图标以及字体大小怎么设置更改啊
        a1bb76bf4859:@582d1188f310 项目已经重构,请看最新的文章。谢谢关注。
      • 木子饼干:点击图片选择就闪退
        a1bb76bf4859:@木子饼干 项目已经重构,请看最新的文章。谢谢关注。
      • 寒浪逐风:好棒,可截图怎么截取圆形图呀?
      • 饕餮潴:感谢楼主的 轮子 省去我自己造了 帮了我这个新手 大忙了 就是有些代码还不能完全理解 还需要继续学习啊 希望楼主有空把注释写的更详细写 方便我们这些新手学习 :blush:
      • 陆地蛟龙:大神好厉害。大腿还有位置不?求带。
      • 九鸿一刀:不错
        a1bb76bf4859:@hxingever 谢谢支持
      • MxxyA4:厉害!大神!
        a1bb76bf4859:@ChiehChan 逗比
      • abeebf48640b:支持视频吗?
        a1bb76bf4859:@Freelancekuangy 要是不支持,后期会迭代完善,添加
      • 1c3d76fe113d:Carlos支持你
        a1bb76bf4859:@Corlos 谢谢支持~
      • 5ec2cd887f08:正好项目用到,好用回头打赏
        a1bb76bf4859:@无皮包子 谢谢支持。。 您的反馈是我最大的打赏。。
      • 五月槐花香:好用么,出现什么bug什么的么?
        a1bb76bf4859:@五月槐花香 最新版本目前还没有碰到过bug……需要进一步测试
      • Alanmexx:改日细看
        a1bb76bf4859:@孔凡阳 谢谢支持
      • 曾樑:连载嘛
        a1bb76bf4859:@曾樑 哈哈 迭代更新嘛。。

      本文标题:Android 图片选择器(三)

      本文链接:https://www.haomeiwen.com/subject/emrzhttx.html