# ImageSelect
**Repository Path**: jacksonliao/ImageSelect
## Basic Information
- **Project Name**: ImageSelect
- **Description**: android 经量级选择图片框架,支持拍照,获取相册图片,获取本地视频,可以多选,单选
- **Primary Language**: Android
- **License**: Apache-2.0
- **Default Branch**: master
- **Homepage**: None
- **GVP Project**: No
## Statistics
- **Stars**: 3
- **Forks**: 0
- **Created**: 2022-01-19
- **Last Updated**: 2024-10-31
## Categories & Tags
**Categories**: Uncategorized
**Tags**: None
## README
# ImageSelect
android 经量级选择图片框架,支持拍照,获取相册图片,获取本地视频,可以多选,单选
### 声明
 此框架功能点有:
  1. 新增对图片列表展示的个数;
  2. 将图片的加载框架默认不处理,需要自己去实现IEngine接口来实现图片加载,详情查看demo里面的GlideEngine.kt类;
  3. 新增多图选择时,点击图片进入产看图片模式,方便预览;
  4. 集成5.0以上权限处理问题,处理android q兼容问题;
  5. 支持Androidx;
  6. 支持视频加载展示,优化了api接口调用;
  7. 支持自定义主题,内置light和dark两种主题;
### 效果
列表效果
	
 图片详情
图片详情
	
 ### Get it
- step1: add to your project build.gradle
```groovy
allprojects {
    repositories {
        mavenCentral()
    }
}
```
- step2: Add the dependency
```groovy
    implementation 'com.gitee.jacksonliao:ImageSelect:2.1.0'
```
  
### 使用
#### 初始化
```kotlin
// 实现IEngine接口,如glide加载
class GlideEngine : IEngine {
    override fun loadImage(imageView: ImageView, uiConfig: MediaUiConfigVo) {
        Glide.with(imageView)
                .load(uiConfig.path)
                .placeholder(uiConfig.placeholderResId)
                .error(uiConfig.errorResId)
                .override(uiConfig.width, uiConfig.height)
                .centerCrop()
                .into(imageView)
    }
}
//在Application里面初始化框架图片加载逻辑:
override fun onCreate() {
    super.onCreate()
    ImageSelector.setImageEngine(GlideEngine())
}
```
#### 简单使用
```kotlin
//打开照片列表
ImageSelector.startImageAction(
    this, IMAGE_CODE, MediaSelectConfig.Builder()
        .setShowCamera(true) //是否展示打开摄像头拍照入口,只针对照片,视频列表无效
        .setOpenCameraOnly(isOpneCameraOnly) //是否只是打开摄像头拍照而已
        .setOriginData(mSelectPath) //已选择图片地址
        .setMaxCount(9)//选择最大集合,默认9
        .setImageSpanCount(4) //自定义列表展示个数,默认3
        .setPlaceholderResId(R.mipmap.ic_launcher) //预览图
        .build()
)
//打开视频列表
ImageSelector.startVideoAction(
    this, IMAGE_CODE, MediaSelectConfig.Builder()
        .setOriginData(mSelectPath) //已选择图片地址
        .setImageSpanCount(4) //自定义列表展示个数,默认3
        .build()
)
// 打开大图预览,支持分页
ImageSelector.startBigImaDetail(
    this@MainActivity, 0, DataProvider.getBigImageList()
)
```
				
### 获取结果,重写onActivityResult()方法
```kotlin
override fun onActivityResult(requestCode: Int, resultCode: Int, data: Intent?) {
    super.onActivityResult(requestCode, resultCode, data)
    if (requestCode == REQUEST_IMAGE) {
        if (resultCode == Activity.RESULT_OK) {
            mSelectPath = ImageSelector.getSelectResults(data)
            Log.e("ImageSelect", "结果: $mSelectPath")
        }
    }
}
```
#### License
>       
	/*
	 * Copyright (c) 2016 LiaoJH. 
	 * Lorem ipsum dolor sit amet, consectetur adipiscing elit. 
	 * Morbi non lorem porttitor neque feugiat blandit. Ut vitae ipsum eget quam lacinia accumsan. 
	 * Etiam sed turpis ac ipsum condimentum fringilla. Maecenas magna. 
	 * Proin dapibus sapien vel ante. Aliquam erat volutpat. Pellentesque sagittis ligula eget metus. 
	 * Vestibulum commodo. Ut rhoncus gravida arcu. 
	 */
### Get it
- step1: add to your project build.gradle
```groovy
allprojects {
    repositories {
        mavenCentral()
    }
}
```
- step2: Add the dependency
```groovy
    implementation 'com.gitee.jacksonliao:ImageSelect:2.1.0'
```
  
### 使用
#### 初始化
```kotlin
// 实现IEngine接口,如glide加载
class GlideEngine : IEngine {
    override fun loadImage(imageView: ImageView, uiConfig: MediaUiConfigVo) {
        Glide.with(imageView)
                .load(uiConfig.path)
                .placeholder(uiConfig.placeholderResId)
                .error(uiConfig.errorResId)
                .override(uiConfig.width, uiConfig.height)
                .centerCrop()
                .into(imageView)
    }
}
//在Application里面初始化框架图片加载逻辑:
override fun onCreate() {
    super.onCreate()
    ImageSelector.setImageEngine(GlideEngine())
}
```
#### 简单使用
```kotlin
//打开照片列表
ImageSelector.startImageAction(
    this, IMAGE_CODE, MediaSelectConfig.Builder()
        .setShowCamera(true) //是否展示打开摄像头拍照入口,只针对照片,视频列表无效
        .setOpenCameraOnly(isOpneCameraOnly) //是否只是打开摄像头拍照而已
        .setOriginData(mSelectPath) //已选择图片地址
        .setMaxCount(9)//选择最大集合,默认9
        .setImageSpanCount(4) //自定义列表展示个数,默认3
        .setPlaceholderResId(R.mipmap.ic_launcher) //预览图
        .build()
)
//打开视频列表
ImageSelector.startVideoAction(
    this, IMAGE_CODE, MediaSelectConfig.Builder()
        .setOriginData(mSelectPath) //已选择图片地址
        .setImageSpanCount(4) //自定义列表展示个数,默认3
        .build()
)
// 打开大图预览,支持分页
ImageSelector.startBigImaDetail(
    this@MainActivity, 0, DataProvider.getBigImageList()
)
```
				
### 获取结果,重写onActivityResult()方法
```kotlin
override fun onActivityResult(requestCode: Int, resultCode: Int, data: Intent?) {
    super.onActivityResult(requestCode, resultCode, data)
    if (requestCode == REQUEST_IMAGE) {
        if (resultCode == Activity.RESULT_OK) {
            mSelectPath = ImageSelector.getSelectResults(data)
            Log.e("ImageSelect", "结果: $mSelectPath")
        }
    }
}
```
#### License
>       
	/*
	 * Copyright (c) 2016 LiaoJH. 
	 * Lorem ipsum dolor sit amet, consectetur adipiscing elit. 
	 * Morbi non lorem porttitor neque feugiat blandit. Ut vitae ipsum eget quam lacinia accumsan. 
	 * Etiam sed turpis ac ipsum condimentum fringilla. Maecenas magna. 
	 * Proin dapibus sapien vel ante. Aliquam erat volutpat. Pellentesque sagittis ligula eget metus. 
	 * Vestibulum commodo. Ut rhoncus gravida arcu. 
	 */