diff --git a/README.md b/README.md index 8e14816ad..747cc0424 100644 --- a/README.md +++ b/README.md @@ -13,7 +13,7 @@ Get it on Google Play -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 @@ 裁剪 裁剪 + 旋转 + 缩放 + 裁剪