EasyAndroid基础集成组件库之:EasyPhoto (单张)图片选择库

什么是 EasyAndroid


EasyAndroid是一款专注于提供各种基础组件的集成库

作为一款集成组件库,此库中所集成的组件,均包含以下特点:

  1. 精简:作为一款集成库,我不希望有那种大组件,尽量控制好集成库的大小。每个组件的方法数均不超过100. 大部分组件方法数甚至不超过50。
  2. 内敛:尽量减少甚至避免单一组件对别的模块进行依赖。做到组件间独立。

什么是 EasyPhoto


EasyPhoto 是开源库EasyAndroid的基础组件之一,主要应用情景在于更换头像。

若你不需要其他集成组件。只想用 EasyPhoto 。可以直接拷贝集成库中的 EasyPhoto 类到项目中,直接进行使用。

特性

  • 使用建造者模式,支持链式调用
  • 支持图片裁剪
  • 支持图片输出到指定地址
  • 支持任意线程选择进行拍照、图片选择

流程图


下图为EasyPhoto的执行流程:

用法举例


 PS: 请注意request方法传入的Activity,需要为当前栈顶层的Activity实例,否则将可能导致无法接收返回图片的问题
复制代码

重要的事情说三遍——运行时权限、运行时权限、运行时权限,该库需要的权限如下:

Manifest.permission.WRITE_EXTERNAL_STORAGE,
Manifest.permission.READ_EXTERNAL_STORAGE,
Manifest.permission.CAMERA
复制代码

下面是拍照以及选择图片的具体方法:

  • 拍照(不裁剪)
EasyPhoto().setCallback {
            // TODO 使用选择的文件进行操作
            showImg(it)
        }.setError { //TODO 异常反馈
            error: Exception ->
            {
                Log.e("TAG", "异常:${error.message}")
            }
        }.takePhoto(this)

复制代码
  • 选择图片(不裁剪)
    EasyPhoto().setCallback {
            // TODO 使用选择的文件进行操作
            showImg(it)
        }.selectPhoto(this)

复制代码
  • 拍照并裁剪图片

   EasyPhoto().setCrop(true)//裁剪
                //设置自定义地址
                .setImgPath(File(Environment.getExternalStoragePublicDirectory(Environment.DIRECTORY_PICTURES), "EasyPhotoTest.jpg").absolutePath)
                .setCallback {
                    // TODO 使用选择的文件进行操作
                    showImg(it)
                }.takePhoto(this)

复制代码
  • 选择图片并裁剪
   EasyPhoto().setCrop(true)//裁剪
                .setError { error ->Log.e("TAG","error:${error.message}")  }
                .setCallback {
                    // TODO 使用选择的文件进行操作
                    showImg(it)
                }.takePhoto(this)

复制代码

最后来一个效果图:

你可能感兴趣的:(移动开发)