diff --git a/README.md b/README.md
index 8e14816ad..747cc0424 100644
--- a/README.md
+++ b/README.md
@@ -13,7 +13,7 @@
-1. Include the library as local library project.
+1. Include the library as a local library project.
```
allprojects {
@@ -24,10 +24,10 @@
}
```
- ``` implementation 'com.github.yalantis:ucrop:2.2.5' ``` - lightweight general solution
-
- ``` implementation 'com.github.yalantis:ucrop:2.2.5-native' ``` - get power of the native code to preserve image quality (+ about 1.5 MB to an apk size)
-
+ ``` implementation 'com.github.yalantis:ucrop:2.2.6' ``` - lightweight general solution
+
+ ``` implementation 'com.github.yalantis:ucrop:2.2.6-native' ``` - get power of the native code to preserve image quality (+ about 1.5 MB to an apk size)
+
2. Add UCropActivity into your AndroidManifest.xml
```
@@ -73,27 +73,37 @@ If you want to let your users choose crop ratio dynamically, just do not call `w
uCrop builder class has method `withOptions(UCrop.Options options)` which extends library configurations.
-Currently you can change:
+Currently, you can change:
* image compression format (e.g. PNG, JPEG, WEBP), compression
* image compression quality [0 - 100]. PNG which is lossless, will ignore the quality setting.
* whether all gestures are enabled simultaneously
- * maximum size for Bitmap that is decoded from source Uri and used within crop view. If you want to override default behaviour.
+ * maximum size for Bitmap that is decoded from source Uri and used within crop view. If you want to override the default behaviour.
* toggle whether to show crop frame/guidelines
* setup color/width/count of crop frame/rows/columns
- * choose whether you want rectangle or oval crop area
+ * choose whether you want rectangle or oval(`options.setCircleDimmedLayer(true)`) crop area
* the UI colors (Toolbar, StatusBar, active widget state)
* and more...
-
+
# Compatibility
-
+
* Library - Android ICS 4.0+ (API 14) (Android GINGERBREAD 2.3+ (API 10) for versions <= 1.3.2)
* Sample - Android ICS 4.0+ (API 14)
* CPU - armeabi armeabi-v7a x86 x86_64 arm64-v8a (for versions >= 2.1.2)
-
+
# Changelog
+### Version: 2.2.8
+
+* Merged pending pull requests with improvements and bugfixes
+* Update compileSdk and targetSdk versions up to 31
+* Add localizations
+* Fixed [#609](https://github.com/Yalantis/uCrop/issues/609)
+* Fixed [#794](https://github.com/Yalantis/uCrop/issues/794)
+
+
### Version: 2.2.5
+
* Fixed [#584](https://github.com/Yalantis/uCrop/issues/584)
* Fixed [#598](https://github.com/Yalantis/uCrop/issues/598)
* Fixed [#543](https://github.com/Yalantis/uCrop/issues/543)
@@ -106,13 +116,13 @@ Currently you can change:
* **AndroidX migration**
* Redesign
* Several fixes including [#550](https://github.com/Yalantis/uCrop/issues/550)
-
+
### Version: 2.2.3
- * Several fixes including [#445](https://github.com/Yalantis/uCrop/issues/445), [#465](https://github.com/Yalantis/uCrop/issues/465) and more!
- * Material design support
+ * Several fixes including [#445](https://github.com/Yalantis/uCrop/issues/445), [#465](https://github.com/Yalantis/uCrop/issues/465) and more!
+ * Material design support
* uCrop fragment as child fragment
- * Added Italian language
+ * Added the Italian language
### Version: 2.2.2
@@ -131,7 +141,7 @@ Currently you can change:
### Version: 2.1
* Fixes issue with EXIF data (images taken on front camera with Samsung devices mostly) [#130](https://github.com/Yalantis/uCrop/issues/130) [#111](https://github.com/Yalantis/uCrop/issues/111)
- * Added API to set custom set of aspect ratio options for user. [#131](https://github.com/Yalantis/uCrop/issues/131)
+ * Added API to set custom set of aspect ratio options for the user. [#131](https://github.com/Yalantis/uCrop/issues/131)
* Added API to set all configs via UCrop.Options class. [#126](https://github.com/Yalantis/uCrop/issues/126)
* Added ABI x86_64 support. [#105](https://github.com/Yalantis/uCrop/issues/105)
@@ -140,7 +150,7 @@ Currently you can change:
* Native image crop (able to crop high-resolution images, e.g. 16MP & 32MP images on Nexus 5X).
* WebP compression format is not supported at the moment (choose JPEG or PNG).
* Now library copies EXIF data to cropped image (size and orientation are updated).
-
+
### Version: 1.5
* Introduced "Freestyle" crop (you can resize crop rectangle by dragging it corners) [#32](https://github.com/Yalantis/uCrop/issues/32)
@@ -149,8 +159,8 @@ Currently you can change:
### Version: 1.4
- * Introduced http(s) Uri support!
- * Image is cropped in background thread.
+ * Introduced HTTP(s) Uri support!
+ * Image is cropped in a background thread.
* Showing loader while Bitmap is processed (both loading and cropping).
* Several bug fixes.
* Couple new things to configure.
@@ -158,12 +168,12 @@ Currently you can change:
### Version: 1.3
- * Image is loaded in background thread. Better error-handling for image decoding.
+ * Image is loaded in a background thread. Better error-handling for image decoding.
* Improved EXIF data support (rotation and mirror).
* Small UI updates.
* Couple new things to configure.
-
- * Sample updated with possibility to choose custom aspect ratio.
+
+ * Sample updated with the possibility to choose custom aspect ratio.
### Version: 1.2
@@ -179,7 +189,7 @@ Currently you can change:
### Let us know!
-We’d be really happy if you sent us links to your projects where you use our component. Just send an email to github@yalantis.com And do let us know if you have any questions or suggestion regarding the library.
+We’d be really happy if you sent us links to your projects where you use our component. Just send an email to github@yalantis.com And do let us know if you have any questions or suggestion regarding the library.
#### Apps using uCrop
diff --git a/build.gradle b/build.gradle
index cbd5640a7..40d1e03d2 100644
--- a/build.gradle
+++ b/build.gradle
@@ -8,7 +8,7 @@ buildscript {
}
repositories {
- jcenter()
+ mavenCentral()
maven {
url 'https://maven.google.com/'
name 'Google'
@@ -28,7 +28,7 @@ allprojects {
group = GROUP
repositories {
- jcenter()
+ mavenCentral()
maven {
url 'https://maven.google.com/'
name 'Google'
diff --git a/gradle.properties b/gradle.properties
index 86372fda7..86233071e 100644
--- a/gradle.properties
+++ b/gradle.properties
@@ -17,8 +17,8 @@
# http://www.gradle.org/docs/current/userguide/multi_project_builds.html#sec:decoupled_projects
# org.gradle.parallel=true
-VERSION_NAME=2.2.5-native
-VERSION_CODE=26
+VERSION_NAME=2.2.8-native
+VERSION_CODE=27
GROUP=com.yalantis
POM_DESCRIPTION=Android Library for cropping images
diff --git a/sample/build.gradle b/sample/build.gradle
index 06f3e1bc7..3b19d11b7 100644
--- a/sample/build.gradle
+++ b/sample/build.gradle
@@ -1,12 +1,12 @@
apply plugin: 'com.android.application'
android {
- compileSdkVersion 29
- buildToolsVersion '28.0.3'
+ compileSdkVersion 31
+ buildToolsVersion '30.0.3'
defaultConfig {
applicationId "com.yalantis.ucrop.sample"
minSdkVersion 14
- targetSdkVersion 29
+ targetSdkVersion 31
versionCode 13
versionName "1.2.4"
}
@@ -38,5 +38,6 @@ dependencies {
implementation "androidx.appcompat:appcompat:${androidx_appcompat_version}"
implementation "androidx.core:core:${androidx_core_version}"
implementation "androidx.constraintlayout:constraintlayout:${constraintlayout_version}"
+ implementation "com.squareup.okhttp3:okhttp:3.12.13"
implementation project(':ucrop')
}
\ No newline at end of file
diff --git a/sample/src/main/AndroidManifest.xml b/sample/src/main/AndroidManifest.xml
index 634aafa16..a9d0c2e53 100644
--- a/sample/src/main/AndroidManifest.xml
+++ b/sample/src/main/AndroidManifest.xml
@@ -7,6 +7,7 @@
+ android:screenOrientation="portrait"
+ android:exported="true">
diff --git a/sample/src/main/java/com/yalantis/ucrop/sample/SampleActivity.java b/sample/src/main/java/com/yalantis/ucrop/sample/SampleActivity.java
index 153937f8d..a57566a51 100644
--- a/sample/src/main/java/com/yalantis/ucrop/sample/SampleActivity.java
+++ b/sample/src/main/java/com/yalantis/ucrop/sample/SampleActivity.java
@@ -349,12 +349,14 @@ Tune everything (ノ◕ヮ◕)ノ*:・゚✧
options.setActiveControlsWidgetColor(ContextCompat.getColor(this, R.color.your_color_res));
// Aspect ratio options
- options.setAspectRatioOptions(1,
+ options.setAspectRatioOptions(2,
new AspectRatio("WOW", 1, 2),
new AspectRatio("MUCH", 3, 4),
new AspectRatio("RATIO", CropImageView.DEFAULT_ASPECT_RATIO, CropImageView.DEFAULT_ASPECT_RATIO),
new AspectRatio("SO", 16, 9),
new AspectRatio("ASPECT", 1, 1));
+ options.withAspectRatio(CropImageView.DEFAULT_ASPECT_RATIO, CropImageView.DEFAULT_ASPECT_RATIO);
+ options.useSourceImageAspectRatio();
*/
diff --git a/sample/src/main/java/com/yalantis/ucrop/sample/SampleApp.java b/sample/src/main/java/com/yalantis/ucrop/sample/SampleApp.java
new file mode 100644
index 000000000..cdcd64cfd
--- /dev/null
+++ b/sample/src/main/java/com/yalantis/ucrop/sample/SampleApp.java
@@ -0,0 +1,32 @@
+package com.yalantis.ucrop.sample;
+
+import android.app.Application;
+
+import com.yalantis.ucrop.UCropHttpClientStore;
+
+import java.util.Collections;
+
+import okhttp3.ConnectionSpec;
+import okhttp3.OkHttpClient;
+
+public class SampleApp extends Application {
+
+ @Override
+ public void onCreate() {
+ super.onCreate();
+ setUcropHttpClient();
+ }
+
+ private void setUcropHttpClient() {
+ ConnectionSpec cs = new ConnectionSpec.Builder(ConnectionSpec.MODERN_TLS)
+ .allEnabledCipherSuites()
+ .allEnabledTlsVersions()
+ .build();
+
+ OkHttpClient client = new OkHttpClient.Builder()
+ .connectionSpecs(Collections.singletonList(cs))
+ .build();
+
+ UCropHttpClientStore.INSTANCE.setClient(client);
+ }
+}
diff --git a/ucrop/build.gradle b/ucrop/build.gradle
index e1289e889..0325ed75e 100644
--- a/ucrop/build.gradle
+++ b/ucrop/build.gradle
@@ -2,14 +2,14 @@ apply plugin: 'com.android.library'
apply from: '../mavenpush.gradle'
android {
- compileSdkVersion 28
- buildToolsVersion '28.0.3'
+ compileSdkVersion 31
+ buildToolsVersion '30.0.2'
defaultConfig {
minSdkVersion 14
- targetSdkVersion 28
+ targetSdkVersion 31
versionCode 26
- versionName "2.2.5-native"
+ versionName "2.2.8-native"
vectorDrawables.useSupportLibrary = true
}
@@ -39,5 +39,6 @@ dependencies {
implementation "androidx.appcompat:appcompat:${androidx_appcompat_version}"
implementation "androidx.exifinterface:exifinterface:${androidx_exifinterface_version}"
implementation "androidx.transition:transition:${androidx_transition_version}"
- implementation "com.squareup.okhttp3:okhttp:3.12.1"
+ // OkHttp3 versions above 3.12.x don't support pre-Lollipop Android versions (API 21)
+ implementation "com.squareup.okhttp3:okhttp:3.12.13"
}
diff --git a/ucrop/src/main/java/com/yalantis/ucrop/UCrop.java b/ucrop/src/main/java/com/yalantis/ucrop/UCrop.java
index e28fd5bc9..83e1bcc53 100644
--- a/ucrop/src/main/java/com/yalantis/ucrop/UCrop.java
+++ b/ucrop/src/main/java/com/yalantis/ucrop/UCrop.java
@@ -517,9 +517,9 @@ public void setFreeStyleCropEnabled(boolean enabled) {
* @param aspectRatio - list of aspect ratio options that are available to user
*/
public void setAspectRatioOptions(int selectedByDefault, AspectRatio... aspectRatio) {
- if (selectedByDefault > aspectRatio.length) {
+ if (selectedByDefault >= aspectRatio.length) {
throw new IllegalArgumentException(String.format(Locale.US,
- "Index [selectedByDefault = %d] cannot be higher than aspect ratio options count [count = %d].",
+ "Index [selectedByDefault = %d] (0-based) cannot be higher or equal than aspect ratio options count [count = %d].",
selectedByDefault, aspectRatio.length));
}
mOptionBundle.putInt(EXTRA_ASPECT_RATIO_SELECTED_BY_DEFAULT, selectedByDefault);
diff --git a/ucrop/src/main/java/com/yalantis/ucrop/UCropActivity.java b/ucrop/src/main/java/com/yalantis/ucrop/UCropActivity.java
index 0b32aafe8..3e12b38bb 100644
--- a/ucrop/src/main/java/com/yalantis/ucrop/UCropActivity.java
+++ b/ucrop/src/main/java/com/yalantis/ucrop/UCropActivity.java
@@ -256,20 +256,21 @@ private void processOptions(@NonNull Intent intent) {
mOverlayView.setCropGridStrokeWidth(intent.getIntExtra(UCrop.Options.EXTRA_CROP_GRID_STROKE_WIDTH, getResources().getDimensionPixelSize(R.dimen.ucrop_default_crop_grid_stoke_width)));
// Aspect ratio options
- float aspectRatioX = intent.getFloatExtra(UCrop.EXTRA_ASPECT_RATIO_X, 0);
- float aspectRatioY = intent.getFloatExtra(UCrop.EXTRA_ASPECT_RATIO_Y, 0);
+ float aspectRatioX = intent.getFloatExtra(UCrop.EXTRA_ASPECT_RATIO_X, -1);
+ float aspectRatioY = intent.getFloatExtra(UCrop.EXTRA_ASPECT_RATIO_Y, -1);
int aspectRationSelectedByDefault = intent.getIntExtra(UCrop.Options.EXTRA_ASPECT_RATIO_SELECTED_BY_DEFAULT, 0);
ArrayList aspectRatioList = intent.getParcelableArrayListExtra(UCrop.Options.EXTRA_ASPECT_RATIO_OPTIONS);
- if (aspectRatioX > 0 && aspectRatioY > 0) {
+ if (aspectRatioX >= 0 && aspectRatioY >= 0) {
if (mWrapperStateAspectRatio != null) {
mWrapperStateAspectRatio.setVisibility(View.GONE);
}
- mGestureCropImageView.setTargetAspectRatio(aspectRatioX / aspectRatioY);
+ float targetAspectRatio = aspectRatioX / aspectRatioY;
+ mGestureCropImageView.setTargetAspectRatio(Float.isNaN(targetAspectRatio) ? CropImageView.SOURCE_IMAGE_ASPECT_RATIO : targetAspectRatio);
} else if (aspectRatioList != null && aspectRationSelectedByDefault < aspectRatioList.size()) {
- mGestureCropImageView.setTargetAspectRatio(aspectRatioList.get(aspectRationSelectedByDefault).getAspectRatioX() /
- aspectRatioList.get(aspectRationSelectedByDefault).getAspectRatioY());
+ float targetAspectRatio = aspectRatioList.get(aspectRationSelectedByDefault).getAspectRatioX() / aspectRatioList.get(aspectRationSelectedByDefault).getAspectRatioY();
+ mGestureCropImageView.setTargetAspectRatio(Float.isNaN(targetAspectRatio) ? CropImageView.SOURCE_IMAGE_ASPECT_RATIO : targetAspectRatio);
} else {
mGestureCropImageView.setTargetAspectRatio(CropImageView.SOURCE_IMAGE_ASPECT_RATIO);
}
diff --git a/ucrop/src/main/java/com/yalantis/ucrop/UCropFragment.java b/ucrop/src/main/java/com/yalantis/ucrop/UCropFragment.java
index 8ceea611b..56b8e25ec 100644
--- a/ucrop/src/main/java/com/yalantis/ucrop/UCropFragment.java
+++ b/ucrop/src/main/java/com/yalantis/ucrop/UCropFragment.java
@@ -237,20 +237,21 @@ private void processOptions(@NonNull Bundle bundle) {
mOverlayView.setCropGridStrokeWidth(bundle.getInt(UCrop.Options.EXTRA_CROP_GRID_STROKE_WIDTH, getResources().getDimensionPixelSize(R.dimen.ucrop_default_crop_grid_stoke_width)));
// Aspect ratio options
- float aspectRatioX = bundle.getFloat(UCrop.EXTRA_ASPECT_RATIO_X, 0);
- float aspectRatioY = bundle.getFloat(UCrop.EXTRA_ASPECT_RATIO_Y, 0);
+ float aspectRatioX = bundle.getFloat(UCrop.EXTRA_ASPECT_RATIO_X, -1);
+ float aspectRatioY = bundle.getFloat(UCrop.EXTRA_ASPECT_RATIO_Y, -1);
int aspectRationSelectedByDefault = bundle.getInt(UCrop.Options.EXTRA_ASPECT_RATIO_SELECTED_BY_DEFAULT, 0);
ArrayList aspectRatioList = bundle.getParcelableArrayList(UCrop.Options.EXTRA_ASPECT_RATIO_OPTIONS);
- if (aspectRatioX > 0 && aspectRatioY > 0) {
+ if (aspectRatioX >= 0 && aspectRatioY >= 0) {
if (mWrapperStateAspectRatio != null) {
mWrapperStateAspectRatio.setVisibility(View.GONE);
}
- mGestureCropImageView.setTargetAspectRatio(aspectRatioX / aspectRatioY);
+ float targetAspectRatio = aspectRatioX / aspectRatioY;
+ mGestureCropImageView.setTargetAspectRatio(Float.isNaN(targetAspectRatio) ? CropImageView.SOURCE_IMAGE_ASPECT_RATIO : targetAspectRatio);
} else if (aspectRatioList != null && aspectRationSelectedByDefault < aspectRatioList.size()) {
- mGestureCropImageView.setTargetAspectRatio(aspectRatioList.get(aspectRationSelectedByDefault).getAspectRatioX() /
- aspectRatioList.get(aspectRationSelectedByDefault).getAspectRatioY());
+ float targetAspectRatio = aspectRatioList.get(aspectRationSelectedByDefault).getAspectRatioX() / aspectRatioList.get(aspectRationSelectedByDefault).getAspectRatioY();
+ mGestureCropImageView.setTargetAspectRatio(Float.isNaN(targetAspectRatio) ? CropImageView.SOURCE_IMAGE_ASPECT_RATIO : targetAspectRatio);
} else {
mGestureCropImageView.setTargetAspectRatio(CropImageView.SOURCE_IMAGE_ASPECT_RATIO);
}
diff --git a/ucrop/src/main/java/com/yalantis/ucrop/UCropHttpClientStore.java b/ucrop/src/main/java/com/yalantis/ucrop/UCropHttpClientStore.java
new file mode 100644
index 000000000..2e4823571
--- /dev/null
+++ b/ucrop/src/main/java/com/yalantis/ucrop/UCropHttpClientStore.java
@@ -0,0 +1,26 @@
+package com.yalantis.ucrop;
+
+import androidx.annotation.NonNull;
+
+import okhttp3.OkHttpClient;
+
+public class UCropHttpClientStore {
+
+ private UCropHttpClientStore() {}
+
+ public final static UCropHttpClientStore INSTANCE = new UCropHttpClientStore();
+
+ private OkHttpClient client;
+
+ @NonNull
+ public OkHttpClient getClient() {
+ if (client == null) {
+ client = new OkHttpClient();
+ }
+ return client;
+ }
+
+ public void setClient(@NonNull OkHttpClient client) {
+ this.client = client;
+ }
+}
diff --git a/ucrop/src/main/java/com/yalantis/ucrop/task/BitmapLoadTask.java b/ucrop/src/main/java/com/yalantis/ucrop/task/BitmapLoadTask.java
index 72784e5b5..559a2ee13 100755
--- a/ucrop/src/main/java/com/yalantis/ucrop/task/BitmapLoadTask.java
+++ b/ucrop/src/main/java/com/yalantis/ucrop/task/BitmapLoadTask.java
@@ -11,6 +11,7 @@
import androidx.annotation.NonNull;
import androidx.annotation.Nullable;
+import com.yalantis.ucrop.UCropHttpClientStore;
import com.yalantis.ucrop.callback.BitmapLoadCallback;
import com.yalantis.ucrop.model.ExifInfo;
import com.yalantis.ucrop.util.BitmapLoadUtils;
@@ -204,15 +205,15 @@ private void downloadFile(@NonNull Uri inputUri, @Nullable Uri outputUri) throws
throw new NullPointerException("Output Uri is null - cannot download image");
}
- OkHttpClient client = new OkHttpClient();
+ OkHttpClient client = UCropHttpClientStore.INSTANCE.getClient();
BufferedSource source = null;
Sink sink = null;
Response response = null;
try {
Request request = new Request.Builder()
- .url(inputUri.toString())
- .build();
+ .url(inputUri.toString())
+ .build();
response = client.newCall(request).execute();
source = response.body().source();
diff --git a/ucrop/src/main/java/com/yalantis/ucrop/view/GestureCropImageView.java b/ucrop/src/main/java/com/yalantis/ucrop/view/GestureCropImageView.java
index b0f3cff93..e3644e184 100644
--- a/ucrop/src/main/java/com/yalantis/ucrop/view/GestureCropImageView.java
+++ b/ucrop/src/main/java/com/yalantis/ucrop/view/GestureCropImageView.java
@@ -21,7 +21,7 @@ public class GestureCropImageView extends CropImageView {
private float mMidPntX, mMidPntY;
- private boolean mIsRotateEnabled = true, mIsScaleEnabled = true;
+ private boolean mIsRotateEnabled = true, mIsScaleEnabled = true, mIsGestureEnabled = true;
private int mDoubleTapScaleSteps = 5;
public GestureCropImageView(Context context) {
@@ -52,6 +52,14 @@ public boolean isRotateEnabled() {
return mIsRotateEnabled;
}
+ public void setGestureEnabled(boolean gestureEnabled) {
+ mIsGestureEnabled = gestureEnabled;
+ }
+
+ public boolean isGestureEnabled() {
+ return mIsGestureEnabled;
+ }
+
public void setDoubleTapScaleSteps(int doubleTapScaleSteps) {
mDoubleTapScaleSteps = doubleTapScaleSteps;
}
@@ -77,7 +85,9 @@ public boolean onTouchEvent(MotionEvent event) {
mMidPntY = (event.getY(0) + event.getY(1)) / 2;
}
- mGestureDetector.onTouchEvent(event);
+ if (mIsGestureEnabled) {
+ mGestureDetector.onTouchEvent(event);
+ }
if (mIsScaleEnabled) {
mScaleDetector.onTouchEvent(event);
diff --git a/ucrop/src/main/res/drawable/ucrop_ic_rotate.xml b/ucrop/src/main/res/drawable/ucrop_ic_rotate.xml
index 509d7b156..2c08c2285 100644
--- a/ucrop/src/main/res/drawable/ucrop_ic_rotate.xml
+++ b/ucrop/src/main/res/drawable/ucrop_ic_rotate.xml
@@ -7,5 +7,5 @@
+ android:pathData="M 19.761,5.566 C 15.791825,0.49517195 7.1049248,0.96194642 3.7237612,6.4638227 -0.33837992,12.033745 3.3097107,20.843671 10.121424,21.908979 c 4.572019,1.06054 9.956288,-1.892196 11.2181,-6.246218 C 20.613349,15.378841 19.887175,15.09492 19.161,14.811 17.787681,18.760509 12.866024,20.703386 9.1288906,19.047063 5.9906393,17.775571 3.9999147,14.236171 4.5746701,10.893626 5.0470831,7.426033 8.1929546,4.5782223 11.692652,4.4629013 13.866935,4.33846 16.076584,5.2031434 17.571,6.791 c -0.89,0.4976667 -1.78,0.9953333 -2.67,1.493 2.321563,1.3826149 4.642896,2.765615 6.964,4.149 0.03752,-2.7019929 0.07452,-5.4039929 0.111,-8.106 -0.738333,0.413 -1.476667,0.826 -2.215,1.239 z" />
diff --git a/ucrop/src/main/res/drawable/ucrop_ic_rotate_unselected.xml b/ucrop/src/main/res/drawable/ucrop_ic_rotate_unselected.xml
index 55f7a3ff9..841dc96ea 100644
--- a/ucrop/src/main/res/drawable/ucrop_ic_rotate_unselected.xml
+++ b/ucrop/src/main/res/drawable/ucrop_ic_rotate_unselected.xml
@@ -7,5 +7,5 @@
+ android:pathData="M 19.761,5.566 C 15.791825,0.49517195 7.1049248,0.96194642 3.7237612,6.4638227 -0.33837992,12.033745 3.3097107,20.843671 10.121424,21.908979 c 4.572019,1.06054 9.956288,-1.892196 11.2181,-6.246218 C 20.613349,15.378841 19.887175,15.09492 19.161,14.811 17.787681,18.760509 12.866024,20.703386 9.1288906,19.047063 5.9906393,17.775571 3.9999147,14.236171 4.5746701,10.893626 5.0470831,7.426033 8.1929546,4.5782223 11.692652,4.4629013 13.866935,4.33846 16.076584,5.2031434 17.571,6.791 c -0.89,0.4976667 -1.78,0.9953333 -2.67,1.493 2.321563,1.3826149 4.642896,2.765615 6.964,4.149 0.03752,-2.7019929 0.07452,-5.4039929 0.111,-8.106 -0.738333,0.413 -1.476667,0.826 -2.215,1.239 z" />
diff --git a/ucrop/src/main/res/values-de/strings.xml b/ucrop/src/main/res/values-de/strings.xml
index 481d25a57..8d81cea75 100644
--- a/ucrop/src/main/res/values-de/strings.xml
+++ b/ucrop/src/main/res/values-de/strings.xml
@@ -3,4 +3,8 @@
Foto editieren
Original
Zuschneiden
+
+ Rotieren
+ Skalieren
+ Zuschneiden
\ No newline at end of file
diff --git a/ucrop/src/main/res/values-fa/strings.xml b/ucrop/src/main/res/values-fa/strings.xml
new file mode 100644
index 000000000..f0c81a008
--- /dev/null
+++ b/ucrop/src/main/res/values-fa/strings.xml
@@ -0,0 +1,13 @@
+
+
+
+ اصلی
+ ویرایش عکس
+
+ برش
+
+ چرخش
+ اندازه
+ برش
+
+
diff --git a/ucrop/src/main/res/values-in/strings.xml b/ucrop/src/main/res/values-in/strings.xml
new file mode 100644
index 000000000..eddf03209
--- /dev/null
+++ b/ucrop/src/main/res/values-in/strings.xml
@@ -0,0 +1,12 @@
+
+
+ Asli
+ Edit Foto
+
+ Pangkas
+
+ Memutar
+ Skala
+ Pangkas
+
+
diff --git a/ucrop/src/main/res/values-nl/strings.xml b/ucrop/src/main/res/values-nl/strings.xml
index 4570a62f8..a9ca77d13 100644
--- a/ucrop/src/main/res/values-nl/strings.xml
+++ b/ucrop/src/main/res/values-nl/strings.xml
@@ -2,4 +2,8 @@
Origineel
Foto bewerken
Bijsnijden
+
+ Draaien
+ Schalen
+ Bijsnijden
diff --git a/ucrop/src/main/res/values-pt-br b/ucrop/src/main/res/values-pt/strings.xml
similarity index 50%
rename from ucrop/src/main/res/values-pt-br
rename to ucrop/src/main/res/values-pt/strings.xml
index 9fea3b042..1e98d1d0c 100644
--- a/ucrop/src/main/res/values-pt-br
+++ b/ucrop/src/main/res/values-pt/strings.xml
@@ -5,8 +5,6 @@
Cortar
- Uri de entrada e saída deve ser especificado
- Portanto, substitua o recurso de cores (ucrop_color_toolbar_widget) no seu aplicativo para fazê-lo funcionar em dispositivos pré-L
Girar
Tamanho
Cortar
diff --git a/ucrop/src/main/res/values-ru/strings.xml b/ucrop/src/main/res/values-ru/strings.xml
new file mode 100644
index 000000000..7973c3c92
--- /dev/null
+++ b/ucrop/src/main/res/values-ru/strings.xml
@@ -0,0 +1,9 @@
+
+
+ Оригинал
+ Повернуть
+ Масштабировать
+ Обрезать
+ Обрезать
+ Редактировать фото
+
diff --git a/ucrop/src/main/res/values-th/strings.xml b/ucrop/src/main/res/values-th/strings.xml
new file mode 100644
index 000000000..add5b5ebe
--- /dev/null
+++ b/ucrop/src/main/res/values-th/strings.xml
@@ -0,0 +1,12 @@
+
+
+ เป็นต้นฉบับ
+ แก้ไขรูปภาพ
+
+ พืชผล
+
+ หมุน
+ ขนาด
+ พืชผล
+
+
diff --git a/ucrop/src/main/res/values-tr/strings.xml b/ucrop/src/main/res/values-tr/strings.xml
new file mode 100644
index 000000000..097261675
--- /dev/null
+++ b/ucrop/src/main/res/values-tr/strings.xml
@@ -0,0 +1,12 @@
+
+
+ Orijinal
+ Fotoğrafı Düzenle
+
+ Kırp
+
+ Döndürme
+ Ölçek
+ Kırp
+
+
diff --git a/ucrop/src/main/res/values-zh-rTW/strings.xml b/ucrop/src/main/res/values-zh-rTW/strings.xml
index f0abcc71e..c55eb6294 100644
--- a/ucrop/src/main/res/values-zh-rTW/strings.xml
+++ b/ucrop/src/main/res/values-zh-rTW/strings.xml
@@ -7,5 +7,8 @@
必須指定輸入以及輸出的 Uri
在你的 App 內覆寫顏色資源檔 (ucrop_color_toolbar_widget) 使 5.0 以前裝置正常運作
+ 旋轉
+ 縮放
+ 裁切
diff --git a/ucrop/src/main/res/values-zh/strings.xml b/ucrop/src/main/res/values-zh/strings.xml
index fb39928db..100ef14ba 100644
--- a/ucrop/src/main/res/values-zh/strings.xml
+++ b/ucrop/src/main/res/values-zh/strings.xml
@@ -4,5 +4,8 @@
裁剪
裁剪
+ 旋转
+ 缩放
+ 裁剪