diff --git a/app/build.gradle b/app/build.gradle
index 5dd0015..b508b2d 100644
--- a/app/build.gradle
+++ b/app/build.gradle
@@ -2,13 +2,13 @@ apply plugin: 'com.android.application'
android {
- compileSdkVersion 27
+ compileSdkVersion 29
defaultConfig {
applicationId "gun0912.tedbottompickerdemo"
minSdkVersion 16
- targetSdkVersion 26
+ targetSdkVersion 29
versionCode 1
versionName "1.0.0"
multiDexEnabled true
@@ -39,13 +39,13 @@ repositories {
dependencies {
implementation fileTree(include: ['*.jar'], dir: 'libs')
testImplementation 'junit:junit:4.12'
- implementation 'com.android.support:appcompat-v7:27.1.1'
+ implementation 'androidx.appcompat:appcompat:1.0.2'
implementation project(':tedbottompicker')
- implementation 'com.android.support:multidex:1.0.3'
+ implementation 'androidx.multidex:multidex:2.0.1'
implementation 'gun0912.ted:tedpermission:2.2.0'
- implementation 'com.github.bumptech.glide:glide:4.7.1'
- annotationProcessor 'com.github.bumptech.glide:compiler:4.7.1'
+ implementation "com.github.bumptech.glide:glide:$glide_version"
+ annotationProcessor "com.github.bumptech.glide:compiler:$glide_version"
debugImplementation 'com.squareup.leakcanary:leakcanary-android:1.6.3'
releaseImplementation 'com.squareup.leakcanary:leakcanary-android-no-op:1.6.3'
diff --git a/app/src/main/java/gun0912/tedbottompickerdemo/MainActivity.java b/app/src/main/java/gun0912/tedbottompickerdemo/MainActivity.java
index 754e98e..f869c2b 100644
--- a/app/src/main/java/gun0912/tedbottompickerdemo/MainActivity.java
+++ b/app/src/main/java/gun0912/tedbottompickerdemo/MainActivity.java
@@ -3,7 +3,6 @@
import android.Manifest;
import android.net.Uri;
import android.os.Bundle;
-import android.support.v7.app.AppCompatActivity;
import android.util.Log;
import android.util.TypedValue;
import android.view.LayoutInflater;
@@ -14,11 +13,14 @@
import android.widget.ImageView;
import android.widget.Toast;
+import androidx.appcompat.app.AppCompatActivity;
+
import com.bumptech.glide.Glide;
import com.bumptech.glide.RequestManager;
import com.bumptech.glide.request.RequestOptions;
import com.gun0912.tedpermission.PermissionListener;
import com.gun0912.tedpermission.TedPermission;
+import com.theartofdev.edmodo.cropper.CropImageView;
import java.util.ArrayList;
import java.util.List;
@@ -64,6 +66,8 @@ public void onPermissionGranted() {
//.setPeekHeight(getResources().getDisplayMetrics().heightPixels/2)
.setSelectedUri(selectedUri)
//.showVideoMedia()
+ .setCropper(true)
+ .setResize(500, 500, CropImageView.RequestSizeOptions.RESIZE_INSIDE)
.setPeekHeight(1200)
.show(uri -> {
Log.d("ted", "uri: " + uri);
@@ -105,6 +109,9 @@ public void onPermissionGranted() {
TedBottomPicker.with(MainActivity.this)
//.setPeekHeight(getResources().getDisplayMetrics().heightPixels/2)
.setPeekHeight(1600)
+ .setCropper(true)
+ .setCropperRatio(1, 1)
+ .setResize(500, 500, CropImageView.RequestSizeOptions.RESIZE_INSIDE)
.showTitle(false)
.setCompleteButtonText("Done")
.setEmptySelectionText("No Select")
@@ -114,7 +121,6 @@ public void onPermissionGranted() {
showUriList(uriList);
});
-
}
@Override
diff --git a/app/src/main/java/gun0912/tedbottompickerdemo/MyApplication.java b/app/src/main/java/gun0912/tedbottompickerdemo/MyApplication.java
index ae7ee41..74a29f3 100644
--- a/app/src/main/java/gun0912/tedbottompickerdemo/MyApplication.java
+++ b/app/src/main/java/gun0912/tedbottompickerdemo/MyApplication.java
@@ -1,7 +1,8 @@
package gun0912.tedbottompickerdemo;
import android.app.Application;
-import android.support.multidex.MultiDexApplication;
+
+import androidx.multidex.MultiDexApplication;
import com.squareup.leakcanary.LeakCanary;
diff --git a/build.gradle b/build.gradle
index f3f92b4..9c82403 100644
--- a/build.gradle
+++ b/build.gradle
@@ -1,21 +1,26 @@
// Top-level build file where you can add configuration options common to all sub-projects/modules.
buildscript {
+ ext.glide_version = '4.9.0'
repositories {
jcenter()
google()
}
dependencies {
- classpath 'com.android.tools.build:gradle:3.3.2'
- classpath 'com.jfrog.bintray.gradle:gradle-bintray-plugin:1.7.3'
+ classpath 'com.android.tools.build:gradle:3.4.2'
+ classpath 'com.jfrog.bintray.gradle:gradle-bintray-plugin:1.8.4'
+
classpath 'com.github.dcendents:android-maven-gradle-plugin:2.0'
}
+
}
allprojects {
repositories {
jcenter()
google()
+ maven { url "https://jitpack.io" }
+
}
group = GROUP
diff --git a/gradle.properties b/gradle.properties
index 76e05fe..df08931 100644
--- a/gradle.properties
+++ b/gradle.properties
@@ -29,3 +29,5 @@ LIBRARY_DESCRIPTION = 'TedBottomPicker is simple image picker using bottom sheet
POM_ARTIFACT_ID=tedbottompicker
POM_NAME=TedBottomPicker
+android.enableJetifier=true
+android.useAndroidX=true
diff --git a/gradle/wrapper/gradle-wrapper.properties b/gradle/wrapper/gradle-wrapper.properties
index ec6dc00..04bd6f8 100644
--- a/gradle/wrapper/gradle-wrapper.properties
+++ b/gradle/wrapper/gradle-wrapper.properties
@@ -1,6 +1,7 @@
-#Wed Jun 05 20:54:30 KST 2019
+#Thu Sep 05 11:11:10 NPT 2019
distributionBase=GRADLE_USER_HOME
distributionPath=wrapper/dists
zipStoreBase=GRADLE_USER_HOME
zipStorePath=wrapper/dists
-distributionUrl=https\://services.gradle.org/distributions/gradle-4.10.1-all.zip
+distributionUrl=https\://services.gradle.org/distributions/gradle-5.1.1-all.zip
+
diff --git a/tedbottompicker/build.gradle b/tedbottompicker/build.gradle
index b94dd0e..72c7084 100644
--- a/tedbottompicker/build.gradle
+++ b/tedbottompicker/build.gradle
@@ -3,12 +3,12 @@ apply plugin: 'com.android.library'
android {
- compileSdkVersion 27
+ compileSdkVersion 29
defaultConfig {
minSdkVersion 16
- targetSdkVersion 24
+ targetSdkVersion 29
versionCode 1
versionName "1.0"
}
@@ -45,14 +45,19 @@ repositories {
dependencies {
implementation fileTree(include: ['*.jar'], dir: 'libs')
testCompile 'junit:junit:4.12'
- implementation 'com.android.support:appcompat-v7:27.1.1'
- api 'com.android.support:design:27.1.1'
- implementation 'com.android.support:support-annotations:27.1.1'
- javadocDeps 'com.android.support:support-annotations:27.1.1'
- implementation 'com.github.bumptech.glide:glide:4.9.0'
- annotationProcessor 'com.github.bumptech.glide:compiler:4.9.0'
+ implementation 'androidx.appcompat:appcompat:1.0.2'
+ api 'com.google.android.material:material:1.0.0'
+ implementation 'androidx.annotation:annotation:1.1.0'
+ javadocDeps 'androidx.annotation:annotation:1.1.0'
+ implementation "com.github.bumptech.glide:glide:$glide_version"
+ annotationProcessor "com.github.bumptech.glide:compiler:$glide_version"
+
implementation 'gun0912.ted:tedonactivityresult:1.0.6'
implementation "io.reactivex.rxjava2:rxjava:2.2.6"
+ api 'com.theartofdev.edmodo:android-image-cropper:2.8.0'
+
+
+
}
apply from: rootProject.file('publish.gradle')
\ No newline at end of file
diff --git a/tedbottompicker/proguard-rules.pro b/tedbottompicker/proguard-rules.pro
index 39552e4..296c806 100644
--- a/tedbottompicker/proguard-rules.pro
+++ b/tedbottompicker/proguard-rules.pro
@@ -23,4 +23,5 @@
}
# for DexGuard only
--keepresourcexmlelements manifest/application/meta-data@value=GlideModule
\ No newline at end of file
+-keepresourcexmlelements manifest/application/meta-data@value=GlideModule
+-keep class androidx.appcompat.widget.** { *; }
diff --git a/tedbottompicker/src/main/AndroidManifest.xml b/tedbottompicker/src/main/AndroidManifest.xml
index 016b06c..82a9df3 100644
--- a/tedbottompicker/src/main/AndroidManifest.xml
+++ b/tedbottompicker/src/main/AndroidManifest.xml
@@ -5,7 +5,7 @@
@@ -13,6 +13,8 @@
android:name="android.support.FILE_PROVIDER_PATHS"
android:resource="@xml/provider_paths"/>
+
diff --git a/tedbottompicker/src/main/java/gun0912/tedbottompicker/GridSpacingItemDecoration.java b/tedbottompicker/src/main/java/gun0912/tedbottompicker/GridSpacingItemDecoration.java
index 87e1526..b728e4e 100644
--- a/tedbottompicker/src/main/java/gun0912/tedbottompicker/GridSpacingItemDecoration.java
+++ b/tedbottompicker/src/main/java/gun0912/tedbottompicker/GridSpacingItemDecoration.java
@@ -1,9 +1,10 @@
package gun0912.tedbottompicker;
import android.graphics.Rect;
-import android.support.v7.widget.RecyclerView;
import android.view.View;
+import androidx.recyclerview.widget.RecyclerView;
+
/**
* Created by TedPark on 2016. 8. 30..
*/
diff --git a/tedbottompicker/src/main/java/gun0912/tedbottompicker/TedBottomPicker.java b/tedbottompicker/src/main/java/gun0912/tedbottompicker/TedBottomPicker.java
index cc6e8cf..0804179 100644
--- a/tedbottompicker/src/main/java/gun0912/tedbottompicker/TedBottomPicker.java
+++ b/tedbottompicker/src/main/java/gun0912/tedbottompicker/TedBottomPicker.java
@@ -1,6 +1,7 @@
package gun0912.tedbottompicker;
-import android.support.v4.app.FragmentActivity;
+
+import androidx.fragment.app.FragmentActivity;
public class TedBottomPicker extends TedBottomSheetDialogFragment {
diff --git a/tedbottompicker/src/main/java/gun0912/tedbottompicker/TedBottomSheetDialogFragment.java b/tedbottompicker/src/main/java/gun0912/tedbottompicker/TedBottomSheetDialogFragment.java
index ac9e277..2ee3423 100644
--- a/tedbottompicker/src/main/java/gun0912/tedbottompicker/TedBottomSheetDialogFragment.java
+++ b/tedbottompicker/src/main/java/gun0912/tedbottompicker/TedBottomSheetDialogFragment.java
@@ -1,7 +1,6 @@
package gun0912.tedbottompicker;
import android.Manifest;
-import android.app.Activity;
import android.app.Dialog;
import android.content.Intent;
import android.content.pm.PackageManager;
@@ -13,23 +12,6 @@
import android.os.Bundle;
import android.os.Environment;
import android.provider.MediaStore;
-import android.support.annotation.ColorRes;
-import android.support.annotation.DimenRes;
-import android.support.annotation.DrawableRes;
-import android.support.annotation.IntDef;
-import android.support.annotation.NonNull;
-import android.support.annotation.Nullable;
-import android.support.annotation.StringRes;
-import android.support.design.widget.BottomSheetBehavior;
-import android.support.design.widget.BottomSheetDialogFragment;
-import android.support.design.widget.CoordinatorLayout;
-import android.support.v4.app.FragmentActivity;
-import android.support.v4.app.FragmentManager;
-import android.support.v4.app.FragmentTransaction;
-import android.support.v4.content.ContextCompat;
-import android.support.v4.content.FileProvider;
-import android.support.v7.widget.GridLayoutManager;
-import android.support.v7.widget.RecyclerView;
import android.text.TextUtils;
import android.view.LayoutInflater;
import android.view.View;
@@ -40,10 +22,30 @@
import android.widget.TextView;
import android.widget.Toast;
+import androidx.annotation.ColorRes;
+import androidx.annotation.DimenRes;
+import androidx.annotation.DrawableRes;
+import androidx.annotation.IntDef;
+import androidx.annotation.NonNull;
+import androidx.annotation.Nullable;
+import androidx.annotation.StringRes;
+import androidx.coordinatorlayout.widget.CoordinatorLayout;
+import androidx.core.content.ContextCompat;
+import androidx.core.content.FileProvider;
+import androidx.fragment.app.FragmentActivity;
+import androidx.fragment.app.FragmentManager;
+import androidx.fragment.app.FragmentTransaction;
+import androidx.recyclerview.widget.GridLayoutManager;
+import androidx.recyclerview.widget.RecyclerView;
+
import com.bumptech.glide.Glide;
import com.bumptech.glide.request.RequestOptions;
+import com.google.android.material.bottomsheet.BottomSheetBehavior;
+import com.google.android.material.bottomsheet.BottomSheetDialogFragment;
import com.gun0912.tedonactivityresult.TedOnActivityResult;
import com.gun0912.tedonactivityresult.listener.OnActivityResultListener;
+import com.theartofdev.edmodo.cropper.CropImage;
+import com.theartofdev.edmodo.cropper.CropImageView;
import java.io.File;
import java.io.IOException;
@@ -58,6 +60,8 @@
import gun0912.tedbottompicker.adapter.GalleryAdapter;
import gun0912.tedbottompicker.util.RealPathUtil;
+import static android.app.Activity.RESULT_OK;
+
public class TedBottomSheetDialogFragment extends BottomSheetDialogFragment {
private static final String EXTRA_CAMERA_IMAGE_URI = "camera_image_uri";
@@ -280,12 +284,26 @@ private void complete(final Uri uri) {
}
} else {
- builder.onImageSelectedListener.onImageSelected(uri);
- dismissAllowingStateLoss();
+ if (builder.setCropper) {
+ openCropper(uri);
+ } else {
+ builder.onImageSelectedListener.onImageSelected(uri);
+ dismissAllowingStateLoss();
+ }
}
}
+ private void openCropper(Uri uri) {
+ CropImage.ActivityBuilder bi = CropImage.activity(uri);
+ if (builder.ratioX > 0) {
+ bi.setAspectRatio(builder.ratioX, builder.ratioY);
+ }
+ if (builder.resizeWidth > 0)
+ bi.setRequestedSize(builder.resizeWidth, builder.resizeHeight, builder.resizeOption);
+ bi.start(getContext(), this);
+ }
+
private void addUri(final Uri uri) {
if (selectedUriList.size() == builder.selectMaxCount) {
String message;
@@ -298,8 +316,15 @@ private void addUri(final Uri uri) {
Toast.makeText(getActivity(), message, Toast.LENGTH_SHORT).show();
return;
}
+ if (builder.setCropper) {
+ openCropper(uri);
+ } else {
+ setToLayout(uri);
+ }
+ }
+ private void setToLayout(Uri uri) {
selectedUriList.add(uri);
final View rootView = LayoutInflater.from(getActivity()).inflate(R.layout.tedbottompicker_selected_item, null);
@@ -345,6 +370,26 @@ public void onClick(View v) {
}
+ @Override
+ public void onActivityResult(int requestCode, int resultCode, Intent data) {
+ if (requestCode == CropImage.CROP_IMAGE_ACTIVITY_REQUEST_CODE) {
+ CropImage.ActivityResult result = CropImage.getActivityResult(data);
+ if (resultCode == RESULT_OK) {
+ Uri resultUri = result.getUri();
+ if (isMultiSelect()) setToLayout(resultUri);
+ else {
+ builder.onImageSelectedListener.onImageSelected(resultUri);
+ dismissAllowingStateLoss();
+
+ }
+
+ } else if (resultCode == CropImage.CROP_IMAGE_ACTIVITY_RESULT_ERROR_CODE) {
+ Exception error = result.getError();
+ errorMessage(error.getMessage());
+ }
+ }
+ }
+
private void removeImage(Uri uri) {
selectedUriList.remove(uri);
@@ -409,7 +454,7 @@ private void startCameraIntent() {
.setListener(new OnActivityResultListener() {
@Override
public void onActivityResult(int resultCode, Intent data) {
- if (resultCode == Activity.RESULT_OK) {
+ if (resultCode == RESULT_OK) {
onActivityResultCamera(cameraImageUri);
}
}
@@ -507,7 +552,7 @@ private void startGalleryIntent() {
.setListener(new OnActivityResultListener() {
@Override
public void onActivityResult(int resultCode, Intent data) {
- if (resultCode == Activity.RESULT_OK) {
+ if (resultCode == RESULT_OK) {
onActivityResultGallery(data);
}
}
@@ -630,6 +675,12 @@ public abstract static class BaseBuilder {
private int spacing = 1;
private boolean includeEdgeSpacing = false;
private int peekHeight = -1;
+ private boolean setCropper = false;
+ private int resizeWidth = 0;
+ private int resizeHeight = 0;
+ private CropImageView.RequestSizeOptions resizeOption = CropImageView.RequestSizeOptions.NONE;
+ private int ratioX = 0;
+ private int ratioY = 0;
private int titleBackgroundResId;
private int selectMaxCount = Integer.MAX_VALUE;
private int selectMinCount = 0;
@@ -747,6 +798,24 @@ public T setPeekHeight(int peekHeight) {
return (T) this;
}
+ public T setCropper(boolean setCropper) {
+ this.setCropper = setCropper;
+ return (T) this;
+ }
+
+ public T setCropperRatio(int ratioX, int ratioY) {
+ this.ratioX = ratioX;
+ this.ratioY = ratioY;
+ return (T) this;
+ }
+
+ public T setResize(int resizeWidth, int resizeHeight, CropImageView.RequestSizeOptions resizeOption) {
+ this.resizeWidth = resizeWidth;
+ this.resizeHeight = resizeHeight;
+ this.resizeOption = resizeOption;
+ return (T) this;
+ }
+
public T setPeekHeightResId(@DimenRes int dimenResId) {
this.peekHeight = fragmentActivity.getResources().getDimensionPixelSize(dimenResId);
return (T) this;
diff --git a/tedbottompicker/src/main/java/gun0912/tedbottompicker/TedRxBottomPicker.java b/tedbottompicker/src/main/java/gun0912/tedbottompicker/TedRxBottomPicker.java
index fc9a8e0..95c20b2 100644
--- a/tedbottompicker/src/main/java/gun0912/tedbottompicker/TedRxBottomPicker.java
+++ b/tedbottompicker/src/main/java/gun0912/tedbottompicker/TedRxBottomPicker.java
@@ -1,7 +1,8 @@
package gun0912.tedbottompicker;
import android.net.Uri;
-import android.support.v4.app.FragmentActivity;
+
+import androidx.fragment.app.FragmentActivity;
import java.util.List;
diff --git a/tedbottompicker/src/main/java/gun0912/tedbottompicker/adapter/GalleryAdapter.java b/tedbottompicker/src/main/java/gun0912/tedbottompicker/adapter/GalleryAdapter.java
index 89e93a2..309cb8b 100644
--- a/tedbottompicker/src/main/java/gun0912/tedbottompicker/adapter/GalleryAdapter.java
+++ b/tedbottompicker/src/main/java/gun0912/tedbottompicker/adapter/GalleryAdapter.java
@@ -5,14 +5,15 @@
import android.graphics.drawable.Drawable;
import android.net.Uri;
import android.provider.MediaStore;
-import android.support.annotation.IntDef;
-import android.support.annotation.NonNull;
-import android.support.annotation.Nullable;
-import android.support.v4.content.ContextCompat;
-import android.support.v7.widget.RecyclerView;
import android.view.View;
import android.view.ViewGroup;
+import androidx.annotation.IntDef;
+import androidx.annotation.NonNull;
+import androidx.annotation.Nullable;
+import androidx.core.content.ContextCompat;
+import androidx.recyclerview.widget.RecyclerView;
+
import com.bumptech.glide.Glide;
import com.bumptech.glide.request.RequestOptions;
diff --git a/tedbottompicker/src/main/java/gun0912/tedbottompicker/view/TedEmptyRecyclerView.java b/tedbottompicker/src/main/java/gun0912/tedbottompicker/view/TedEmptyRecyclerView.java
index d31c0ed..9d58502 100644
--- a/tedbottompicker/src/main/java/gun0912/tedbottompicker/view/TedEmptyRecyclerView.java
+++ b/tedbottompicker/src/main/java/gun0912/tedbottompicker/view/TedEmptyRecyclerView.java
@@ -1,12 +1,13 @@
package gun0912.tedbottompicker.view;
import android.content.Context;
-import android.support.annotation.NonNull;
-import android.support.annotation.Nullable;
-import android.support.v7.widget.RecyclerView;
import android.util.AttributeSet;
import android.view.View;
+import androidx.annotation.NonNull;
+import androidx.annotation.Nullable;
+import androidx.recyclerview.widget.RecyclerView;
+
public class TedEmptyRecyclerView extends RecyclerView {
@Nullable
View emptyView;
diff --git a/tedbottompicker/src/main/res/layout/tedbottompicker_content_view.xml b/tedbottompicker/src/main/res/layout/tedbottompicker_content_view.xml
index bf5b154..3441f4c 100644
--- a/tedbottompicker/src/main/res/layout/tedbottompicker_content_view.xml
+++ b/tedbottompicker/src/main/res/layout/tedbottompicker_content_view.xml
@@ -117,7 +117,7 @@
/>
-->
-