diff --git a/app/build.gradle b/app/build.gradle
index 95239bd..dda2f3e 100644
--- a/app/build.gradle
+++ b/app/build.gradle
@@ -104,7 +104,7 @@ dependencies {
compile 'com.github.bumptech.glide:glide:3.7.0'
compile 'jp.wasabeef:glide-transformations:2.0.1'
compile 'com.android.support:support-v13:24.1.0'
- compile project(':img-selector')
+ compile 'com.yuyh.imgsel:library:1.3.2'
compile 'com.facebook.stetho:stetho:1.4.1'
compile 'com.github.houxg:FlexLayout:1.2'
diff --git a/app/src/main/java/org/houxg/leamonax/ui/edit/EditorFragment.java b/app/src/main/java/org/houxg/leamonax/ui/edit/EditorFragment.java
index b51bfd8..1990580 100644
--- a/app/src/main/java/org/houxg/leamonax/ui/edit/EditorFragment.java
+++ b/app/src/main/java/org/houxg/leamonax/ui/edit/EditorFragment.java
@@ -170,7 +170,9 @@ public class EditorFragment extends Fragment implements Editor.EditorListener {
@OnClick(R.id.btn_img)
void handleInsertImage() {
+ //TODO: request camera permission
ImgSelConfig config = new ImgSelConfig.Builder(
+ getActivity(),
new com.yuyh.library.imgsel.ImageLoader() {
@Override
public void displayImage(Context context, String path, ImageView imageView) {
diff --git a/img-selector/.gitignore b/img-selector/.gitignore
deleted file mode 100644
index 796b96d..0000000
--- a/img-selector/.gitignore
+++ /dev/null
@@ -1 +0,0 @@
-/build
diff --git a/img-selector/build.gradle b/img-selector/build.gradle
deleted file mode 100644
index ffb8bce..0000000
--- a/img-selector/build.gradle
+++ /dev/null
@@ -1,35 +0,0 @@
-apply plugin: 'com.android.library'
-version = "1.2.0" // 版本号
-
-android {
- compileSdkVersion 24
- buildToolsVersion '25.0.1'
- resourcePrefix "imgsel"
-
- defaultConfig {
- minSdkVersion 14
- targetSdkVersion 23
- versionCode 7
- versionName "1.2.0"
- }
-
- lintOptions {
- abortOnError false
- }
-
- buildTypes {
- release {
- minifyEnabled false
- proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
- }
- }
-}
-
-dependencies {
- compile fileTree(include: ['*.jar'], dir: 'libs')
- compile 'com.android.support:appcompat-v7:23.4.0'
- compile 'com.android.support:support-v4:23.4.0'
- compile 'com.android.support:recyclerview-v7:23.4.0'
-
- compile 'com.yuyh.easyadapter:library:1.0.0'
-}
diff --git a/img-selector/proguard-rules.pro b/img-selector/proguard-rules.pro
deleted file mode 100644
index fdc3650..0000000
--- a/img-selector/proguard-rules.pro
+++ /dev/null
@@ -1,17 +0,0 @@
-# Add project specific ProGuard rules here.
-# By default, the flags in this file are appended to flags specified
-# in D:\AndroidDev\sdk/tools/proguard/proguard-android.txt
-# You can edit the include path and order by changing the proguardFiles
-# directive in build.gradle.
-#
-# For more details, see
-# http://developer.android.com/guide/developing/tools/proguard.html
-
-# Add any project specific keep options here:
-
-# If your project uses WebView with JS, uncomment the following
-# and specify the fully qualified class name to the JavaScript interface
-# class:
-#-keepclassmembers class fqcn.of.javascript.interface.for.webview {
-# public *;
-#}
diff --git a/img-selector/src/main/AndroidManifest.xml b/img-selector/src/main/AndroidManifest.xml
deleted file mode 100644
index 9bb2542..0000000
--- a/img-selector/src/main/AndroidManifest.xml
+++ /dev/null
@@ -1,14 +0,0 @@
-
-
-
-
-
-
-
-
\ No newline at end of file
diff --git a/img-selector/src/main/java/com/yuyh/library/imgsel/ImageLoader.java b/img-selector/src/main/java/com/yuyh/library/imgsel/ImageLoader.java
deleted file mode 100644
index 9345716..0000000
--- a/img-selector/src/main/java/com/yuyh/library/imgsel/ImageLoader.java
+++ /dev/null
@@ -1,14 +0,0 @@
-package com.yuyh.library.imgsel;
-
-import android.content.Context;
-import android.widget.ImageView;
-
-import java.io.Serializable;
-
-/**
- * @author yuyh.
- * @date 2016/8/5.
- */
-public interface ImageLoader extends Serializable {
- void displayImage(Context context, String path, ImageView imageView);
-}
\ No newline at end of file
diff --git a/img-selector/src/main/java/com/yuyh/library/imgsel/ImgSelActivity.java b/img-selector/src/main/java/com/yuyh/library/imgsel/ImgSelActivity.java
deleted file mode 100644
index 93abc6d..0000000
--- a/img-selector/src/main/java/com/yuyh/library/imgsel/ImgSelActivity.java
+++ /dev/null
@@ -1,240 +0,0 @@
-package com.yuyh.library.imgsel;
-
-import android.Manifest;
-import android.app.Activity;
-import android.content.Intent;
-import android.content.pm.PackageManager;
-import android.net.Uri;
-import android.os.Build;
-import android.os.Bundle;
-import android.provider.MediaStore;
-import android.support.annotation.NonNull;
-import android.support.v4.app.ActivityCompat;
-import android.support.v4.app.Fragment;
-import android.support.v4.app.FragmentActivity;
-import android.support.v4.content.ContextCompat;
-import android.view.View;
-import android.view.WindowManager;
-import android.widget.Button;
-import android.widget.ImageView;
-import android.widget.RelativeLayout;
-import android.widget.TextView;
-import android.widget.Toast;
-
-import com.yuyh.library.imgsel.common.Callback;
-import com.yuyh.library.imgsel.common.Constant;
-import com.yuyh.library.imgsel.utils.FileUtils;
-import com.yuyh.library.imgsel.utils.StatusBarCompat;
-
-import java.io.File;
-import java.util.ArrayList;
-
-public class ImgSelActivity extends FragmentActivity implements View.OnClickListener, Callback {
-
- public static final String INTENT_RESULT = "result";
- private static final int IMAGE_CROP_CODE = 1;
- private static final int STORAGE_REQUEST_CODE = 1;
-
- private ImgSelConfig config;
-
- private RelativeLayout rlTitleBar;
- private TextView tvTitle;
- private Button btnConfirm;
- private ImageView ivBack;
- private String cropImagePath;
-
- private ImgSelFragment fragment;
-
- private ArrayList result = new ArrayList<>();
-
- public static void startActivity(Activity activity, ImgSelConfig config, int RequestCode) {
- Intent intent = new Intent(activity, ImgSelActivity.class);
- Constant.config = config;
- activity.startActivityForResult(intent, RequestCode);
- }
-
- public static void startActivity(Fragment fragment, ImgSelConfig config, int RequestCode) {
- Intent intent = new Intent(fragment.getActivity(), ImgSelActivity.class);
- Constant.config = config;
- fragment.startActivityForResult(intent, RequestCode);
- }
-
- public static void startActivity(android.app.Fragment fragment, ImgSelConfig config, int RequestCode) {
- Intent intent = new Intent(fragment.getActivity(), ImgSelActivity.class);
- Constant.config = config;
- fragment.startActivityForResult(intent, RequestCode);
- }
-
- @Override
- protected void onCreate(Bundle savedInstanceState) {
- super.onCreate(savedInstanceState);
- setContentView(R.layout.activity_img_sel);
- Constant.imageList.clear();
- config = Constant.config;
-
- // Android 6.0 checkSelfPermission
- if (ContextCompat.checkSelfPermission(this, Manifest.permission.WRITE_EXTERNAL_STORAGE)
- != PackageManager.PERMISSION_GRANTED) {
- ActivityCompat.requestPermissions(this, new String[]{Manifest.permission.WRITE_EXTERNAL_STORAGE},
- STORAGE_REQUEST_CODE);
- } else {
- fragment = ImgSelFragment.instance();
- getSupportFragmentManager().beginTransaction()
- .add(R.id.fmImageList, fragment, null)
- .commit();
- }
-
- initView();
- if (!FileUtils.isSdCardAvailable()) {
- Toast.makeText(this, getString(R.string.sd_disable), Toast.LENGTH_SHORT).show();
- }
- }
-
- private void initView() {
- rlTitleBar = (RelativeLayout) findViewById(R.id.rlTitleBar);
- tvTitle = (TextView) findViewById(R.id.tvTitle);
-
- btnConfirm = (Button) findViewById(R.id.btnConfirm);
- btnConfirm.setOnClickListener(this);
-
- ivBack = (ImageView) findViewById(R.id.ivBack);
- ivBack.setOnClickListener(this);
-
- if (config != null) {
- if (config.backResId != -1) {
- ivBack.setImageResource(config.backResId);
- }
-
- if (config.statusBarColor != -1) {
- StatusBarCompat.compat(this, config.statusBarColor);
- if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.KITKAT
- && Build.VERSION.SDK_INT < Build.VERSION_CODES.LOLLIPOP) {
- getWindow().addFlags(WindowManager.LayoutParams.FLAG_TRANSLUCENT_STATUS);
- }
- }
- rlTitleBar.setBackgroundColor(config.titleBgColor);
- tvTitle.setTextColor(config.titleColor);
- tvTitle.setText(config.title);
- btnConfirm.setBackgroundColor(config.btnBgColor);
- btnConfirm.setTextColor(config.btnTextColor);
- if (config.multiSelect) {
- btnConfirm.setText(String.format(getString(R.string.confirm), Constant.imageList.size(), config.maxNum));
- } else {
- btnConfirm.setText(getString(R.string.confirm_single));
- }
- }
- }
-
- @Override
- public void onClick(View v) {
- int id = v.getId();
- if (id == R.id.btnConfirm) {
- if (Constant.imageList != null && !Constant.imageList.isEmpty()) {
- exit();
- }
- } else if (id == R.id.ivBack) {
- finish();
- }
- }
-
- @Override
- public void onSingleImageSelected(String path) {
- if (config.needCrop) {
- crop(path);
- } else {
- Constant.imageList.add(path);
- exit();
- }
- }
-
- @Override
- public void onImageSelected(String path) {
- btnConfirm.setText(String.format(getString(R.string.confirm), Constant.imageList.size(), config.maxNum));
- }
-
- @Override
- public void onImageUnselected(String path) {
- btnConfirm.setText(String.format(getString(R.string.confirm), Constant.imageList.size(), config.maxNum));
- }
-
- @Override
- public void onCameraShot(File imageFile) {
- if (imageFile != null) {
- if (config.needCrop) {
- crop(imageFile.getAbsolutePath());
- } else {
- Constant.imageList.add(imageFile.getAbsolutePath());
- exit();
- }
- }
- }
-
- @Override
- public void onPreviewChanged(int select, int sum, boolean visible) {
- if (visible) {
- tvTitle.setText(select + "/" + sum);
- } else {
- tvTitle.setText(config.title);
- }
- }
-
- private void crop(String imagePath) {
- File file = new File(FileUtils.createRootPath(this) + "/" + System.currentTimeMillis() + ".jpg");
-
- cropImagePath = file.getAbsolutePath();
- Intent intent = new Intent("com.android.camera.action.CROP");
- intent.setDataAndType(Uri.fromFile(new File(imagePath)), "image/*");
- intent.putExtra("crop", "true");
- intent.putExtra("aspectX", config.aspectX);
- intent.putExtra("aspectY", config.aspectY);
- intent.putExtra("outputX", config.outputX);
- intent.putExtra("outputY", config.outputY);
- intent.putExtra("return-data", false);
- intent.putExtra(MediaStore.EXTRA_OUTPUT, Uri.fromFile(file));
- startActivityForResult(intent, IMAGE_CROP_CODE);
- }
-
- @Override
- protected void onActivityResult(int requestCode, int resultCode, Intent data) {
- if (requestCode == IMAGE_CROP_CODE && resultCode == RESULT_OK) {
- Constant.imageList.add(cropImagePath);
- exit();
- }
- super.onActivityResult(requestCode, resultCode, data);
- }
-
- public void exit() {
- Intent intent = new Intent();
- result.clear();
- result.addAll(Constant.imageList);
- intent.putStringArrayListExtra(INTENT_RESULT, result);
- setResult(RESULT_OK, intent);
- Constant.imageList.clear();
- finish();
- }
-
- @Override
- public void onRequestPermissionsResult(int requestCode, @NonNull String[] permissions, @NonNull int[] grantResults) {
- super.onRequestPermissionsResult(requestCode, permissions, grantResults);
- switch (requestCode) {
- case STORAGE_REQUEST_CODE:
- if (grantResults.length >= 1 && grantResults[0] == PackageManager.PERMISSION_GRANTED) {
- getSupportFragmentManager()
- .beginTransaction()
- .add(R.id.fmImageList, ImgSelFragment.instance(), null)
- .commitAllowingStateLoss();
- } else {
- Toast.makeText(this, getString(R.string.permission_denied), Toast.LENGTH_SHORT).show();
- }
- break;
- default:
- break;
- }
- }
-
- @Override
- public void onBackPressed() {
- if (!fragment.hidePreview())
- super.onBackPressed();
- }
-}
diff --git a/img-selector/src/main/java/com/yuyh/library/imgsel/ImgSelConfig.java b/img-selector/src/main/java/com/yuyh/library/imgsel/ImgSelConfig.java
deleted file mode 100644
index c24603a..0000000
--- a/img-selector/src/main/java/com/yuyh/library/imgsel/ImgSelConfig.java
+++ /dev/null
@@ -1,217 +0,0 @@
-package com.yuyh.library.imgsel;
-
-import android.graphics.Color;
-import android.os.Environment;
-
-import com.yuyh.library.imgsel.utils.FileUtils;
-
-import java.io.Serializable;
-
-/**
- * @author yuyh.
- * @date 2016/8/5.
- */
-public class ImgSelConfig {
-
- /**
- * 是否需要裁剪
- */
- public boolean needCrop;
-
- /**
- * 是否多选
- */
- public boolean multiSelect;
-
- /**
- * 最多选择图片数
- */
- public int maxNum = 9;
-
- /**
- * 第一个item是否显示相机
- */
- public boolean needCamera;
-
- public int statusBarColor = -1;
-
- /**
- * 返回图标资源
- */
- public int backResId = -1;
-
- /**
- * 标题
- */
- public String title;
-
- /**
- * 标题颜色
- */
- public int titleColor;
-
- /**
- * titlebar背景色
- */
- public int titleBgColor;
-
- /**
- * 确定按钮文字颜色
- */
- public int btnTextColor;
-
- /**
- * 确定按钮背景色
- */
- public int btnBgColor;
-
- /**
- * 拍照存储路径
- */
- public String filePath;
-
- /**
- * 自定义图片加载器
- */
- public ImageLoader loader;
-
- /**
- * 裁剪输出大小
- */
- public int aspectX = 1;
- public int aspectY = 1;
- public int outputX = 500;
- public int outputY = 500;
-
- public ImgSelConfig(Builder builder) {
- this.needCrop = builder.needCrop;
- this.multiSelect = builder.multiSelect;
- this.maxNum = builder.maxNum;
- this.needCamera = builder.needCamera;
- this.statusBarColor = builder.statusBarColor;
- this.backResId = builder.backResId;
- this.title = builder.title;
- this.titleBgColor = builder.titleBgColor;
- this.titleColor = builder.titleColor;
- this.btnBgColor = builder.btnBgColor;
- this.btnTextColor = builder.btnTextColor;
- this.filePath = builder.filePath;
- this.loader = builder.loader;
- this.aspectX = builder.aspectX;
- this.aspectY = builder.aspectY;
- this.outputX = builder.outputX;
- this.outputY = builder.outputY;
- }
-
- public static class Builder implements Serializable {
-
- private boolean needCrop = false;
- private boolean multiSelect = true;
- private int maxNum = 9;
- private boolean needCamera = true;
- public int statusBarColor = -1;
- private int backResId = -1;
- private String title;
- private int titleColor;
- private int titleBgColor;
- private int btnTextColor;
- private int btnBgColor;
- private String filePath;
- private ImageLoader loader;
-
- private int aspectX = 1;
- private int aspectY = 1;
- private int outputX = 400;
- private int outputY = 400;
-
- public Builder(ImageLoader loader) {
- this.loader = loader;
-
- if (FileUtils.isSdCardAvailable())
- filePath = Environment.getExternalStorageDirectory().getAbsolutePath() + "/Camera";
- else
- filePath = Environment.getRootDirectory().getAbsolutePath() + "/Camera";
-
- title = "图片";
- titleBgColor = Color.parseColor("#3F51B5");
- titleColor = Color.WHITE;
-
- btnBgColor = Color.TRANSPARENT;
- btnTextColor = Color.WHITE;
-
- FileUtils.createDir(filePath);
- }
-
- public Builder needCrop(boolean needCrop) {
- this.needCrop = needCrop;
- return this;
- }
-
- public Builder multiSelect(boolean multiSelect) {
- this.multiSelect = multiSelect;
- return this;
- }
-
- public Builder maxNum(int maxNum) {
- this.maxNum = maxNum;
- return this;
- }
-
- public Builder needCamera(boolean needCamera) {
- this.needCamera = needCamera;
- return this;
- }
-
- public Builder statusBarColor(int statusBarColor) {
- this.statusBarColor = statusBarColor;
- return this;
- }
-
- public Builder backResId(int backResId) {
- this.backResId = backResId;
- return this;
- }
-
- public Builder title(String title) {
- this.title = title;
- return this;
- }
-
- public Builder titleColor(int titleColor) {
- this.titleColor = titleColor;
- return this;
- }
-
- public Builder titleBgColor(int titleBgColor) {
- this.titleBgColor = titleBgColor;
- return this;
- }
-
- public Builder btnTextColor(int btnTextColor) {
- this.btnTextColor = btnTextColor;
- return this;
- }
-
- public Builder btnBgColor(int btnBgColor) {
- this.btnBgColor = btnBgColor;
- return this;
- }
-
- private Builder filePath(String filePath) {
- this.filePath = filePath;
- return this;
- }
-
- public Builder cropSize(int aspectX, int aspectY, int outputX, int outputY) {
- this.aspectX = aspectX;
- this.aspectY = aspectY;
- this.outputX = outputX;
- this.outputY = outputY;
- return this;
- }
-
- public ImgSelConfig build() {
- return new ImgSelConfig(this);
- }
- }
-}
diff --git a/img-selector/src/main/java/com/yuyh/library/imgsel/ImgSelFragment.java b/img-selector/src/main/java/com/yuyh/library/imgsel/ImgSelFragment.java
deleted file mode 100644
index 112516d..0000000
--- a/img-selector/src/main/java/com/yuyh/library/imgsel/ImgSelFragment.java
+++ /dev/null
@@ -1,373 +0,0 @@
-package com.yuyh.library.imgsel;
-
-
-import android.app.Activity;
-import android.content.Intent;
-import android.database.Cursor;
-import android.graphics.Color;
-import android.graphics.drawable.ColorDrawable;
-import android.net.Uri;
-import android.os.Bundle;
-import android.provider.MediaStore;
-import android.support.annotation.Nullable;
-import android.support.v4.app.Fragment;
-import android.support.v4.app.LoaderManager;
-import android.support.v4.content.CursorLoader;
-import android.support.v4.content.Loader;
-import android.support.v4.view.ViewPager;
-import android.support.v7.widget.GridLayoutManager;
-import android.support.v7.widget.ListPopupWindow;
-import android.support.v7.widget.RecyclerView;
-import android.view.LayoutInflater;
-import android.view.View;
-import android.view.ViewGroup;
-import android.view.WindowManager;
-import android.widget.Button;
-import android.widget.Toast;
-
-import com.yuyh.library.imgsel.adapter.FolderListAdapter;
-import com.yuyh.library.imgsel.adapter.ImageListAdapter;
-import com.yuyh.library.imgsel.adapter.PreviewAdapter;
-import com.yuyh.library.imgsel.bean.Folder;
-import com.yuyh.library.imgsel.bean.Image;
-import com.yuyh.library.imgsel.common.Callback;
-import com.yuyh.library.imgsel.common.Constant;
-import com.yuyh.library.imgsel.common.OnFolderChangeListener;
-import com.yuyh.library.imgsel.common.OnItemClickListener;
-import com.yuyh.library.imgsel.utils.FileUtils;
-import com.yuyh.library.imgsel.utils.LogUtils;
-import com.yuyh.library.imgsel.widget.CustomViewPager;
-import com.yuyh.library.imgsel.widget.DividerGridItemDecoration;
-
-import java.io.File;
-import java.util.ArrayList;
-import java.util.List;
-
-
-public class ImgSelFragment extends Fragment implements View.OnClickListener, ViewPager.OnPageChangeListener {
-
- private RecyclerView rvImageList;
- private Button btnAlbumSelected;
- private View rlBottom;
- private CustomViewPager viewPager;
-
- private ImgSelConfig config;
- private Callback callback;
- private List folderList = new ArrayList<>();
- private List imageList = new ArrayList<>();
-
- private ListPopupWindow folderPopupWindow;
- private ImageListAdapter imageListAdapter;
- private FolderListAdapter folderListAdapter;
- private PreviewAdapter previewAdapter;
-
- private boolean hasFolderGened = false;
- private static final int LOADER_ALL = 0;
- private static final int LOADER_CATEGORY = 1;
- private static final int REQUEST_CAMERA = 5;
-
- private File tempFile;
-
- public static ImgSelFragment instance() {
- ImgSelFragment fragment = new ImgSelFragment();
- Bundle bundle = new Bundle();
- fragment.setArguments(bundle);
- return fragment;
- }
-
- @Override
- public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
- View view = inflater.inflate(R.layout.fragment_img_sel, container, false);
- rvImageList = (RecyclerView) view.findViewById(R.id.rvImageList);
- btnAlbumSelected = (Button) view.findViewById(R.id.btnAlbumSelected);
- btnAlbumSelected.setOnClickListener(this);
- rlBottom = view.findViewById(R.id.rlBottom);
- viewPager = (CustomViewPager) view.findViewById(R.id.viewPager);
- viewPager.addOnPageChangeListener(this);
- return view;
- }
-
- @Override
- public void onViewCreated(View view, @Nullable Bundle savedInstanceState) {
- super.onViewCreated(view, savedInstanceState);
- config = Constant.config;
- try {
- callback = (Callback) getActivity();
- } catch (Exception e) {
-
- }
-
- rvImageList.setLayoutManager(new GridLayoutManager(rvImageList.getContext(), 3));
- rvImageList.addItemDecoration(new DividerGridItemDecoration(rvImageList.getContext()));
- if (config.needCamera)
- imageList.add(new Image());
-
- imageListAdapter = new ImageListAdapter(getActivity(), imageList, config);
- imageListAdapter.setShowCamera(config.needCamera);
- imageListAdapter.setMutiSelect(config.multiSelect);
- rvImageList.setAdapter(imageListAdapter);
- imageListAdapter.setOnItemClickListener(new OnItemClickListener() {
- @Override
- public int onCheckedClick(int position, Image image) {
- return checkedImage(position, image);
- }
-
- @Override
- public void onImageClick(int position, Image image) {
- if (config.needCamera && position == 0) {
- showCameraAction();
- } else {
- if (config.multiSelect) {
- viewPager.setAdapter((previewAdapter = new PreviewAdapter(getActivity(), imageList, config)));
- previewAdapter.setListener(new OnItemClickListener() {
- @Override
- public int onCheckedClick(int position, Image image) {
- return checkedImage(position, image);
- }
-
- @Override
- public void onImageClick(int position, Image image) {
- hidePreview();
- }
- });
- if (config.needCamera) {
- callback.onPreviewChanged(position, imageList.size() - 1, true);
- } else {
- callback.onPreviewChanged(position + 1, imageList.size(), true);
- }
- viewPager.setCurrentItem(config.needCamera ? position - 1 : position);
- viewPager.setVisibility(View.VISIBLE);
- } else {
- if (callback != null) {
- callback.onSingleImageSelected(image.path);
- }
- }
- }
- }
- });
-
- folderListAdapter = new FolderListAdapter(getActivity(), folderList, config);
-
- getActivity().getSupportLoaderManager().initLoader(LOADER_ALL, null, mLoaderCallback);
- }
-
- private int checkedImage(int position, Image image) {
- if (image != null) {
- if (Constant.imageList.contains(image.path)) {
- Constant.imageList.remove(image.path);
- if (callback != null) {
- callback.onImageUnselected(image.path);
- }
- } else {
- if (config.maxNum <= Constant.imageList.size()) {
- Toast.makeText(getActivity(), String.format(getString(R.string.maxnum), config.maxNum), Toast.LENGTH_SHORT).show();
- return 0;
- }
-
- Constant.imageList.add(image.path);
- if (callback != null) {
- callback.onImageSelected(image.path);
- }
- }
- return 1;
- }
- return 0;
- }
-
- private LoaderManager.LoaderCallbacks mLoaderCallback = new LoaderManager.LoaderCallbacks() {
-
- private final String[] IMAGE_PROJECTION = {
- MediaStore.Images.Media.DATA,
- MediaStore.Images.Media.DISPLAY_NAME,
- MediaStore.Images.Media.DATE_ADDED,
- MediaStore.Images.Media._ID};
-
- @Override
- public Loader onCreateLoader(int id, Bundle args) {
- if (id == LOADER_ALL) {
- CursorLoader cursorLoader = new CursorLoader(getActivity(),
- MediaStore.Images.Media.EXTERNAL_CONTENT_URI, IMAGE_PROJECTION,
- null, null, IMAGE_PROJECTION[2] + " DESC");
- return cursorLoader;
- } else if (id == LOADER_CATEGORY) {
- CursorLoader cursorLoader = new CursorLoader(getActivity(),
- MediaStore.Images.Media.EXTERNAL_CONTENT_URI, IMAGE_PROJECTION,
- IMAGE_PROJECTION[0] + " like '%" + args.getString("path") + "%'", null, IMAGE_PROJECTION[2] + " DESC");
- return cursorLoader;
- }
- return null;
- }
-
- @Override
- public void onLoadFinished(Loader loader, Cursor data) {
- if (data != null) {
- int count = data.getCount();
- if (count > 0) {
- List tempImageList = new ArrayList<>();
- data.moveToFirst();
- do {
- String path = data.getString(data.getColumnIndexOrThrow(IMAGE_PROJECTION[0]));
- String name = data.getString(data.getColumnIndexOrThrow(IMAGE_PROJECTION[1]));
- long dateTime = data.getLong(data.getColumnIndexOrThrow(IMAGE_PROJECTION[2]));
- Image image = new Image(path, name, dateTime);
- if (!image.path.endsWith("gif"))
- tempImageList.add(image);
- if (!hasFolderGened) {
- File imageFile = new File(path);
- File folderFile = imageFile.getParentFile();
- Folder folder = new Folder();
- folder.name = folderFile.getName();
- folder.path = folderFile.getAbsolutePath();
- folder.cover = image;
- if (!folderList.contains(folder)) {
- List imageList = new ArrayList<>();
- imageList.add(image);
- folder.images = imageList;
- folderList.add(folder);
- } else {
- Folder f = folderList.get(folderList.indexOf(folder));
- f.images.add(image);
- }
- }
-
- } while (data.moveToNext());
-
- imageList.clear();
- if (config.needCamera)
- imageList.add(new Image());
- imageList.addAll(tempImageList);
-
-
- imageListAdapter.notifyDataSetChanged();
-
- if (Constant.imageList != null && Constant.imageList.size() > 0) {
- //adapter.setDefaultSelected(resultList);
- }
-
- folderListAdapter.notifyDataSetChanged();
-
- hasFolderGened = true;
- }
- }
- }
-
- @Override
- public void onLoaderReset(Loader loader) {
-
- }
- };
-
- private void createPopupFolderList(int width, int height) {
- folderPopupWindow = new ListPopupWindow(getActivity());
- folderPopupWindow.setBackgroundDrawable(new ColorDrawable(Color.TRANSPARENT));
- folderPopupWindow.setAdapter(folderListAdapter);
- folderPopupWindow.setContentWidth(width);
- folderPopupWindow.setWidth(width);
- folderPopupWindow.setHeight(height);
- folderPopupWindow.setAnchorView(rlBottom);
- folderPopupWindow.setModal(true);
- folderListAdapter.setOnFloderChangeListener(new OnFolderChangeListener() {
- @Override
- public void onChange(int position, Folder folder) {
- folderPopupWindow.dismiss();
- if (position == 0) {
- getActivity().getSupportLoaderManager().restartLoader(LOADER_ALL, null, mLoaderCallback);
- btnAlbumSelected.setText(getString(R.string.all_images));
- } else {
- imageList.clear();
- if (config.needCamera)
- imageList.add(new Image());
- imageList.addAll(folder.images);
- imageListAdapter.notifyDataSetChanged();
-
- btnAlbumSelected.setText(folder.name);
- }
- }
- });
- }
-
- @Override
- public void onClick(View v) {
- if (v.getId() == btnAlbumSelected.getId()) {
- if (folderPopupWindow == null) {
- WindowManager wm = getActivity().getWindowManager();
- int width = wm.getDefaultDisplay().getWidth();
- createPopupFolderList(width / 3 * 2, width / 3 * 2);
- }
-
- if (folderPopupWindow.isShowing()) {
- folderPopupWindow.dismiss();
- } else {
- folderPopupWindow.show();
- int index = folderListAdapter.getSelectIndex();
- index = index == 0 ? index : index - 1;
- folderPopupWindow.getListView().setSelection(index);
- }
- }
- }
-
- private void showCameraAction() {
- if (config.maxNum <= Constant.imageList.size()) {
- Toast.makeText(getActivity(), String.format(getString(R.string.maxnum), config.maxNum), Toast.LENGTH_SHORT).show();
- return;
- }
- Intent cameraIntent = new Intent(MediaStore.ACTION_IMAGE_CAPTURE);
- if (cameraIntent.resolveActivity(getActivity().getPackageManager()) != null) {
- tempFile = new File(FileUtils.createRootPath(getActivity()) + "/" + System.currentTimeMillis() + ".jpg");
- LogUtils.e(tempFile.getAbsolutePath());
- FileUtils.createFile(tempFile);
- cameraIntent.putExtra(MediaStore.EXTRA_OUTPUT, Uri.fromFile(tempFile));
- startActivityForResult(cameraIntent, REQUEST_CAMERA);
- } else {
- Toast.makeText(getActivity(), getString(R.string.open_camera_failure), Toast.LENGTH_SHORT).show();
- }
- }
-
- @Override
- public void onActivityResult(int requestCode, int resultCode, Intent data) {
- if (requestCode == REQUEST_CAMERA) {
- if (resultCode == Activity.RESULT_OK) {
- if (tempFile != null) {
- if (callback != null) {
- callback.onCameraShot(tempFile);
- }
- }
- } else {
- if (tempFile != null && tempFile.exists()) {
- tempFile.delete();
- }
- }
- }
- super.onActivityResult(requestCode, resultCode, data);
- }
-
- @Override
- public void onPageScrolled(int position, float positionOffset, int positionOffsetPixels) {
-
- }
-
- @Override
- public void onPageSelected(int position) {
- if (config.needCamera) {
- callback.onPreviewChanged(position + 1, imageList.size() - 1, true);
- } else {
- callback.onPreviewChanged(position + 1, imageList.size(), true);
- }
- }
-
- @Override
- public void onPageScrollStateChanged(int state) {
-
- }
-
- public boolean hidePreview() {
- if (viewPager.getVisibility() == View.VISIBLE) {
- viewPager.setVisibility(View.GONE);
- callback.onPreviewChanged(0, 0, false);
- imageListAdapter.notifyDataSetChanged();
- return true;
- } else {
- return false;
- }
- }
-}
diff --git a/img-selector/src/main/java/com/yuyh/library/imgsel/adapter/FolderListAdapter.java b/img-selector/src/main/java/com/yuyh/library/imgsel/adapter/FolderListAdapter.java
deleted file mode 100644
index 66cdac0..0000000
--- a/img-selector/src/main/java/com/yuyh/library/imgsel/adapter/FolderListAdapter.java
+++ /dev/null
@@ -1,102 +0,0 @@
-package com.yuyh.library.imgsel.adapter;
-
-import android.content.Context;
-import android.view.View;
-import android.widget.ImageView;
-
-import com.yuyh.easyadapter.abslistview.EasyLVAdapter;
-import com.yuyh.easyadapter.abslistview.EasyLVHolder;
-import com.yuyh.library.imgsel.ImgSelConfig;
-import com.yuyh.library.imgsel.R;
-import com.yuyh.library.imgsel.bean.Folder;
-import com.yuyh.library.imgsel.common.OnFolderChangeListener;
-
-import java.util.List;
-
-/**
- * @author yuyh.
- * @date 2016/8/5.
- */
-public class FolderListAdapter extends EasyLVAdapter {
-
- private Context context;
- private List folderList;
- private ImgSelConfig config;
-
- private int selected = 0;
- private OnFolderChangeListener listener;
-
- public FolderListAdapter(Context context, List folderList, ImgSelConfig config) {
- super(context, folderList, R.layout.item_img_sel_folder);
- this.context = context;
- this.folderList = folderList;
- this.config = config;
- }
-
- @Override
- public void convert(EasyLVHolder holder, final int position, Folder folder) {
- if (position == 0) {
- holder.setText(R.id.tvFolderName, "所有图片")
- .setText(R.id.tvImageNum, "共" + getTotalImageSize() + "张");
- ImageView ivFolder = holder.getView(R.id.ivFolder);
- if (folderList.size() > 0) {
- config.loader.displayImage(context, folder.cover.path, ivFolder);
- }
- } else {
- holder.setText(R.id.tvFolderName, folder.name)
- .setText(R.id.tvImageNum, "共" + folder.images.size() + "张");
- ImageView ivFolder = holder.getView(R.id.ivFolder);
- if (folderList.size() > 0) {
- config.loader.displayImage(context, folder.cover.path, ivFolder);
- }
- }
-
- if (selected == position) {
- holder.setVisible(R.id.indicator, true);
- } else {
- holder.setVisible(R.id.indicator, false);
- }
-
- holder.getConvertView().setOnClickListener(new View.OnClickListener() {
- @Override
- public void onClick(View v) {
- setSelectIndex(position);
- }
- });
- }
-
- public void setData(List folders) {
- folderList.clear();
- if (folders != null && folders.size() > 0) {
- folderList.addAll(folders);
- }
- notifyDataSetChanged();
- }
-
- private int getTotalImageSize() {
- int result = 0;
- if (folderList != null && folderList.size() > 0) {
- for (Folder folder : folderList) {
- result += folder.images.size();
- }
- }
- return result;
- }
-
- public void setSelectIndex(int position) {
- if (selected == position)
- return;
- if(listener != null)
- listener.onChange(position, folderList.get(position));
- selected = position;
- notifyDataSetChanged();
- }
-
- public int getSelectIndex() {
- return selected;
- }
-
- public void setOnFloderChangeListener(OnFolderChangeListener listener) {
- this.listener = listener;
- }
-}
diff --git a/img-selector/src/main/java/com/yuyh/library/imgsel/adapter/ImageListAdapter.java b/img-selector/src/main/java/com/yuyh/library/imgsel/adapter/ImageListAdapter.java
deleted file mode 100644
index 3a6ebeb..0000000
--- a/img-selector/src/main/java/com/yuyh/library/imgsel/adapter/ImageListAdapter.java
+++ /dev/null
@@ -1,112 +0,0 @@
-package com.yuyh.library.imgsel.adapter;
-
-import android.content.Context;
-import android.view.View;
-import android.widget.ImageView;
-
-import com.yuyh.easyadapter.recyclerview.EasyRVAdapter;
-import com.yuyh.easyadapter.recyclerview.EasyRVHolder;
-import com.yuyh.library.imgsel.ImgSelConfig;
-import com.yuyh.library.imgsel.R;
-import com.yuyh.library.imgsel.bean.Image;
-import com.yuyh.library.imgsel.common.Constant;
-import com.yuyh.library.imgsel.common.OnItemClickListener;
-
-import java.util.List;
-
-/**
- * @author yuyh.
- * @date 2016/8/5.
- */
-public class ImageListAdapter extends EasyRVAdapter {
-
- private boolean showCamera;
- private boolean mutiSelect;
-
- private ImgSelConfig config;
- private Context context;
- private OnItemClickListener listener;
-
- public ImageListAdapter(Context context, List list, ImgSelConfig config) {
- super(context, list, R.layout.item_img_sel, R.layout.item_img_sel_take_photo);
- this.context = context;
- this.config = config;
- }
-
- @Override
- protected void onBindData(final EasyRVHolder viewHolder, final int position, final Image item) {
-
- if (position == 0 && showCamera) {
- ImageView iv = viewHolder.getView(R.id.ivTakePhoto);
- iv.setImageResource(R.drawable.ic_take_photo);
- iv.setOnClickListener(new View.OnClickListener() {
- @Override
- public void onClick(View v) {
- if (listener != null)
- listener.onImageClick(position, item);
- }
- });
- return;
- }
-
- if (mutiSelect) {
- viewHolder.getView(R.id.ivPhotoCheaked).setOnClickListener(new View.OnClickListener() {
- @Override
- public void onClick(View v) {
- if (listener != null) {
- int ret = listener.onCheckedClick(position, item);
- if (ret == 1) { // 局部刷新
- if (Constant.imageList.contains(item.path)) {
- viewHolder.setImageResource(R.id.ivPhotoCheaked, R.drawable.ic_checked);
- } else {
- viewHolder.setImageResource(R.id.ivPhotoCheaked, R.drawable.ic_uncheck);
- }
- }
- }
- }
- });
- }
-
- viewHolder.setOnItemViewClickListener(new View.OnClickListener() {
- @Override
- public void onClick(View v) {
- if (listener != null)
- listener.onImageClick(position, item);
- }
- });
-
- final ImageView iv = viewHolder.getView(R.id.ivImage);
- config.loader.displayImage(context, item.path, iv);
-
- if (mutiSelect) {
- viewHolder.setVisible(R.id.ivPhotoCheaked, true);
- if (Constant.imageList.contains(item.path)) {
- viewHolder.setImageResource(R.id.ivPhotoCheaked, R.drawable.ic_checked);
- } else {
- viewHolder.setImageResource(R.id.ivPhotoCheaked, R.drawable.ic_uncheck);
- }
- } else {
- viewHolder.setVisible(R.id.ivPhotoCheaked, false);
- }
- }
-
- public void setShowCamera(boolean showCamera) {
- this.showCamera = showCamera;
- }
-
- public void setMutiSelect(boolean mutiSelect) {
- this.mutiSelect = mutiSelect;
- }
-
- @Override
- public int getItemViewType(int position) {
- if (position == 0 && showCamera) {
- return 1;
- }
- return 0;
- }
-
- public void setOnItemClickListener(OnItemClickListener listener) {
- this.listener = listener;
- }
-}
diff --git a/img-selector/src/main/java/com/yuyh/library/imgsel/adapter/PreviewAdapter.java b/img-selector/src/main/java/com/yuyh/library/imgsel/adapter/PreviewAdapter.java
deleted file mode 100644
index e14de7e..0000000
--- a/img-selector/src/main/java/com/yuyh/library/imgsel/adapter/PreviewAdapter.java
+++ /dev/null
@@ -1,109 +0,0 @@
-package com.yuyh.library.imgsel.adapter;
-
-import android.app.Activity;
-import android.support.v4.view.PagerAdapter;
-import android.view.View;
-import android.view.ViewGroup;
-import android.widget.ImageView;
-
-import com.yuyh.library.imgsel.ImgSelConfig;
-import com.yuyh.library.imgsel.R;
-import com.yuyh.library.imgsel.bean.Image;
-import com.yuyh.library.imgsel.common.Constant;
-import com.yuyh.library.imgsel.common.OnItemClickListener;
-
-import java.util.List;
-
-/**
- * @author yuyh.
- * @date 2016/9/28.
- */
-public class PreviewAdapter extends PagerAdapter {
-
- private Activity activity;
- private List images;
- private ImgSelConfig config;
- private OnItemClickListener listener;
-
- public PreviewAdapter(Activity activity, List images, ImgSelConfig config) {
- this.activity = activity;
- this.images = images;
- this.config = config;
- }
-
- @Override
- public int getCount() {
- if (config.needCamera)
- return images.size() - 1;
- else
- return images.size();
- }
-
- @Override
- public View instantiateItem(ViewGroup container, final int position) {
- View root = View.inflate(activity, R.layout.item_pager_img_sel, null);
- final ImageView photoView = (ImageView) root.findViewById(R.id.ivImage);
- final ImageView ivChecked = (ImageView) root.findViewById(R.id.ivPhotoCheaked);
-
- displayImage(photoView, images.get(config.needCamera ? position + 1 : position).path);
- if (config.multiSelect) {
-
- ivChecked.setVisibility(View.VISIBLE);
- final Image image = images.get(config.needCamera ? position + 1 : position);
- if (Constant.imageList.contains(image.path)) {
- ivChecked.setImageResource(R.drawable.ic_checked);
- } else {
- ivChecked.setImageResource(R.drawable.ic_uncheck);
- }
-
- ivChecked.setOnClickListener(new View.OnClickListener() {
- @Override
- public void onClick(View v) {
- if (listener != null) {
- int ret = listener.onCheckedClick(position, image);
- if (ret == 1) { // 局部刷新
- if (Constant.imageList.contains(image.path)) {
- ivChecked.setImageResource(R.drawable.ic_checked);
- } else {
- ivChecked.setImageResource(R.drawable.ic_uncheck);
- }
- }
- }
- }
- });
-
- photoView.setOnClickListener(new View.OnClickListener() {
- @Override
- public void onClick(View v) {
- if (listener != null) {
- listener.onImageClick(position, images.get(position));
- }
- }
- });
- } else {
- ivChecked.setVisibility(View.GONE);
- }
-
- container.addView(root, ViewGroup.LayoutParams.MATCH_PARENT,
- ViewGroup.LayoutParams.MATCH_PARENT);
- return root;
- }
-
- private void displayImage(ImageView photoView, String path) {
- config.loader.displayImage(activity, path, photoView);
- }
-
- @Override
- public boolean isViewFromObject(View view, Object object) {
- return view == object;
- }
-
- @Override
- public void destroyItem(ViewGroup container, int position, Object object) {
- container.removeView((View) object);
- }
-
- public void setListener(OnItemClickListener listener) {
- this.listener = listener;
- }
-}
diff --git a/img-selector/src/main/java/com/yuyh/library/imgsel/bean/Folder.java b/img-selector/src/main/java/com/yuyh/library/imgsel/bean/Folder.java
deleted file mode 100644
index f9a8a87..0000000
--- a/img-selector/src/main/java/com/yuyh/library/imgsel/bean/Folder.java
+++ /dev/null
@@ -1,36 +0,0 @@
-package com.yuyh.library.imgsel.bean;
-
-import java.util.List;
-
-/**
- * Folder bean
- * Created by Yancy on 2015/12/2.
- */
-public class Folder {
-
- public String name;
- public String path;
- public Image cover;
- public List images;
-
- public boolean isAll = false;
-
- public Folder(){
-
- }
-
- public Folder(boolean isAll){
- this.isAll = isAll;
- }
-
- @Override
- public boolean equals(Object o) {
- try {
- Folder other = (Folder) o;
- return this.path.equalsIgnoreCase(other.path);
- } catch (ClassCastException e) {
- e.printStackTrace();
- }
- return super.equals(o);
- }
-}
\ No newline at end of file
diff --git a/img-selector/src/main/java/com/yuyh/library/imgsel/bean/Image.java b/img-selector/src/main/java/com/yuyh/library/imgsel/bean/Image.java
deleted file mode 100644
index c51a408..0000000
--- a/img-selector/src/main/java/com/yuyh/library/imgsel/bean/Image.java
+++ /dev/null
@@ -1,35 +0,0 @@
-package com.yuyh.library.imgsel.bean;
-
-/**
- * Image bean
- * Created by Yancy on 2015/12/2.
- */
-public class Image {
-
- public String path;
- public String name;
- public long time;
-
- public boolean isCamera = false;
-
- public Image(String path, String name, long time) {
- this.path = path;
- this.name = name;
- this.time = time;
- }
-
- public Image(){
- isCamera = true;
- }
-
- @Override
- public boolean equals(Object o) {
- try {
- Image other = (Image) o;
- return this.path.equalsIgnoreCase(other.path);
- } catch (ClassCastException e) {
- e.printStackTrace();
- }
- return super.equals(o);
- }
-}
\ No newline at end of file
diff --git a/img-selector/src/main/java/com/yuyh/library/imgsel/common/Callback.java b/img-selector/src/main/java/com/yuyh/library/imgsel/common/Callback.java
deleted file mode 100644
index 098a31f..0000000
--- a/img-selector/src/main/java/com/yuyh/library/imgsel/common/Callback.java
+++ /dev/null
@@ -1,21 +0,0 @@
-package com.yuyh.library.imgsel.common;
-
-import java.io.File;
-import java.io.Serializable;
-
-/**
- * @author yuyh.
- * @date 2016/8/5.
- */
-public interface Callback extends Serializable {
-
- void onSingleImageSelected(String path);
-
- void onImageSelected(String path);
-
- void onImageUnselected(String path);
-
- void onCameraShot(File imageFile);
-
- void onPreviewChanged(int select, int sum, boolean visible);
-}
diff --git a/img-selector/src/main/java/com/yuyh/library/imgsel/common/Constant.java b/img-selector/src/main/java/com/yuyh/library/imgsel/common/Constant.java
deleted file mode 100644
index 1e10fb6..0000000
--- a/img-selector/src/main/java/com/yuyh/library/imgsel/common/Constant.java
+++ /dev/null
@@ -1,19 +0,0 @@
-package com.yuyh.library.imgsel.common;
-
-import com.yuyh.library.imgsel.ImgSelConfig;
-
-import java.util.ArrayList;
-
-/**
- * @author yuyh.
- * @date 2016/8/5.
- */
-public class Constant {
-
- public static ImgSelConfig config;
-
- public static int screenWidth = 0;
-
- public static ArrayList imageList = new ArrayList<>();
-
-}
diff --git a/img-selector/src/main/java/com/yuyh/library/imgsel/common/OnFolderChangeListener.java b/img-selector/src/main/java/com/yuyh/library/imgsel/common/OnFolderChangeListener.java
deleted file mode 100644
index 946690c..0000000
--- a/img-selector/src/main/java/com/yuyh/library/imgsel/common/OnFolderChangeListener.java
+++ /dev/null
@@ -1,12 +0,0 @@
-package com.yuyh.library.imgsel.common;
-
-import com.yuyh.library.imgsel.bean.Folder;
-
-/**
- * @author yuyh.
- * @date 2016/8/5.
- */
-public interface OnFolderChangeListener {
-
- void onChange(int position, Folder folder);
-}
diff --git a/img-selector/src/main/java/com/yuyh/library/imgsel/common/OnItemClickListener.java b/img-selector/src/main/java/com/yuyh/library/imgsel/common/OnItemClickListener.java
deleted file mode 100644
index 84f3a00..0000000
--- a/img-selector/src/main/java/com/yuyh/library/imgsel/common/OnItemClickListener.java
+++ /dev/null
@@ -1,14 +0,0 @@
-package com.yuyh.library.imgsel.common;
-
-import com.yuyh.library.imgsel.bean.Image;
-
-/**
- * @author yuyh.
- * @date 2016/8/5.
- */
-public interface OnItemClickListener {
-
- int onCheckedClick(int position, Image image);
-
- void onImageClick(int position, Image image);
-}
diff --git a/img-selector/src/main/java/com/yuyh/library/imgsel/utils/FileUtils.java b/img-selector/src/main/java/com/yuyh/library/imgsel/utils/FileUtils.java
deleted file mode 100644
index 50a01a7..0000000
--- a/img-selector/src/main/java/com/yuyh/library/imgsel/utils/FileUtils.java
+++ /dev/null
@@ -1,306 +0,0 @@
-package com.yuyh.library.imgsel.utils;
-
-import android.content.Context;
-import android.content.res.AssetManager;
-import android.os.Environment;
-
-import java.io.BufferedReader;
-import java.io.File;
-import java.io.FileInputStream;
-import java.io.FileOutputStream;
-import java.io.FileReader;
-import java.io.IOException;
-import java.io.InputStream;
-import java.io.InputStreamReader;
-import java.nio.channels.FileChannel;
-import java.text.DecimalFormat;
-
-/**
- * @author yuyh.
- * @date 16/4/9.
- */
-public class FileUtils {
-
- private static final String TAG = FileUtils.class.getSimpleName();
-
- /**
- * 创建根缓存目录
- *
- * @return
- */
- public static String createRootPath(Context context) {
- String cacheRootPath = "";
- if (isSdCardAvailable()) {
- // /sdcard/Android/data//cache
- cacheRootPath = context.getExternalCacheDir().getPath();
- } else {
- // /data/data//cache
- cacheRootPath = context.getCacheDir().getPath();
- }
- return cacheRootPath;
- }
-
- public static boolean isSdCardAvailable() {
- return Environment.MEDIA_MOUNTED.equals(Environment.getExternalStorageState());
- }
-
- /**
- * 递归创建文件夹
- *
- * @param dirPath
- * @return 创建失败返回""
- */
- public static String createDir(String dirPath) {
- try {
- File file = new File(dirPath);
- if (file.getParentFile().exists()) {
- LogUtils.i("----- 创建文件夹" + file.getAbsolutePath());
- file.mkdir();
- return file.getAbsolutePath();
- } else {
- createDir(file.getParentFile().getAbsolutePath());
- LogUtils.i("----- 创建文件夹" + file.getAbsolutePath());
- file.mkdir();
- }
- } catch (Exception e) {
- e.printStackTrace();
- }
- return dirPath;
- }
-
- /**
- * 递归创建文件夹
- *
- * @param file
- * @return 创建失败返回""
- */
- public static String createFile(File file) {
- try {
- if (file.getParentFile().exists()) {
- LogUtils.i("----- 创建文件" + file.getAbsolutePath());
- file.createNewFile();
- return file.getAbsolutePath();
- } else {
- createDir(file.getParentFile().getAbsolutePath());
- file.createNewFile();
- LogUtils.i("----- 创建文件" + file.getAbsolutePath());
- }
- } catch (Exception e) {
- e.printStackTrace();
- }
- return "";
- }
-
- public static String getImageCachePath(String path){
- return createDir(path);
- }
-
- /**
- * 获取图片缓存目录
- *
- * @return 创建失败, 返回""
- */
- public static String getImageCachePath(Context context) {
- String path = createDir(createRootPath(context) + File.separator + "img" + File.separator);
- return path;
- }
-
- /**
- * 获取图片裁剪缓存目录
- *
- * @return 创建失败, 返回""
- */
- public static String getImageCropCachePath(Context context) {
- String path = createDir(createRootPath(context) + File.separator + "imgCrop" + File.separator);
- return path;
- }
-
- /**
- * 将内容写入文件
- *
- * @param filePath eg:/mnt/sdcard/demo.txt
- * @param content 内容
- */
- public static void writeFileSdcard(String filePath, String content, boolean isAppend) {
- try {
- FileOutputStream fout = new FileOutputStream(filePath, isAppend);
- byte[] bytes = content.getBytes();
- fout.write(bytes);
- fout.close();
- } catch (Exception e) {
- e.printStackTrace();
- }
- }
-
- /**
- * 打开Asset下的文件
- *
- * @param context
- * @param fileName
- * @return
- */
- public static InputStream openAssetFile(Context context, String fileName) {
- AssetManager am = context.getAssets();
- InputStream is = null;
- try {
- is = am.open(fileName);
- } catch (IOException e) {
- e.printStackTrace();
- }
- return is;
- }
-
- /**
- * 获取Raw下的文件内容
- *
- * @param context
- * @param resId
- * @return 文件内容
- */
- public static String getFileFromRaw(Context context, int resId) {
- if (context == null) {
- return null;
- }
-
- StringBuilder s = new StringBuilder();
- try {
- InputStreamReader in = new InputStreamReader(context.getResources().openRawResource(resId));
- BufferedReader br = new BufferedReader(in);
- String line;
- while ((line = br.readLine()) != null) {
- s.append(line);
- }
- return s.toString();
- } catch (IOException e) {
- e.printStackTrace();
- return null;
- }
- }
-
- /**
- * 文件拷贝
- *
- * @param src 源文件
- * @param desc 目的文件
- */
- public static void fileChannelCopy(File src, File desc) {
- FileInputStream fi = null;
- FileOutputStream fo = null;
- try {
- fi = new FileInputStream(src);
- fo = new FileOutputStream(desc);
- FileChannel in = fi.getChannel();//得到对应的文件通道
- FileChannel out = fo.getChannel();//得到对应的文件通道
- in.transferTo(0, in.size(), out);//连接两个通道,并且从in通道读取,然后写入out通道
- } catch (IOException e) {
- e.printStackTrace();
- } finally {
- try {
- if (fo != null) fo.close();
- if (fi != null) fi.close();
- } catch (IOException e) {
- e.printStackTrace();
- }
- }
- }
-
- /**
- * 转换文件大小
- *
- * @param fileLen 单位B
- * @return
- */
- public static String formatFileSizeToString(long fileLen) {
- DecimalFormat df = new DecimalFormat("#.00");
- String fileSizeString = "";
- if (fileLen < 1024) {
- fileSizeString = df.format((double) fileLen) + "B";
- } else if (fileLen < 1048576) {
- fileSizeString = df.format((double) fileLen / 1024) + "K";
- } else if (fileLen < 1073741824) {
- fileSizeString = df.format((double) fileLen / 1048576) + "M";
- } else {
- fileSizeString = df.format((double) fileLen / 1073741824) + "G";
- }
- return fileSizeString;
- }
-
- /**
- * 删除指定文件
- *
- * @param file
- * @return
- * @throws IOException
- */
- public static boolean deleteFile(File file) throws IOException {
- return deleteFileOrDirectory(file);
- }
-
- /**
- * 删除指定文件,如果是文件夹,则递归删除
- *
- * @param file
- * @return
- * @throws IOException
- */
- public static boolean deleteFileOrDirectory(File file) throws IOException {
- try {
- if (file != null && file.isFile()) {
- return file.delete();
- }
- if (file != null && file.isDirectory()) {
- File[] childFiles = file.listFiles();
- // 删除空文件夹
- if (childFiles == null || childFiles.length == 0) {
- return file.delete();
- }
- // 递归删除文件夹下的子文件
- for (int i = 0; i < childFiles.length; i++) {
- deleteFileOrDirectory(childFiles[i]);
- }
- return file.delete();
- }
- } catch (Exception e) {
- e.printStackTrace();
- }
- return false;
- }
-
- /***
- * 获取文件扩展名
- *
- * @param filename 文件名
- * @return
- */
- public static String getExtensionName(String filename) {
- if ((filename != null) && (filename.length() > 0)) {
- int dot = filename.lastIndexOf('.');
- if ((dot > -1) && (dot < (filename.length() - 1))) {
- return filename.substring(dot + 1);
- }
- }
- return filename;
- }
-
- /**
- * 获取文件内容
- *
- * @param path
- * @return
- */
- public static String getFileOutputString(String path) {
- try {
- BufferedReader bufferedReader = new BufferedReader(new FileReader(path), 8192);
- StringBuilder sb = new StringBuilder();
- String line = null;
- while ((line = bufferedReader.readLine()) != null) {
- sb.append("\n").append(line);
- }
- bufferedReader.close();
- return sb.toString();
- } catch (IOException e) {
- e.printStackTrace();
- }
- return null;
- }
-}
diff --git a/img-selector/src/main/java/com/yuyh/library/imgsel/utils/LogUtils.java b/img-selector/src/main/java/com/yuyh/library/imgsel/utils/LogUtils.java
deleted file mode 100644
index 0118b26..0000000
--- a/img-selector/src/main/java/com/yuyh/library/imgsel/utils/LogUtils.java
+++ /dev/null
@@ -1,176 +0,0 @@
-package com.yuyh.library.imgsel.utils;
-
-import android.content.Context;
-import android.util.Log;
-
-import java.io.BufferedWriter;
-import java.io.File;
-import java.io.FileWriter;
-import java.io.IOException;
-import java.text.SimpleDateFormat;
-import java.util.Calendar;
-import java.util.Date;
-
-/**
- * Log工具类,可控制Log输出开关、保存Log到文件、过滤输出等级
- *
- * @author yuyh.
- * @date 16/4/9.
- */
-public class LogUtils {
- private static Boolean LOG_SWITCH = true; // 日志文件总开关
- private static Boolean LOG_TO_FILE = false; // 日志写入文件开关
- private static String LOG_TAG = "TAG"; // 默认的tag
- private static char LOG_TYPE = 'v';// 输入日志类型,v代表输出所有信息,w则只输出警告...
- private static int LOG_SAVE_DAYS = 7;// sd卡中日志文件的最多保存天数
-
- private final static SimpleDateFormat LOG_FORMAT = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");// 日志的输出格式
- private final static SimpleDateFormat FILE_SUFFIX = new SimpleDateFormat("yyyy-MM-dd");// 日志文件格式
- private static String LOG_FILE_PATH; // 日志文件保存路径
- private static String LOG_FILE_NAME;// 日志文件保存名称
-
- public static void init(Context context) { // 在Application中初始化
- LOG_FILE_PATH = FileUtils.createRootPath(context);
- LOG_FILE_NAME = "Log";
- }
-
- /**************************** Warn *********************************/
- public static void w(Object msg) {
- w(LOG_TAG, msg);
- }
-
- public static void w(String tag, Object msg) {
- w(tag, msg, null);
- }
-
- public static void w(String tag, Object msg, Throwable tr) {
- log(tag, msg.toString(), tr, 'w');
- }
-
- /*************************** Error ********************************/
- public static void e(Object msg) {
- e(LOG_TAG, msg);
- }
-
- public static void e(String tag, Object msg) {
- e(tag, msg, null);
- }
-
- public static void e(String tag, Object msg, Throwable tr) {
- log(tag, msg.toString(), tr, 'e');
- }
-
- /*************************** Debug ********************************/
- public static void d(Object msg) {
- d(LOG_TAG, msg);
- }
-
- public static void d(String tag, Object msg) {// 调试信息
- d(tag, msg, null);
- }
-
- public static void d(String tag, Object msg, Throwable tr) {
- log(tag, msg.toString(), tr, 'd');
- }
-
- /**************************** Info *********************************/
- public static void i(Object msg) {
- i(LOG_TAG, msg);
- }
-
- public static void i(String tag, Object msg) {
- i(tag, msg, null);
- }
-
- public static void i(String tag, Object msg, Throwable tr) {
- log(tag, msg.toString(), tr, 'i');
- }
-
- /************************** Verbose ********************************/
- public static void v(Object msg) {
- v(LOG_TAG, msg);
- }
-
- public static void v(String tag, Object msg) {
- v(tag, msg, null);
- }
-
- public static void v(String tag, Object msg, Throwable tr) {
- log(tag, msg.toString(), tr, 'v');
- }
-
- /**
- * 根据tag, msg和等级,输出日志
- *
- * @param tag
- * @param msg
- * @param level
- */
- private static void log(String tag, String msg, Throwable tr, char level) {
- if (LOG_SWITCH) {
- if ('e' == level && ('e' == LOG_TYPE || 'v' == LOG_TYPE)) { // 输出错误信息
- Log.e(tag, msg, tr);
- } else if ('w' == level && ('w' == LOG_TYPE || 'v' == LOG_TYPE)) {
- Log.w(tag, msg, tr);
- } else if ('d' == level && ('d' == LOG_TYPE || 'v' == LOG_TYPE)) {
- Log.d(tag, msg, tr);
- } else if ('i' == level && ('d' == LOG_TYPE || 'v' == LOG_TYPE)) {
- Log.i(tag, msg, tr);
- } else {
- Log.v(tag, msg, tr);
- }
- if (LOG_TO_FILE)
- log2File(String.valueOf(level), tag, msg + tr == null ? "" : "\n" + Log.getStackTraceString(tr));
- }
- }
-
- /**
- * 打开日志文件并写入日志
- *
- * @return
- **/
- private synchronized static void log2File(String mylogtype, String tag, String text) {
- Date nowtime = new Date();
- String date = FILE_SUFFIX.format(nowtime);
- String dateLogContent = LOG_FORMAT.format(nowtime) + ":" + mylogtype + ":" + tag + ":" + text; // 日志输出格式
- File destDir = new File(LOG_FILE_PATH);
- if (!destDir.exists()) {
- destDir.mkdirs();
- }
- File file = new File(LOG_FILE_PATH, LOG_FILE_NAME + date);
- try {
- FileWriter filerWriter = new FileWriter(file, true);
- BufferedWriter bufWriter = new BufferedWriter(filerWriter);
- bufWriter.write(dateLogContent);
- bufWriter.newLine();
- bufWriter.close();
- filerWriter.close();
- } catch (IOException e) {
- e.printStackTrace();
- }
- }
-
- /**
- * 删除指定的日志文件
- */
- public static void delFile() {// 删除日志文件
- String needDelFiel = FILE_SUFFIX.format(getDateBefore());
- File file = new File(LOG_FILE_PATH, needDelFiel + LOG_FILE_NAME);
- if (file.exists()) {
- file.delete();
- }
- }
-
- /**
- * 得到LOG_SAVE_DAYS天前的日期
- *
- * @return
- */
- private static Date getDateBefore() {
- Date nowtime = new Date();
- Calendar now = Calendar.getInstance();
- now.setTime(nowtime);
- now.set(Calendar.DATE, now.get(Calendar.DATE) - LOG_SAVE_DAYS);
- return now.getTime();
- }
-}
diff --git a/img-selector/src/main/java/com/yuyh/library/imgsel/utils/StatusBarCompat.java b/img-selector/src/main/java/com/yuyh/library/imgsel/utils/StatusBarCompat.java
deleted file mode 100644
index c5d61d4..0000000
--- a/img-selector/src/main/java/com/yuyh/library/imgsel/utils/StatusBarCompat.java
+++ /dev/null
@@ -1,59 +0,0 @@
-package com.yuyh.library.imgsel.utils;
-
-import android.annotation.TargetApi;
-import android.app.Activity;
-import android.content.Context;
-import android.graphics.Color;
-import android.os.Build;
-import android.view.View;
-import android.view.ViewGroup;
-
-public class StatusBarCompat {
- private static final int INVALID_VAL = -1;
- private static final int COLOR_DEFAULT = Color.parseColor("#20000000");
-
- @TargetApi(Build.VERSION_CODES.LOLLIPOP)
- public static void compat(Activity activity, int statusColor) {
-
- if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP) {
- if (statusColor != INVALID_VAL) {
- activity.getWindow().setStatusBarColor(statusColor);
- }
- return;
- }
-
- if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.KITKAT && Build.VERSION.SDK_INT < Build.VERSION_CODES.LOLLIPOP) {
- int color = COLOR_DEFAULT;
- ViewGroup contentView = (ViewGroup) activity.findViewById(android.R.id.content);
- if (statusColor != INVALID_VAL) {
- color = statusColor;
- }
- View statusBarView = contentView.getChildAt(0);
- //改变颜色时避免重复添加statusBarView
- if (statusBarView != null && statusBarView.getMeasuredHeight() == getStatusBarHeight(activity)) {
- statusBarView.setBackgroundColor(color);
- return;
- }
- statusBarView = new View(activity);
- ViewGroup.LayoutParams lp = new ViewGroup.LayoutParams(ViewGroup.LayoutParams.MATCH_PARENT,
- getStatusBarHeight(activity));
- statusBarView.setBackgroundColor(color);
- contentView.addView(statusBarView, lp);
- }
-
- }
-
- public static void compat(Activity activity) {
- compat(activity, INVALID_VAL);
- }
-
-
- public static int getStatusBarHeight(Context context) {
- int result = 0;
- int resourceId = context.getResources().getIdentifier("status_bar_height", "dimen", "android");
- if (resourceId > 0) {
- result = context.getResources().getDimensionPixelSize(resourceId);
- }
- return result;
- }
-}
\ No newline at end of file
diff --git a/img-selector/src/main/java/com/yuyh/library/imgsel/widget/CustomViewPager.java b/img-selector/src/main/java/com/yuyh/library/imgsel/widget/CustomViewPager.java
deleted file mode 100644
index 93e5997..0000000
--- a/img-selector/src/main/java/com/yuyh/library/imgsel/widget/CustomViewPager.java
+++ /dev/null
@@ -1,52 +0,0 @@
-package com.yuyh.library.imgsel.widget;
-
-import android.content.Context;
-import android.support.v4.view.ViewPager;
-import android.util.AttributeSet;
-import android.view.MotionEvent;
-
-public class CustomViewPager extends ViewPager {
-
- private boolean isLocked;
-
- public CustomViewPager(Context context) {
- super(context);
- isLocked = false;
- }
-
- public CustomViewPager(Context context, AttributeSet attrs) {
- super(context, attrs);
- isLocked = false;
- }
-
- @Override
- public boolean onInterceptTouchEvent(MotionEvent ev) {
- if (!isLocked) {
- try {
- return super.onInterceptTouchEvent(ev);
- } catch (IllegalArgumentException e) {
- e.printStackTrace();
- return false;
- }
- }
- return false;
- }
-
- @Override
- public boolean onTouchEvent(MotionEvent event) {
- return !isLocked && super.onTouchEvent(event);
- }
-
- public void toggleLock() {
- isLocked = !isLocked;
- }
-
- public void setLocked(boolean isLocked) {
- this.isLocked = isLocked;
- }
-
- public boolean isLocked() {
- return isLocked;
- }
-
-}
\ No newline at end of file
diff --git a/img-selector/src/main/java/com/yuyh/library/imgsel/widget/DividerGridItemDecoration.java b/img-selector/src/main/java/com/yuyh/library/imgsel/widget/DividerGridItemDecoration.java
deleted file mode 100644
index 94caf92..0000000
--- a/img-selector/src/main/java/com/yuyh/library/imgsel/widget/DividerGridItemDecoration.java
+++ /dev/null
@@ -1,172 +0,0 @@
-package com.yuyh.library.imgsel.widget;
-
-import android.content.Context;
-import android.content.res.TypedArray;
-import android.graphics.Canvas;
-import android.graphics.Rect;
-import android.graphics.drawable.Drawable;
-import android.support.v7.widget.GridLayoutManager;
-import android.support.v7.widget.RecyclerView;
-import android.support.v7.widget.RecyclerView.LayoutManager;
-import android.support.v7.widget.RecyclerView.State;
-import android.support.v7.widget.StaggeredGridLayoutManager;
-import android.view.View;
-
-public class DividerGridItemDecoration extends RecyclerView.ItemDecoration
-{
-
- private static final int[] ATTRS = new int[] { android.R.attr.listDivider };
- private Drawable mDivider;
-
- public DividerGridItemDecoration(Context context)
- {
- final TypedArray a = context.obtainStyledAttributes(ATTRS);
- mDivider = a.getDrawable(0);
- a.recycle();
- }
-
- @Override
- public void onDraw(Canvas c, RecyclerView parent, State state)
- {
-
- drawHorizontal(c, parent);
- drawVertical(c, parent);
-
- }
-
- private int getSpanCount(RecyclerView parent)
- {
- // 列数
- int spanCount = -1;
- LayoutManager layoutManager = parent.getLayoutManager();
- if (layoutManager instanceof GridLayoutManager)
- {
-
- spanCount = ((GridLayoutManager) layoutManager).getSpanCount();
- } else if (layoutManager instanceof StaggeredGridLayoutManager)
- {
- spanCount = ((StaggeredGridLayoutManager) layoutManager)
- .getSpanCount();
- }
- return spanCount;
- }
-
- public void drawHorizontal(Canvas c, RecyclerView parent)
- {
- int childCount = parent.getChildCount();
- for (int i = 0; i < childCount; i++)
- {
- final View child = parent.getChildAt(i);
- final RecyclerView.LayoutParams params = (RecyclerView.LayoutParams) child
- .getLayoutParams();
- final int left = child.getLeft() - params.leftMargin;
- final int right = child.getRight() + params.rightMargin
- + mDivider.getIntrinsicWidth();
- final int top = child.getBottom() + params.bottomMargin;
- final int bottom = top + mDivider.getIntrinsicHeight();
- mDivider.setBounds(left, top, right, bottom);
- mDivider.draw(c);
- }
- }
-
- public void drawVertical(Canvas c, RecyclerView parent)
- {
- final int childCount = parent.getChildCount();
- for (int i = 0; i < childCount; i++)
- {
- final View child = parent.getChildAt(i);
-
- final RecyclerView.LayoutParams params = (RecyclerView.LayoutParams) child
- .getLayoutParams();
- final int top = child.getTop() - params.topMargin;
- final int bottom = child.getBottom() + params.bottomMargin;
- final int left = child.getRight() + params.rightMargin;
- final int right = left + mDivider.getIntrinsicWidth();
-
- mDivider.setBounds(left, top, right, bottom);
- mDivider.draw(c);
- }
- }
-
- private boolean isLastColum(RecyclerView parent, int pos, int spanCount,
- int childCount)
- {
- LayoutManager layoutManager = parent.getLayoutManager();
- if (layoutManager instanceof GridLayoutManager)
- {
- if ((pos + 1) % spanCount == 0)// 如果是最后一列,则不需要绘制右边
- {
- return true;
- }
- } else if (layoutManager instanceof StaggeredGridLayoutManager)
- {
- int orientation = ((StaggeredGridLayoutManager) layoutManager)
- .getOrientation();
- if (orientation == StaggeredGridLayoutManager.VERTICAL)
- {
- if ((pos + 1) % spanCount == 0)// 如果是最后一列,则不需要绘制右边
- {
- return true;
- }
- } else
- {
- childCount = childCount - childCount % spanCount;
- if (pos >= childCount)// 如果是最后一列,则不需要绘制右边
- return true;
- }
- }
- return false;
- }
-
- private boolean isLastRaw(RecyclerView parent, int pos, int spanCount,
- int childCount)
- {
- LayoutManager layoutManager = parent.getLayoutManager();
- if (layoutManager instanceof GridLayoutManager)
- {
- childCount = childCount - childCount % spanCount;
- if (pos >= childCount)// 如果是最后一行,则不需要绘制底部
- return true;
- } else if (layoutManager instanceof StaggeredGridLayoutManager)
- {
- int orientation = ((StaggeredGridLayoutManager) layoutManager)
- .getOrientation();
- // StaggeredGridLayoutManager 且纵向滚动
- if (orientation == StaggeredGridLayoutManager.VERTICAL)
- {
- childCount = childCount - childCount % spanCount;
- // 如果是最后一行,则不需要绘制底部
- if (pos >= childCount)
- return true;
- } else
- // StaggeredGridLayoutManager 且横向滚动
- {
- // 如果是最后一行,则不需要绘制底部
- if ((pos + 1) % spanCount == 0)
- {
- return true;
- }
- }
- }
- return false;
- }
-
- @Override
- public void getItemOffsets(Rect outRect, int itemPosition,
- RecyclerView parent)
- {
- int spanCount = getSpanCount(parent);
- int childCount = parent.getAdapter().getItemCount();
- if (isLastRaw(parent, itemPosition, spanCount, childCount))// 如果是最后一行,则不需要绘制底部
- {
- outRect.set(0, 0, mDivider.getIntrinsicWidth(), 0);
- } else if (isLastColum(parent, itemPosition, spanCount, childCount))// 如果是最后一列,则不需要绘制右边
- {
- outRect.set(0, 0, 0, mDivider.getIntrinsicHeight());
- } else
- {
- outRect.set(0, 0, mDivider.getIntrinsicWidth(),
- mDivider.getIntrinsicHeight());
- }
- }
-}
\ No newline at end of file
diff --git a/img-selector/src/main/java/com/yuyh/library/imgsel/widget/SquareRelativeLayout.java b/img-selector/src/main/java/com/yuyh/library/imgsel/widget/SquareRelativeLayout.java
deleted file mode 100644
index 601767e..0000000
--- a/img-selector/src/main/java/com/yuyh/library/imgsel/widget/SquareRelativeLayout.java
+++ /dev/null
@@ -1,34 +0,0 @@
-package com.yuyh.library.imgsel.widget;
-
-import android.content.Context;
-import android.util.AttributeSet;
-import android.widget.RelativeLayout;
-
-public class SquareRelativeLayout extends RelativeLayout {
-
- public SquareRelativeLayout(Context context, AttributeSet attrs,
- int defStyle) {
- super(context, attrs, defStyle);
- }
-
- public SquareRelativeLayout(Context context, AttributeSet attrs) {
- super(context, attrs);
- }
-
- public SquareRelativeLayout(Context context) {
- super(context);
- }
-
- @Override
- protected void onMeasure(int widthMeasureSpec, int heightMeasureSpec) {
- setMeasuredDimension(getDefaultSize(0, widthMeasureSpec),
- getDefaultSize(0, heightMeasureSpec));
-
- int childWidthSize = getMeasuredWidth();
- // 高度和宽度一样
- heightMeasureSpec = widthMeasureSpec = MeasureSpec.makeMeasureSpec(
- childWidthSize, MeasureSpec.EXACTLY);
- super.onMeasure(widthMeasureSpec, heightMeasureSpec);
- }
-
-}
\ No newline at end of file
diff --git a/img-selector/src/main/res/drawable-hdpi/ic_album.png b/img-selector/src/main/res/drawable-hdpi/ic_album.png
deleted file mode 100644
index baf9d71..0000000
Binary files a/img-selector/src/main/res/drawable-hdpi/ic_album.png and /dev/null differ
diff --git a/img-selector/src/main/res/drawable-hdpi/ic_back.png b/img-selector/src/main/res/drawable-hdpi/ic_back.png
deleted file mode 100644
index 49c5593..0000000
Binary files a/img-selector/src/main/res/drawable-hdpi/ic_back.png and /dev/null differ
diff --git a/img-selector/src/main/res/drawable-hdpi/ic_checked.png b/img-selector/src/main/res/drawable-hdpi/ic_checked.png
deleted file mode 100644
index b473989..0000000
Binary files a/img-selector/src/main/res/drawable-hdpi/ic_checked.png and /dev/null differ
diff --git a/img-selector/src/main/res/drawable-hdpi/ic_default_image.png b/img-selector/src/main/res/drawable-hdpi/ic_default_image.png
deleted file mode 100644
index bc63dc5..0000000
Binary files a/img-selector/src/main/res/drawable-hdpi/ic_default_image.png and /dev/null differ
diff --git a/img-selector/src/main/res/drawable-hdpi/ic_folder_selected.png b/img-selector/src/main/res/drawable-hdpi/ic_folder_selected.png
deleted file mode 100644
index 37ab1f2..0000000
Binary files a/img-selector/src/main/res/drawable-hdpi/ic_folder_selected.png and /dev/null differ
diff --git a/img-selector/src/main/res/drawable-hdpi/ic_take_photo.png b/img-selector/src/main/res/drawable-hdpi/ic_take_photo.png
deleted file mode 100644
index 7463196..0000000
Binary files a/img-selector/src/main/res/drawable-hdpi/ic_take_photo.png and /dev/null differ
diff --git a/img-selector/src/main/res/drawable-hdpi/ic_uncheck.png b/img-selector/src/main/res/drawable-hdpi/ic_uncheck.png
deleted file mode 100644
index 8853b27..0000000
Binary files a/img-selector/src/main/res/drawable-hdpi/ic_uncheck.png and /dev/null differ
diff --git a/img-selector/src/main/res/drawable-mdpi/ic_album.png b/img-selector/src/main/res/drawable-mdpi/ic_album.png
deleted file mode 100644
index cada6a9..0000000
Binary files a/img-selector/src/main/res/drawable-mdpi/ic_album.png and /dev/null differ
diff --git a/img-selector/src/main/res/drawable-mdpi/ic_back.png b/img-selector/src/main/res/drawable-mdpi/ic_back.png
deleted file mode 100644
index 421a6ba..0000000
Binary files a/img-selector/src/main/res/drawable-mdpi/ic_back.png and /dev/null differ
diff --git a/img-selector/src/main/res/drawable-mdpi/ic_checked.png b/img-selector/src/main/res/drawable-mdpi/ic_checked.png
deleted file mode 100644
index 4e4136e..0000000
Binary files a/img-selector/src/main/res/drawable-mdpi/ic_checked.png and /dev/null differ
diff --git a/img-selector/src/main/res/drawable-mdpi/ic_default_image.png b/img-selector/src/main/res/drawable-mdpi/ic_default_image.png
deleted file mode 100644
index 8baf850..0000000
Binary files a/img-selector/src/main/res/drawable-mdpi/ic_default_image.png and /dev/null differ
diff --git a/img-selector/src/main/res/drawable-mdpi/ic_folder_selected.png b/img-selector/src/main/res/drawable-mdpi/ic_folder_selected.png
deleted file mode 100644
index cdfa1d5..0000000
Binary files a/img-selector/src/main/res/drawable-mdpi/ic_folder_selected.png and /dev/null differ
diff --git a/img-selector/src/main/res/drawable-mdpi/ic_take_photo.png b/img-selector/src/main/res/drawable-mdpi/ic_take_photo.png
deleted file mode 100644
index 240b733..0000000
Binary files a/img-selector/src/main/res/drawable-mdpi/ic_take_photo.png and /dev/null differ
diff --git a/img-selector/src/main/res/drawable-mdpi/ic_uncheck.png b/img-selector/src/main/res/drawable-mdpi/ic_uncheck.png
deleted file mode 100644
index 968eb44..0000000
Binary files a/img-selector/src/main/res/drawable-mdpi/ic_uncheck.png and /dev/null differ
diff --git a/img-selector/src/main/res/drawable-xhdpi/ic_album.png b/img-selector/src/main/res/drawable-xhdpi/ic_album.png
deleted file mode 100644
index 387306e..0000000
Binary files a/img-selector/src/main/res/drawable-xhdpi/ic_album.png and /dev/null differ
diff --git a/img-selector/src/main/res/drawable-xhdpi/ic_back.png b/img-selector/src/main/res/drawable-xhdpi/ic_back.png
deleted file mode 100644
index e4d8522..0000000
Binary files a/img-selector/src/main/res/drawable-xhdpi/ic_back.png and /dev/null differ
diff --git a/img-selector/src/main/res/drawable-xhdpi/ic_checked.png b/img-selector/src/main/res/drawable-xhdpi/ic_checked.png
deleted file mode 100644
index b6f2d9d..0000000
Binary files a/img-selector/src/main/res/drawable-xhdpi/ic_checked.png and /dev/null differ
diff --git a/img-selector/src/main/res/drawable-xhdpi/ic_default_image.png b/img-selector/src/main/res/drawable-xhdpi/ic_default_image.png
deleted file mode 100644
index 5beee31..0000000
Binary files a/img-selector/src/main/res/drawable-xhdpi/ic_default_image.png and /dev/null differ
diff --git a/img-selector/src/main/res/drawable-xhdpi/ic_folder_selected.png b/img-selector/src/main/res/drawable-xhdpi/ic_folder_selected.png
deleted file mode 100644
index 68a624d..0000000
Binary files a/img-selector/src/main/res/drawable-xhdpi/ic_folder_selected.png and /dev/null differ
diff --git a/img-selector/src/main/res/drawable-xhdpi/ic_take_photo.png b/img-selector/src/main/res/drawable-xhdpi/ic_take_photo.png
deleted file mode 100644
index 3427d44..0000000
Binary files a/img-selector/src/main/res/drawable-xhdpi/ic_take_photo.png and /dev/null differ
diff --git a/img-selector/src/main/res/drawable-xhdpi/ic_uncheck.png b/img-selector/src/main/res/drawable-xhdpi/ic_uncheck.png
deleted file mode 100644
index 2fc470a..0000000
Binary files a/img-selector/src/main/res/drawable-xhdpi/ic_uncheck.png and /dev/null differ
diff --git a/img-selector/src/main/res/drawable-xxhdpi/ic_album.png b/img-selector/src/main/res/drawable-xxhdpi/ic_album.png
deleted file mode 100644
index b2a9617..0000000
Binary files a/img-selector/src/main/res/drawable-xxhdpi/ic_album.png and /dev/null differ
diff --git a/img-selector/src/main/res/drawable-xxhdpi/ic_back.png b/img-selector/src/main/res/drawable-xxhdpi/ic_back.png
deleted file mode 100644
index 735f07f..0000000
Binary files a/img-selector/src/main/res/drawable-xxhdpi/ic_back.png and /dev/null differ
diff --git a/img-selector/src/main/res/drawable-xxhdpi/ic_checked.png b/img-selector/src/main/res/drawable-xxhdpi/ic_checked.png
deleted file mode 100644
index 15b15cf..0000000
Binary files a/img-selector/src/main/res/drawable-xxhdpi/ic_checked.png and /dev/null differ
diff --git a/img-selector/src/main/res/drawable-xxhdpi/ic_default_image.png b/img-selector/src/main/res/drawable-xxhdpi/ic_default_image.png
deleted file mode 100644
index 4577822..0000000
Binary files a/img-selector/src/main/res/drawable-xxhdpi/ic_default_image.png and /dev/null differ
diff --git a/img-selector/src/main/res/drawable-xxhdpi/ic_folder_selected.png b/img-selector/src/main/res/drawable-xxhdpi/ic_folder_selected.png
deleted file mode 100644
index a005bd2..0000000
Binary files a/img-selector/src/main/res/drawable-xxhdpi/ic_folder_selected.png and /dev/null differ
diff --git a/img-selector/src/main/res/drawable-xxhdpi/ic_take_photo.png b/img-selector/src/main/res/drawable-xxhdpi/ic_take_photo.png
deleted file mode 100644
index ada53a4..0000000
Binary files a/img-selector/src/main/res/drawable-xxhdpi/ic_take_photo.png and /dev/null differ
diff --git a/img-selector/src/main/res/drawable-xxhdpi/ic_uncheck.png b/img-selector/src/main/res/drawable-xxhdpi/ic_uncheck.png
deleted file mode 100644
index 2be0932..0000000
Binary files a/img-selector/src/main/res/drawable-xxhdpi/ic_uncheck.png and /dev/null differ
diff --git a/img-selector/src/main/res/drawable-xxxhdpi/ic_album.png b/img-selector/src/main/res/drawable-xxxhdpi/ic_album.png
deleted file mode 100644
index 032fcd3..0000000
Binary files a/img-selector/src/main/res/drawable-xxxhdpi/ic_album.png and /dev/null differ
diff --git a/img-selector/src/main/res/drawable-xxxhdpi/ic_back.png b/img-selector/src/main/res/drawable-xxxhdpi/ic_back.png
deleted file mode 100644
index e28db10..0000000
Binary files a/img-selector/src/main/res/drawable-xxxhdpi/ic_back.png and /dev/null differ
diff --git a/img-selector/src/main/res/drawable-xxxhdpi/ic_checked.png b/img-selector/src/main/res/drawable-xxxhdpi/ic_checked.png
deleted file mode 100644
index 4194b99..0000000
Binary files a/img-selector/src/main/res/drawable-xxxhdpi/ic_checked.png and /dev/null differ
diff --git a/img-selector/src/main/res/drawable-xxxhdpi/ic_default_image.png b/img-selector/src/main/res/drawable-xxxhdpi/ic_default_image.png
deleted file mode 100644
index 290f269..0000000
Binary files a/img-selector/src/main/res/drawable-xxxhdpi/ic_default_image.png and /dev/null differ
diff --git a/img-selector/src/main/res/drawable-xxxhdpi/ic_folder_selected.png b/img-selector/src/main/res/drawable-xxxhdpi/ic_folder_selected.png
deleted file mode 100644
index 11834b9..0000000
Binary files a/img-selector/src/main/res/drawable-xxxhdpi/ic_folder_selected.png and /dev/null differ
diff --git a/img-selector/src/main/res/drawable-xxxhdpi/ic_take_photo.png b/img-selector/src/main/res/drawable-xxxhdpi/ic_take_photo.png
deleted file mode 100644
index e268bfa..0000000
Binary files a/img-selector/src/main/res/drawable-xxxhdpi/ic_take_photo.png and /dev/null differ
diff --git a/img-selector/src/main/res/drawable-xxxhdpi/ic_uncheck.png b/img-selector/src/main/res/drawable-xxxhdpi/ic_uncheck.png
deleted file mode 100644
index 78874d5..0000000
Binary files a/img-selector/src/main/res/drawable-xxxhdpi/ic_uncheck.png and /dev/null differ
diff --git a/img-selector/src/main/res/layout/activity_img_sel.xml b/img-selector/src/main/res/layout/activity_img_sel.xml
deleted file mode 100644
index 95f6b8b..0000000
--- a/img-selector/src/main/res/layout/activity_img_sel.xml
+++ /dev/null
@@ -1,57 +0,0 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
diff --git a/img-selector/src/main/res/layout/fragment_img_sel.xml b/img-selector/src/main/res/layout/fragment_img_sel.xml
deleted file mode 100644
index 2ef9eac..0000000
--- a/img-selector/src/main/res/layout/fragment_img_sel.xml
+++ /dev/null
@@ -1,49 +0,0 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
diff --git a/img-selector/src/main/res/layout/item_img_sel.xml b/img-selector/src/main/res/layout/item_img_sel.xml
deleted file mode 100644
index 85338bd..0000000
--- a/img-selector/src/main/res/layout/item_img_sel.xml
+++ /dev/null
@@ -1,25 +0,0 @@
-
-
-
-
-
-
-
-
\ No newline at end of file
diff --git a/img-selector/src/main/res/layout/item_img_sel_folder.xml b/img-selector/src/main/res/layout/item_img_sel_folder.xml
deleted file mode 100644
index 6266ed5..0000000
--- a/img-selector/src/main/res/layout/item_img_sel_folder.xml
+++ /dev/null
@@ -1,68 +0,0 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
\ No newline at end of file
diff --git a/img-selector/src/main/res/layout/item_img_sel_take_photo.xml b/img-selector/src/main/res/layout/item_img_sel_take_photo.xml
deleted file mode 100644
index 009ecbc..0000000
--- a/img-selector/src/main/res/layout/item_img_sel_take_photo.xml
+++ /dev/null
@@ -1,22 +0,0 @@
-
-
-
-
-
-
-
-
\ No newline at end of file
diff --git a/img-selector/src/main/res/layout/item_pager_img_sel.xml b/img-selector/src/main/res/layout/item_pager_img_sel.xml
deleted file mode 100644
index a0d3a53..0000000
--- a/img-selector/src/main/res/layout/item_pager_img_sel.xml
+++ /dev/null
@@ -1,26 +0,0 @@
-
-
-
-
-
-
-
-
\ No newline at end of file
diff --git a/img-selector/src/main/res/values-v19/styles.xml b/img-selector/src/main/res/values-v19/styles.xml
deleted file mode 100644
index 7e512a0..0000000
--- a/img-selector/src/main/res/values-v19/styles.xml
+++ /dev/null
@@ -1,9 +0,0 @@
-
-
-
-
-
-
-
diff --git a/img-selector/src/main/res/values-v21/styles.xml b/img-selector/src/main/res/values-v21/styles.xml
deleted file mode 100644
index 1b227a1..0000000
--- a/img-selector/src/main/res/values-v21/styles.xml
+++ /dev/null
@@ -1,8 +0,0 @@
-
-
-
-
-
-
diff --git a/img-selector/src/main/res/values-w820dp/dimens.xml b/img-selector/src/main/res/values-w820dp/dimens.xml
deleted file mode 100644
index 63fc816..0000000
--- a/img-selector/src/main/res/values-w820dp/dimens.xml
+++ /dev/null
@@ -1,6 +0,0 @@
-
-
- 64dp
-
diff --git a/img-selector/src/main/res/values/colors.xml b/img-selector/src/main/res/values/colors.xml
deleted file mode 100644
index 3ab3e9c..0000000
--- a/img-selector/src/main/res/values/colors.xml
+++ /dev/null
@@ -1,6 +0,0 @@
-
-
- #3F51B5
- #303F9F
- #FF4081
-
diff --git a/img-selector/src/main/res/values/dimens.xml b/img-selector/src/main/res/values/dimens.xml
deleted file mode 100644
index 47c8224..0000000
--- a/img-selector/src/main/res/values/dimens.xml
+++ /dev/null
@@ -1,5 +0,0 @@
-
-
- 16dp
- 16dp
-
diff --git a/img-selector/src/main/res/values/ids.xml b/img-selector/src/main/res/values/ids.xml
deleted file mode 100644
index 6416621..0000000
--- a/img-selector/src/main/res/values/ids.xml
+++ /dev/null
@@ -1,4 +0,0 @@
-
-
-
-
\ No newline at end of file
diff --git a/img-selector/src/main/res/values/strings.xml b/img-selector/src/main/res/values/strings.xml
deleted file mode 100644
index a06b525..0000000
--- a/img-selector/src/main/res/values/strings.xml
+++ /dev/null
@@ -1,14 +0,0 @@
-
- library
-
- 最多选择%1$d张图片
- 所有图片
- SD卡不可用
-
- 确定(%1$d/%2$d)
- 确定
-
- 打开相机失败
-
- 请打开相机权限
-
diff --git a/img-selector/src/main/res/values/styles.xml b/img-selector/src/main/res/values/styles.xml
deleted file mode 100644
index ba7954e..0000000
--- a/img-selector/src/main/res/values/styles.xml
+++ /dev/null
@@ -1,17 +0,0 @@
-
-
-
-
-
-
-
-
-
diff --git a/settings.gradle b/settings.gradle
index c12e33e..9d495b3 100644
--- a/settings.gradle
+++ b/settings.gradle
@@ -1,2 +1 @@
-include ':app', ':img-selector'
-project(':img-selector').projectDir = new File('img-selector')
\ No newline at end of file
+include ':app'
\ No newline at end of file