介绍:
Android-ImagesPickers是一个图片选择(单选/多选)、拍照、裁剪的图片选择器。使用方便,功能可自己配置,Android-ImagesPickers自身并没有强制绑定某个ImageLoader,开发者可以根据自己项目给Android-ImagesPickers配置图片加载器。
运行效果:
使用说明:
步骤一:
通过Gradle抓取
- //只上传到了jcenter,在项目gradle下使用jcenter
- allprojects {
- repositories {
- jcenter()
- }
- }
- //在module中添加依赖
- dependencies {
- compile 'com.jaikydota.imagespickers:imagespickers:1.0.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);
- }
- }
步骤四:
配置
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();
= 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); // 开启图片选择器
= 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);
- }
- }
- }
代码示例
- public class MainActivity extends AppCompatActivity {
- private Button btn1, btn2;
- private TextView tv1;
- private ArrayList<String> path = new ArrayList<>();
- public static final int REQUEST_CODE = 123;
- @Override
- protected void onCreate(Bundle savedInstanceState) {
- super.onCreate(savedInstanceState);
- setContentView(R.layout.activity_main);
- btn1 = (Button) findViewById(R.id.btn1);
- btn2 = (Button) findViewById(R.id.btn2);
- tv1 = (TextView) findViewById(R.id.tv1);
- //单选
- btn1.setOnClickListener(new View.OnClickListener() {
- @Override
- public void onClick(View v) {
- ImageConfig imageConfig = new ImageConfig.Builder(
- new GlideLoader())
- .steepToolBarColor(getResources().getColor(R.color.titleBlue))
- .titleBgColor(getResources().getColor(R.color.titleBlue))
- .titleSubmitTextColor(getResources().getColor(R.color.white))
- .titleTextColor(getResources().getColor(R.color.white))
- // 开启单选 (默认为多选) (单选 为 singleSelect)
- .singleSelect()
- //.crop()
- // 开启拍照功能 (默认开启)
- //.showCamera()
- .requestCode(REQUEST_CODE)
- .build();
- ImageSelector.open(MainActivity.this, imageConfig);
- }
- });
- //多选
- btn2.setOnClickListener(new View.OnClickListener() {
- @Override
- public void onClick(View v) {
- ImageConfig imageConfig = new ImageConfig.Builder(
- // GlideLoader 可用自己用的缓存库
- new GlideLoader())
- // 如果在 4.4 以上,则修改状态栏颜色 (默认黑色)
- .steepToolBarColor(getResources().getColor(R.color.titleBlue))
- // 标题的背景颜色 (默认黑色)
- .titleBgColor(getResources().getColor(R.color.titleBlue))
- // 提交按钮字体的颜色 (默认白色)
- .titleSubmitTextColor(getResources().getColor(R.color.white))
- // 标题颜色 (默认白色)
- .titleTextColor(getResources().getColor(R.color.white))
- // 开启多选 (默认为多选) (单选 为 singleSelect)
- //.singleSelect()
- //裁剪
- //.crop()
- // 多选时的最大数量 (默认 9 张)
- .mutiSelectMaxSize(9)
- // 已选择的图片路径
- .pathList(path)
- // 拍照后存放的图片路径(默认 /temp/picture)
- .filePath("/temp")
- // 开启拍照功能 (默认开启)
- .showCamera()
- .requestCode(REQUEST_CODE)
- .build();
- ImageSelector.open(MainActivity.this, imageConfig);
- }
- });
- }
- @Override
- protected void onActivityResult(int requestCode, int resultCode, Intent data) {
- super.onActivityResult(requestCode, resultCode, data);
- if (requestCode == REQUEST_CODE && resultCode == RESULT_OK && data != null) {
- List<String> pathList = data.getStringArrayListExtra(ImageSelectorActivity.EXTRA_RESULT);
- tv1.setText("");
- for (String path : pathList) {
- tv1.append(path);
- }
- path.clear();
- path.addAll(pathList);
- }
- }
- }