diff --git a/CHANGELOG.md b/CHANGELOG.md index 3dba72c1..55243c77 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -53,3 +53,8 @@ new TextStyleBuilder() - New : Bumped support version to 28 - Removed : All Deprecated methods - Test : Added test cases for `BrushDrawingView` with 100% code coverage + +## 1.0.0 +- New : Migrating the support libraries to AndroidX +- New : Bumped target sdk version to 29 +- Test : Adding UI to test for the library \ No newline at end of file diff --git a/README.md b/README.md index cc7e8787..ed3d2d4f 100644 --- a/README.md +++ b/README.md @@ -1,7 +1,7 @@ # PhotoEditor [![CircleCI](https://circleci.com/gh/burhanrashid52/PhotoEditor.svg?style=svg)](https://circleci.com/gh/burhanrashid52/PhotoEditor) -[![Downloads](https://img.shields.io/badge/Download-0.4.0-blue.svg)](https://bintray.com/burhanrashid52/maven/photoeditor) ![API](https://img.shields.io/badge/API-14%2B-brightgreen.svg) [![JavaDoc](https://img.shields.io/badge/JavaDoc-PhotoEditor-blue.svg)](https://burhanrashid52.github.io/PhotoEditor/) [![Uplabs](https://img.shields.io/badge/Uplabs-PhotoEditor-orange.svg)](https://www.uplabs.com/posts/photoeditor) +[![Downloads](https://img.shields.io/badge/Download-1.0.0-blue.svg)](https://bintray.com/burhanrashid52/maven/photoeditor) ![API](https://img.shields.io/badge/API-14%2B-brightgreen.svg) [![JavaDoc](https://img.shields.io/badge/JavaDoc-PhotoEditor-blue.svg)](https://burhanrashid52.github.io/PhotoEditor/) [![Uplabs](https://img.shields.io/badge/Uplabs-PhotoEditor-orange.svg)](https://www.uplabs.com/posts/photoeditor) [![AndroidArsenal](https://img.shields.io/badge/Android%20Arsenal-PhotoEditor-blue.svg)](https://android-arsenal.com/details/1/6736) [![AndroidDevDigest](https://img.shields.io/badge/AndroidDev%20Digest-%23185-brightgreen.svg)](https://www.androiddevdigest.com/digest-185) [![AwesomeAndroid](https://img.shields.io/badge/Awesome%20Android-%2397-red.svg)](https://android.libhunt.com/newsletter/97) @@ -30,11 +30,14 @@ A Photo Editor library with simple, easy support for image editing using Paints, - Easy image editing +## AndroidX +PhotoEditor ```v.1.0.0``` is a migration to androidX and dropping the support of older support library. There are no API changes. If you find any issue migrating to v.1.0.0 , please follow this [Guide](https://developer.android.com/jetpack/androidx/migrate). If you still facing the issue than you can always rollback to v.0.4.0. Any fix in PR are Welcome :) + ## Getting Started To start with this, we need to simply add the dependencies in the gradle file of our app module like this ```java -implementation 'ja.burhanrashid52:photoeditor:0.4.0' +implementation 'ja.burhanrashid52:photoeditor:1.0.0' ``` or we can also import the :photoeditor module from sample for further customization diff --git a/app/build.gradle b/app/build.gradle index b0cf9e7c..c7de4e6d 100644 --- a/app/build.gradle +++ b/app/build.gradle @@ -1,14 +1,14 @@ apply plugin: 'com.android.application' android { - compileSdkVersion 28 + compileSdkVersion 29 defaultConfig { applicationId "com.burhanrashid52.photoeditor" minSdkVersion 14 - targetSdkVersion 28 + targetSdkVersion 29 versionCode 1 versionName "1.0" - testInstrumentationRunner "android.support.test.runner.AndroidJUnitRunner" + testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner" } buildTypes { release { @@ -20,18 +20,19 @@ android { dependencies { implementation fileTree(include: ['*.jar'], dir: 'libs') - implementation 'com.android.support:appcompat-v7:28.0.0' - implementation 'com.android.support.constraint:constraint-layout:1.1.3' - implementation 'com.android.support:design:28.0.0' - implementation 'ja.burhanrashid52:photoeditor:0.4.0' + implementation 'androidx.appcompat:appcompat:1.1.0' + implementation 'androidx.constraintlayout:constraintlayout:1.1.3' + implementation 'com.google.android.material:material:1.0.0' + implementation 'ja.burhanrashid52:photoeditor:1.0.0' //implementation project(':photoeditor') - implementation 'com.android.support:cardview-v7:28.0.0' + implementation 'androidx.cardview:cardview:1.0.0' testImplementation 'junit:junit:4.12' - androidTestImplementation 'com.android.support.test:runner:1.0.2' - androidTestImplementation 'com.android.support.test:rules:1.0.2' - androidTestImplementation 'com.android.support.test.espresso:espresso-core:3.0.2' + androidTestImplementation 'androidx.test:runner:1.2.0' + androidTestImplementation 'androidx.test:rules:1.2.0' + androidTestImplementation 'androidx.test.espresso:espresso-core:3.2.0' + androidTestImplementation 'androidx.test.espresso:espresso-contrib:3.2.0' } // make sure this line comes *after* you apply the Android plugin diff --git a/app/src/androidTest/java/com/burhanrashid52/photoeditor/EditImageActivityTest.java b/app/src/androidTest/java/com/burhanrashid52/photoeditor/EditImageActivityTest.java index af48982e..8c112fba 100644 --- a/app/src/androidTest/java/com/burhanrashid52/photoeditor/EditImageActivityTest.java +++ b/app/src/androidTest/java/com/burhanrashid52/photoeditor/EditImageActivityTest.java @@ -1,17 +1,30 @@ package com.burhanrashid52.photoeditor; -import android.support.test.filters.LargeTest; -import android.support.test.rule.ActivityTestRule; -import android.support.test.runner.AndroidJUnit4; +import android.content.Context; +import androidx.test.espresso.contrib.RecyclerViewActions; +import androidx.test.filters.LargeTest; +import androidx.test.rule.ActivityTestRule; +import androidx.test.runner.AndroidJUnit4; + +import org.junit.Ignore; import org.junit.Rule; import org.junit.Test; import org.junit.runner.RunWith; -import static android.support.test.espresso.Espresso.onView; -import static android.support.test.espresso.assertion.ViewAssertions.matches; -import static android.support.test.espresso.matcher.ViewMatchers.isDisplayed; -import static android.support.test.espresso.matcher.ViewMatchers.withText; +import java.util.ArrayList; + +import ja.burhanrashid52.photoeditor.PhotoEditor; + +import static androidx.test.espresso.Espresso.onView; +import static androidx.test.espresso.action.ViewActions.click; +import static androidx.test.espresso.assertion.ViewAssertions.doesNotExist; +import static androidx.test.espresso.assertion.ViewAssertions.matches; +import static androidx.test.espresso.matcher.ViewMatchers.isDisplayed; +import static androidx.test.espresso.matcher.ViewMatchers.withId; +import static androidx.test.espresso.matcher.ViewMatchers.withText; +import static junit.framework.TestCase.assertTrue; +import static org.junit.Assert.assertFalse; @RunWith(AndroidJUnit4.class) @@ -19,10 +32,76 @@ public class EditImageActivityTest { @Rule - public ActivityTestRule mActivityRule = new ActivityTestRule<>(EditImageActivity.class); + public ActivityTestRule mActivityRule = new ActivityTestRule<>(EditImageActivity.class, false, false); @Test public void checkIfActivityIsLaunched() { + mActivityRule.launchActivity(null); onView(withText(R.string.app_name)).check(matches(isDisplayed())); } + + @Test + public void checkIfBrushIsEnabledWhenClickedOnBrushTool() { + EditImageActivity editImageActivity = mActivityRule.launchActivity(null); + assertFalse(editImageActivity.mPhotoEditor.getBrushDrawableMode()); + onView(withText(R.string.label_brush)).perform(click()); + assertTrue(editImageActivity.mPhotoEditor.getBrushDrawableMode()); + } + + @Test + public void checkIfEraserIsEnabledWhenClickedOnEraserTool() { + mActivityRule.launchActivity(null); + onView(withText(R.string.label_eraser)).perform(click()); + onView(withText(R.string.label_eraser_mode)).check(matches(isDisplayed())); + } + + @Test + public void checkIfEmojiIsDisplayedWhenEmojiIsSelected() { + Context context = mActivityRule.launchActivity(null); + ArrayList emojis = PhotoEditor.getEmojis(context); + int emojiPosition = 1; + String emojiUnicode = emojis.get(emojiPosition); + onView(withText(R.string.label_emoji)).perform(click()); + onView(withId(R.id.rvEmoji)) + .perform(RecyclerViewActions.actionOnItemAtPosition(emojiPosition, click())); + onView(withText(emojiUnicode)).check(matches(isDisplayed())); + } + + @Ignore("Flacky test. Need to optimize") + public void checkIfDiscardDialogIsNotDisplayedWhenCacheIsEmpty() { + EditImageActivity editImageActivity = mActivityRule.launchActivity(null); + assertTrue(editImageActivity.mPhotoEditor.isCacheEmpty()); + onView(withId(R.id.imgClose)).perform(click()); + assertTrue(editImageActivity.isDestroyed()); + } + + @Test + public void checkIfDiscardDialogIsDisplayedWhenCacheIsNotEmpty() { + EditImageActivity editImageActivity = mActivityRule.launchActivity(null); + assertTrue(editImageActivity.mPhotoEditor.isCacheEmpty()); + onView(withText(R.string.label_emoji)).perform(click()); + onView(withId(R.id.rvEmoji)) + .perform(RecyclerViewActions.actionOnItemAtPosition(0, click())); + onView(withId(R.id.imgClose)).perform(click()); + onView(withText(R.string.msg_save_image)).check(matches(isDisplayed())); + } + + @Test + public void checkIfUndoRedoIsWorkingCorrectWhenClickedOnUndoRedo() throws InterruptedException { + EditImageActivity editImageActivity = mActivityRule.launchActivity(null); + ArrayList emojisUnicodes = PhotoEditor.getEmojis(editImageActivity); + + //Add Emoji + onView(withText(R.string.label_emoji)).perform(click()); + onView(withId(R.id.rvEmoji)).perform(RecyclerViewActions.actionOnItemAtPosition(0, click())); + onView(withText(emojisUnicodes.get(0))).check(matches(isDisplayed())); + + // Undo the Emoji + onView(withId(R.id.imgUndo)).perform(click()); + onView(withText(emojisUnicodes.get(0))).check(doesNotExist()); + + // Redo the Emoji + onView(withId(R.id.imgRedo)).perform(click()); + onView(withText(emojisUnicodes.get(0))).check(matches(isDisplayed())); + } } \ No newline at end of file diff --git a/app/src/main/java/com/burhanrashid52/photoeditor/ColorPickerAdapter.java b/app/src/main/java/com/burhanrashid52/photoeditor/ColorPickerAdapter.java index 4aa141ee..f690d7d8 100644 --- a/app/src/main/java/com/burhanrashid52/photoeditor/ColorPickerAdapter.java +++ b/app/src/main/java/com/burhanrashid52/photoeditor/ColorPickerAdapter.java @@ -7,9 +7,9 @@ import android.graphics.drawable.LayerDrawable; import android.graphics.drawable.ShapeDrawable; import android.graphics.drawable.shapes.OvalShape; -import android.support.annotation.NonNull; -import android.support.v4.content.ContextCompat; -import android.support.v7.widget.RecyclerView; +import androidx.annotation.NonNull; +import androidx.core.content.ContextCompat; +import androidx.recyclerview.widget.RecyclerView; import android.view.LayoutInflater; import android.view.View; import android.view.ViewGroup; diff --git a/app/src/main/java/com/burhanrashid52/photoeditor/EditImageActivity.java b/app/src/main/java/com/burhanrashid52/photoeditor/EditImageActivity.java index 33d208f2..540383e6 100644 --- a/app/src/main/java/com/burhanrashid52/photoeditor/EditImageActivity.java +++ b/app/src/main/java/com/burhanrashid52/photoeditor/EditImageActivity.java @@ -10,20 +10,21 @@ import android.os.Bundle; import android.os.Environment; import android.provider.MediaStore; -import android.support.annotation.NonNull; -import android.support.constraint.ConstraintLayout; -import android.support.constraint.ConstraintSet; -import android.support.transition.ChangeBounds; -import android.support.transition.TransitionManager; -import android.support.v7.app.AlertDialog; -import android.support.v7.widget.LinearLayoutManager; -import android.support.v7.widget.RecyclerView; import android.util.Log; import android.view.View; import android.view.animation.AnticipateOvershootInterpolator; import android.widget.ImageView; import android.widget.TextView; +import androidx.annotation.NonNull; +import androidx.appcompat.app.AlertDialog; +import androidx.constraintlayout.widget.ConstraintLayout; +import androidx.constraintlayout.widget.ConstraintSet; +import androidx.recyclerview.widget.LinearLayoutManager; +import androidx.recyclerview.widget.RecyclerView; +import androidx.transition.ChangeBounds; +import androidx.transition.TransitionManager; + import com.burhanrashid52.photoeditor.base.BaseActivity; import com.burhanrashid52.photoeditor.filters.FilterListener; import com.burhanrashid52.photoeditor.filters.FilterViewAdapter; @@ -51,7 +52,7 @@ public class EditImageActivity extends BaseActivity implements OnPhotoEditorList public static final String EXTRA_IMAGE_PATHS = "extra_image_paths"; private static final int CAMERA_REQUEST = 52; private static final int PICK_REQUEST = 53; - private PhotoEditor mPhotoEditor; + PhotoEditor mPhotoEditor; private PhotoEditorView mPhotoEditorView; private PropertiesBSFragment mPropertiesBSFragment; private EmojiBSFragment mEmojiBSFragment; @@ -250,6 +251,7 @@ public void onFailure(@NonNull Exception exception) { @Override protected void onActivityResult(int requestCode, int resultCode, Intent data) { + super.onActivityResult(requestCode, resultCode, data); if (resultCode == RESULT_OK) { switch (requestCode) { case CAMERA_REQUEST: @@ -293,7 +295,6 @@ public void onBrushSizeChanged(int brushSize) { public void onEmojiClick(String emojiUnicode) { mPhotoEditor.addEmoji(emojiUnicode); mTxtCurrentTool.setText(R.string.label_emoji); - } @Override @@ -311,7 +312,7 @@ public void isPermissionGranted(boolean isGranted, String permission) { private void showSaveDialog() { AlertDialog.Builder builder = new AlertDialog.Builder(this); - builder.setMessage("Are you want to exit without saving image ?"); + builder.setMessage(getString(R.string.msg_save_image)); builder.setPositiveButton("Save", new DialogInterface.OnClickListener() { @Override public void onClick(DialogInterface dialog, int which) { @@ -363,7 +364,7 @@ public void onDone(String inputText, int colorCode) { break; case ERASER: mPhotoEditor.brushEraser(); - mTxtCurrentTool.setText(R.string.label_eraser); + mTxtCurrentTool.setText(R.string.label_eraser_mode); break; case FILTER: mTxtCurrentTool.setText(R.string.label_filter); diff --git a/app/src/main/java/com/burhanrashid52/photoeditor/EmojiBSFragment.java b/app/src/main/java/com/burhanrashid52/photoeditor/EmojiBSFragment.java index 162e6968..1a37e5e8 100644 --- a/app/src/main/java/com/burhanrashid52/photoeditor/EmojiBSFragment.java +++ b/app/src/main/java/com/burhanrashid52/photoeditor/EmojiBSFragment.java @@ -2,12 +2,12 @@ import android.annotation.SuppressLint; import android.app.Dialog; -import android.support.annotation.NonNull; -import android.support.design.widget.BottomSheetBehavior; -import android.support.design.widget.BottomSheetDialogFragment; -import android.support.design.widget.CoordinatorLayout; -import android.support.v7.widget.GridLayoutManager; -import android.support.v7.widget.RecyclerView; +import androidx.annotation.NonNull; +import com.google.android.material.bottomsheet.BottomSheetBehavior; +import com.google.android.material.bottomsheet.BottomSheetDialogFragment; +import androidx.coordinatorlayout.widget.CoordinatorLayout; +import androidx.recyclerview.widget.GridLayoutManager; +import androidx.recyclerview.widget.RecyclerView; import android.view.LayoutInflater; import android.view.View; import android.view.ViewGroup; diff --git a/app/src/main/java/com/burhanrashid52/photoeditor/PropertiesBSFragment.java b/app/src/main/java/com/burhanrashid52/photoeditor/PropertiesBSFragment.java index 21269092..ce664c27 100644 --- a/app/src/main/java/com/burhanrashid52/photoeditor/PropertiesBSFragment.java +++ b/app/src/main/java/com/burhanrashid52/photoeditor/PropertiesBSFragment.java @@ -1,11 +1,11 @@ package com.burhanrashid52.photoeditor; import android.os.Bundle; -import android.support.annotation.NonNull; -import android.support.annotation.Nullable; -import android.support.design.widget.BottomSheetDialogFragment; -import android.support.v7.widget.LinearLayoutManager; -import android.support.v7.widget.RecyclerView; +import androidx.annotation.NonNull; +import androidx.annotation.Nullable; +import com.google.android.material.bottomsheet.BottomSheetDialogFragment; +import androidx.recyclerview.widget.LinearLayoutManager; +import androidx.recyclerview.widget.RecyclerView; import android.view.LayoutInflater; import android.view.View; import android.view.ViewGroup; diff --git a/app/src/main/java/com/burhanrashid52/photoeditor/StickerBSFragment.java b/app/src/main/java/com/burhanrashid52/photoeditor/StickerBSFragment.java index 20740cd8..5b7b690e 100644 --- a/app/src/main/java/com/burhanrashid52/photoeditor/StickerBSFragment.java +++ b/app/src/main/java/com/burhanrashid52/photoeditor/StickerBSFragment.java @@ -5,13 +5,13 @@ import android.graphics.Bitmap; import android.graphics.BitmapFactory; import android.os.Bundle; -import android.support.annotation.NonNull; -import android.support.annotation.Nullable; -import android.support.design.widget.BottomSheetBehavior; -import android.support.design.widget.BottomSheetDialogFragment; -import android.support.design.widget.CoordinatorLayout; -import android.support.v7.widget.GridLayoutManager; -import android.support.v7.widget.RecyclerView; +import androidx.annotation.NonNull; +import androidx.annotation.Nullable; +import com.google.android.material.bottomsheet.BottomSheetBehavior; +import com.google.android.material.bottomsheet.BottomSheetDialogFragment; +import androidx.coordinatorlayout.widget.CoordinatorLayout; +import androidx.recyclerview.widget.GridLayoutManager; +import androidx.recyclerview.widget.RecyclerView; import android.view.LayoutInflater; import android.view.View; import android.view.ViewGroup; diff --git a/app/src/main/java/com/burhanrashid52/photoeditor/TextEditorDialogFragment.java b/app/src/main/java/com/burhanrashid52/photoeditor/TextEditorDialogFragment.java index c2a8089e..cecf2503 100644 --- a/app/src/main/java/com/burhanrashid52/photoeditor/TextEditorDialogFragment.java +++ b/app/src/main/java/com/burhanrashid52/photoeditor/TextEditorDialogFragment.java @@ -4,14 +4,14 @@ import android.content.Context; import android.graphics.drawable.ColorDrawable; import android.os.Bundle; -import android.support.annotation.ColorInt; -import android.support.annotation.NonNull; -import android.support.annotation.Nullable; -import android.support.v4.app.DialogFragment; -import android.support.v4.content.ContextCompat; -import android.support.v7.app.AppCompatActivity; -import android.support.v7.widget.LinearLayoutManager; -import android.support.v7.widget.RecyclerView; +import androidx.annotation.ColorInt; +import androidx.annotation.NonNull; +import androidx.annotation.Nullable; +import androidx.fragment.app.DialogFragment; +import androidx.core.content.ContextCompat; +import androidx.appcompat.app.AppCompatActivity; +import androidx.recyclerview.widget.LinearLayoutManager; +import androidx.recyclerview.widget.RecyclerView; import android.text.TextUtils; import android.view.LayoutInflater; import android.view.View; diff --git a/app/src/main/java/com/burhanrashid52/photoeditor/base/BaseActivity.java b/app/src/main/java/com/burhanrashid52/photoeditor/base/BaseActivity.java index bf6d4259..4e645fc4 100644 --- a/app/src/main/java/com/burhanrashid52/photoeditor/base/BaseActivity.java +++ b/app/src/main/java/com/burhanrashid52/photoeditor/base/BaseActivity.java @@ -2,11 +2,11 @@ import android.app.ProgressDialog; import android.content.pm.PackageManager; -import android.support.annotation.NonNull; -import android.support.design.widget.Snackbar; -import android.support.v4.app.ActivityCompat; -import android.support.v4.content.ContextCompat; -import android.support.v7.app.AppCompatActivity; +import androidx.annotation.NonNull; +import com.google.android.material.snackbar.Snackbar; +import androidx.core.app.ActivityCompat; +import androidx.core.content.ContextCompat; +import androidx.appcompat.app.AppCompatActivity; import android.view.View; import android.view.Window; import android.view.WindowManager; diff --git a/app/src/main/java/com/burhanrashid52/photoeditor/base/BaseFragment.java b/app/src/main/java/com/burhanrashid52/photoeditor/base/BaseFragment.java index cd04b874..cdf42b6c 100644 --- a/app/src/main/java/com/burhanrashid52/photoeditor/base/BaseFragment.java +++ b/app/src/main/java/com/burhanrashid52/photoeditor/base/BaseFragment.java @@ -1,9 +1,9 @@ package com.burhanrashid52.photoeditor.base; import android.os.Bundle; -import android.support.annotation.NonNull; -import android.support.annotation.Nullable; -import android.support.v4.app.Fragment; +import androidx.annotation.NonNull; +import androidx.annotation.Nullable; +import androidx.fragment.app.Fragment; import android.view.LayoutInflater; import android.view.View; import android.view.ViewGroup; diff --git a/app/src/main/java/com/burhanrashid52/photoeditor/filters/FilterViewAdapter.java b/app/src/main/java/com/burhanrashid52/photoeditor/filters/FilterViewAdapter.java index 72a5273d..446244ad 100644 --- a/app/src/main/java/com/burhanrashid52/photoeditor/filters/FilterViewAdapter.java +++ b/app/src/main/java/com/burhanrashid52/photoeditor/filters/FilterViewAdapter.java @@ -4,8 +4,8 @@ import android.content.res.AssetManager; import android.graphics.Bitmap; import android.graphics.BitmapFactory; -import android.support.annotation.NonNull; -import android.support.v7.widget.RecyclerView; +import androidx.annotation.NonNull; +import androidx.recyclerview.widget.RecyclerView; import android.util.Pair; import android.view.LayoutInflater; import android.view.View; diff --git a/app/src/main/java/com/burhanrashid52/photoeditor/tools/EditingToolsAdapter.java b/app/src/main/java/com/burhanrashid52/photoeditor/tools/EditingToolsAdapter.java index 2380e728..c59b17af 100644 --- a/app/src/main/java/com/burhanrashid52/photoeditor/tools/EditingToolsAdapter.java +++ b/app/src/main/java/com/burhanrashid52/photoeditor/tools/EditingToolsAdapter.java @@ -1,7 +1,8 @@ package com.burhanrashid52.photoeditor.tools; -import android.support.annotation.NonNull; -import android.support.v7.widget.RecyclerView; +import androidx.annotation.NonNull; +import androidx.core.util.Pair; +import androidx.recyclerview.widget.RecyclerView; import android.view.LayoutInflater; import android.view.View; import android.view.ViewGroup; diff --git a/app/src/main/res/layout/activity_edit_image.xml b/app/src/main/res/layout/activity_edit_image.xml index 642f71c7..d3552c31 100644 --- a/app/src/main/res/layout/activity_edit_image.xml +++ b/app/src/main/res/layout/activity_edit_image.xml @@ -1,5 +1,5 @@ - - - - - \ No newline at end of file + \ No newline at end of file diff --git a/app/src/main/res/layout/add_text_dialog.xml b/app/src/main/res/layout/add_text_dialog.xml index 470b5884..4eadc840 100644 --- a/app/src/main/res/layout/add_text_dialog.xml +++ b/app/src/main/res/layout/add_text_dialog.xml @@ -40,12 +40,12 @@ android:layout_height="wrap_content" android:layout_alignParentBottom="true"> - diff --git a/app/src/main/res/layout/fragment_bottom_custom_effect_dialog.xml b/app/src/main/res/layout/fragment_bottom_custom_effect_dialog.xml index 23e9ba35..12fa1884 100644 --- a/app/src/main/res/layout/fragment_bottom_custom_effect_dialog.xml +++ b/app/src/main/res/layout/fragment_bottom_custom_effect_dialog.xml @@ -1,5 +1,5 @@ - - \ No newline at end of file + \ No newline at end of file diff --git a/app/src/main/res/layout/fragment_bottom_properties_dialog.xml b/app/src/main/res/layout/fragment_bottom_properties_dialog.xml index ae5702e8..23a92fee 100644 --- a/app/src/main/res/layout/fragment_bottom_properties_dialog.xml +++ b/app/src/main/res/layout/fragment_bottom_properties_dialog.xml @@ -1,12 +1,12 @@ - - - \ No newline at end of file + \ No newline at end of file diff --git a/app/src/main/res/layout/fragment_bottom_sticker_emoji_dialog.xml b/app/src/main/res/layout/fragment_bottom_sticker_emoji_dialog.xml index aa287358..f7c6d000 100644 --- a/app/src/main/res/layout/fragment_bottom_sticker_emoji_dialog.xml +++ b/app/src/main/res/layout/fragment_bottom_sticker_emoji_dialog.xml @@ -7,7 +7,7 @@ android:orientation="vertical"> - - - + diff --git a/app/src/main/res/layout/layout_tools_paint.xml b/app/src/main/res/layout/layout_tools_paint.xml index b5ea0e45..bb8f0ad1 100644 --- a/app/src/main/res/layout/layout_tools_paint.xml +++ b/app/src/main/res/layout/layout_tools_paint.xml @@ -1,5 +1,5 @@ - - \ No newline at end of file + \ No newline at end of file diff --git a/app/src/main/res/layout/row_editing_tools.xml b/app/src/main/res/layout/row_editing_tools.xml index e420caff..83c24df1 100644 --- a/app/src/main/res/layout/row_editing_tools.xml +++ b/app/src/main/res/layout/row_editing_tools.xml @@ -1,5 +1,5 @@ - - \ No newline at end of file + \ No newline at end of file diff --git a/app/src/main/res/layout/row_filter_view.xml b/app/src/main/res/layout/row_filter_view.xml index 0f36224a..0827a775 100644 --- a/app/src/main/res/layout/row_filter_view.xml +++ b/app/src/main/res/layout/row_filter_view.xml @@ -1,5 +1,5 @@ - - \ No newline at end of file + \ No newline at end of file diff --git a/app/src/main/res/layout/row_sticker.xml b/app/src/main/res/layout/row_sticker.xml index bdb6e135..02e0e42a 100644 --- a/app/src/main/res/layout/row_sticker.xml +++ b/app/src/main/res/layout/row_sticker.xml @@ -1,5 +1,5 @@ - - \ No newline at end of file + \ No newline at end of file diff --git a/app/src/main/res/values/strings.xml b/app/src/main/res/values/strings.xml index 77b39aa0..25a370f3 100644 --- a/app/src/main/res/values/strings.xml +++ b/app/src/main/res/values/strings.xml @@ -4,7 +4,9 @@ Emoji Sticker Eraser + Eraser Mode Text Filter Adjust + Are you want to exit without saving image ? diff --git a/build.gradle b/build.gradle index bf30f540..7f6c4a2c 100644 --- a/build.gradle +++ b/build.gradle @@ -7,7 +7,7 @@ buildscript { jcenter() } dependencies { - classpath 'com.android.tools.build:gradle:3.5.0' + classpath 'com.android.tools.build:gradle:3.5.3' classpath 'com.jfrog.bintray.gradle:gradle-bintray-plugin:1.7.3' classpath "com.github.dcendents:android-maven-gradle-plugin:2.0" // classpath 'com.getkeepsafe.dexcount:dexcount-gradle-plugin:0.8.2' diff --git a/gradle.properties b/gradle.properties index aac7c9b4..9e6fce10 100644 --- a/gradle.properties +++ b/gradle.properties @@ -9,6 +9,8 @@ # Specifies the JVM arguments used for the daemon process. # The setting is particularly useful for tweaking memory settings. +android.enableJetifier=true +android.useAndroidX=true org.gradle.jvmargs=-Xmx1536m # When configured, Gradle will run in incubating parallel mode. diff --git a/photoeditor/build.gradle b/photoeditor/build.gradle index 59d05f9f..afab3ba3 100644 --- a/photoeditor/build.gradle +++ b/photoeditor/build.gradle @@ -15,7 +15,7 @@ ext { siteUrl = 'https://github.com/burhanrashid52/PhotoEditor' gitUrl = 'https://github.com/burhanrashid52/PhotoEditor' - libraryVersion = '0.4.0' + libraryVersion = '1.0.0' developerId = 'burhanrashid52' developerName = 'Burhanuddin Rashid' @@ -28,14 +28,13 @@ ext { android { - compileSdkVersion 28 - buildToolsVersion '28.0.3' + compileSdkVersion 29 defaultConfig { minSdkVersion 14 - targetSdkVersion 28 + targetSdkVersion 29 versionCode 1 - versionName "0.4.0" + versionName "1.0.0" testInstrumentationRunner "android.support.test.runner.AndroidJUnitRunner" } @@ -62,10 +61,10 @@ android { dependencies { implementation fileTree(dir: 'libs', include: ['*.jar']) - implementation 'com.android.support:appcompat-v7:28.0.0' - implementation "com.android.support:support-v13:28.0.0" + implementation 'androidx.appcompat:appcompat:1.1.0' + implementation 'androidx.legacy:legacy-support-v13:1.0.0' - androidTestImplementation('com.android.support.test.espresso:espresso-core:2.2.2', { + androidTestImplementation('androidx.test.espresso:espresso-core:3.1.0', { exclude group: 'com.android.support', module: 'support-annotations' }) diff --git a/photoeditor/src/main/java/ja/burhanrashid52/photoeditor/BrushDrawingView.java b/photoeditor/src/main/java/ja/burhanrashid52/photoeditor/BrushDrawingView.java index 0fdda311..917feb38 100644 --- a/photoeditor/src/main/java/ja/burhanrashid52/photoeditor/BrushDrawingView.java +++ b/photoeditor/src/main/java/ja/burhanrashid52/photoeditor/BrushDrawingView.java @@ -9,15 +9,14 @@ import android.graphics.Path; import android.graphics.PorterDuff; import android.graphics.PorterDuffXfermode; -import android.support.annotation.ColorInt; -import android.support.annotation.IntRange; -import android.support.annotation.NonNull; -import android.support.annotation.VisibleForTesting; +import androidx.annotation.ColorInt; +import androidx.annotation.IntRange; +import androidx.annotation.NonNull; +import androidx.annotation.VisibleForTesting; import android.util.AttributeSet; import android.util.Pair; import android.view.MotionEvent; import android.view.View; - import java.util.Stack; /** diff --git a/photoeditor/src/main/java/ja/burhanrashid52/photoeditor/CustomEffect.java b/photoeditor/src/main/java/ja/burhanrashid52/photoeditor/CustomEffect.java index d9735f3d..cefaf3f1 100644 --- a/photoeditor/src/main/java/ja/burhanrashid52/photoeditor/CustomEffect.java +++ b/photoeditor/src/main/java/ja/burhanrashid52/photoeditor/CustomEffect.java @@ -1,6 +1,6 @@ package ja.burhanrashid52.photoeditor; -import android.support.annotation.NonNull; +import androidx.annotation.NonNull; import android.text.TextUtils; import java.util.HashMap; diff --git a/photoeditor/src/main/java/ja/burhanrashid52/photoeditor/FilterImageView.java b/photoeditor/src/main/java/ja/burhanrashid52/photoeditor/FilterImageView.java index 15776715..2c4e5935 100644 --- a/photoeditor/src/main/java/ja/burhanrashid52/photoeditor/FilterImageView.java +++ b/photoeditor/src/main/java/ja/burhanrashid52/photoeditor/FilterImageView.java @@ -9,10 +9,9 @@ import android.graphics.drawable.Drawable; import android.graphics.drawable.Icon; import android.net.Uri; -import android.support.annotation.Nullable; -import android.support.v7.widget.AppCompatImageView; +import androidx.annotation.Nullable; +import androidx.appcompat.widget.AppCompatImageView; import android.util.AttributeSet; -import android.util.Log; /** * @author Burhanuddin Rashid diff --git a/photoeditor/src/main/java/ja/burhanrashid52/photoeditor/MultiTouchListener.java b/photoeditor/src/main/java/ja/burhanrashid52/photoeditor/MultiTouchListener.java index 7fd0a750..c40a3531 100644 --- a/photoeditor/src/main/java/ja/burhanrashid52/photoeditor/MultiTouchListener.java +++ b/photoeditor/src/main/java/ja/burhanrashid52/photoeditor/MultiTouchListener.java @@ -1,14 +1,13 @@ package ja.burhanrashid52.photoeditor; import android.graphics.Rect; -import android.support.annotation.Nullable; +import androidx.annotation.Nullable; import android.view.GestureDetector; import android.view.MotionEvent; import android.view.View; import android.view.View.OnTouchListener; import android.widget.ImageView; import android.widget.RelativeLayout; -import android.widget.TextView; /** * Created on 18/01/2017. diff --git a/photoeditor/src/main/java/ja/burhanrashid52/photoeditor/PhotoEditor.java b/photoeditor/src/main/java/ja/burhanrashid52/photoeditor/PhotoEditor.java index c27e9337..b6fd4b29 100644 --- a/photoeditor/src/main/java/ja/burhanrashid52/photoeditor/PhotoEditor.java +++ b/photoeditor/src/main/java/ja/burhanrashid52/photoeditor/PhotoEditor.java @@ -6,12 +6,12 @@ import android.graphics.Bitmap; import android.graphics.Typeface; import android.os.AsyncTask; -import android.support.annotation.ColorInt; -import android.support.annotation.IntRange; -import android.support.annotation.NonNull; -import android.support.annotation.Nullable; -import android.support.annotation.RequiresPermission; -import android.support.annotation.UiThread; +import androidx.annotation.ColorInt; +import androidx.annotation.IntRange; +import androidx.annotation.NonNull; +import androidx.annotation.Nullable; +import androidx.annotation.RequiresPermission; +import androidx.annotation.UiThread; import android.text.TextUtils; import android.util.Log; import android.view.Gravity; diff --git a/photoeditor/src/main/java/ja/burhanrashid52/photoeditor/PhotoEditorView.java b/photoeditor/src/main/java/ja/burhanrashid52/photoeditor/PhotoEditorView.java index d76be3aa..9ff86f16 100644 --- a/photoeditor/src/main/java/ja/burhanrashid52/photoeditor/PhotoEditorView.java +++ b/photoeditor/src/main/java/ja/burhanrashid52/photoeditor/PhotoEditorView.java @@ -4,14 +4,12 @@ import android.content.Context; import android.content.res.TypedArray; import android.graphics.Bitmap; -import android.graphics.drawable.BitmapDrawable; import android.graphics.drawable.Drawable; import android.os.Build; -import android.os.Handler; -import android.os.Looper; -import android.support.annotation.NonNull; -import android.support.annotation.Nullable; -import android.support.annotation.RequiresApi; + +import androidx.annotation.NonNull; +import androidx.annotation.Nullable; +import androidx.annotation.RequiresApi; import android.util.AttributeSet; import android.util.Log; import android.view.ViewGroup; diff --git a/photoeditor/src/main/java/ja/burhanrashid52/photoeditor/SaveSettings.java b/photoeditor/src/main/java/ja/burhanrashid52/photoeditor/SaveSettings.java index 55bf4a6d..04fe445d 100644 --- a/photoeditor/src/main/java/ja/burhanrashid52/photoeditor/SaveSettings.java +++ b/photoeditor/src/main/java/ja/burhanrashid52/photoeditor/SaveSettings.java @@ -1,8 +1,8 @@ package ja.burhanrashid52.photoeditor; import android.graphics.Bitmap; -import android.support.annotation.IntRange; -import android.support.annotation.NonNull; +import androidx.annotation.IntRange; +import androidx.annotation.NonNull; /** * @author Burhanuddin Rashid diff --git a/photoeditor/src/main/java/ja/burhanrashid52/photoeditor/TextStyleBuilder.java b/photoeditor/src/main/java/ja/burhanrashid52/photoeditor/TextStyleBuilder.java index 6c8c7eb1..140a2457 100644 --- a/photoeditor/src/main/java/ja/burhanrashid52/photoeditor/TextStyleBuilder.java +++ b/photoeditor/src/main/java/ja/burhanrashid52/photoeditor/TextStyleBuilder.java @@ -3,7 +3,7 @@ import android.graphics.Typeface; import android.graphics.drawable.Drawable; import android.os.Build; -import android.support.annotation.NonNull; +import androidx.annotation.NonNull; import android.view.View; import android.widget.TextView; diff --git a/photoeditor/src/test/java/ja/burhanrashid52/photoeditor/BaseBrushDrawingViewTest.java b/photoeditor/src/test/java/ja/burhanrashid52/photoeditor/BaseBrushDrawingViewTest.java index e094b3dc..69b4709a 100644 --- a/photoeditor/src/test/java/ja/burhanrashid52/photoeditor/BaseBrushDrawingViewTest.java +++ b/photoeditor/src/test/java/ja/burhanrashid52/photoeditor/BaseBrushDrawingViewTest.java @@ -1,7 +1,7 @@ package ja.burhanrashid52.photoeditor; import android.content.Context; -import android.support.annotation.NonNull; +import androidx.annotation.NonNull; import org.robolectric.RuntimeEnvironment; diff --git a/photoeditor/src/test/resources/robolectric.properties b/photoeditor/src/test/resources/robolectric.properties new file mode 100644 index 00000000..89a6c8b4 --- /dev/null +++ b/photoeditor/src/test/resources/robolectric.properties @@ -0,0 +1 @@ +sdk=28 \ No newline at end of file