From 47740dd579b00516c66fb6228309da1927f79189 Mon Sep 17 00:00:00 2001 From: "Ozan.Turcan" <ozan.turcan@veripark.com> Date: Thu, 25 Apr 2019 10:49:51 +0300 Subject: [PATCH 1/3] added Drawable for Dots without animation --- .idea/assetWizardSettings.xml | 37 +++++ ...rt_animated_vector_drawable_25_3_0_aar.xml | 12 ++ ...ndroid_support_appcompat_v7_25_3_0_aar.xml | 12 ++ ...support_support_annotations_25_3_0_jar.xml | 16 +++ ...roid_support_support_compat_25_3_0_aar.xml | 12 ++ ...oid_support_support_core_ui_25_3_0_aar.xml | 12 ++ ..._support_support_core_utils_25_3_0_aar.xml | 12 ++ ...id_support_support_fragment_25_3_0_aar.xml | 12 ++ ...upport_support_media_compat_25_3_0_aar.xml | 12 ++ ..._android_support_support_v4_25_3_0_aar.xml | 10 ++ ...ort_support_vector_drawable_25_3_0_aar.xml | 12 ++ ..._reactivex_rxjava2_rxandroid_2_0_0_aar.xml | 12 ++ ..._io_reactivex_rxjava2_rxjava_2_0_2_jar.xml | 9 ++ ...tivestreams_reactive_streams_1_0_0_jar.xml | 11 ++ .idea/modules.xml | 11 ++ PatternLockView.iml | 19 +++ app/app.iml | 132 ++++++++++++++++++ app/src/main/res/layout/activity_main.xml | 1 + .../patternlockview-reactive.iml | 121 ++++++++++++++++ patternlockview/patternlockview.iml | 119 ++++++++++++++++ .../patternlockview/PatternLockView.java | 43 +++++- .../src/main/res/drawable/ic_keys_hole.xml | 9 ++ patternlockview/src/main/res/values/attrs.xml | 1 + 23 files changed, 643 insertions(+), 4 deletions(-) create mode 100644 .idea/assetWizardSettings.xml create mode 100644 .idea/libraries/Gradle__com_android_support_animated_vector_drawable_25_3_0_aar.xml create mode 100644 .idea/libraries/Gradle__com_android_support_appcompat_v7_25_3_0_aar.xml create mode 100644 .idea/libraries/Gradle__com_android_support_support_annotations_25_3_0_jar.xml create mode 100644 .idea/libraries/Gradle__com_android_support_support_compat_25_3_0_aar.xml create mode 100644 .idea/libraries/Gradle__com_android_support_support_core_ui_25_3_0_aar.xml create mode 100644 .idea/libraries/Gradle__com_android_support_support_core_utils_25_3_0_aar.xml create mode 100644 .idea/libraries/Gradle__com_android_support_support_fragment_25_3_0_aar.xml create mode 100644 .idea/libraries/Gradle__com_android_support_support_media_compat_25_3_0_aar.xml create mode 100644 .idea/libraries/Gradle__com_android_support_support_v4_25_3_0_aar.xml create mode 100644 .idea/libraries/Gradle__com_android_support_support_vector_drawable_25_3_0_aar.xml create mode 100644 .idea/libraries/Gradle__io_reactivex_rxjava2_rxandroid_2_0_0_aar.xml create mode 100644 .idea/libraries/Gradle__io_reactivex_rxjava2_rxjava_2_0_2_jar.xml create mode 100644 .idea/libraries/Gradle__org_reactivestreams_reactive_streams_1_0_0_jar.xml create mode 100644 .idea/modules.xml create mode 100644 PatternLockView.iml create mode 100644 app/app.iml create mode 100644 patternlockview-reactive/patternlockview-reactive.iml create mode 100644 patternlockview/patternlockview.iml create mode 100644 patternlockview/src/main/res/drawable/ic_keys_hole.xml diff --git a/.idea/assetWizardSettings.xml b/.idea/assetWizardSettings.xml new file mode 100644 index 0000000..801d4a4 --- /dev/null +++ b/.idea/assetWizardSettings.xml @@ -0,0 +1,37 @@ +<?xml version="1.0" encoding="UTF-8"?> +<project version="4"> + <component name="WizardSettings"> + <option name="children"> + <map> + <entry key="imageWizard"> + <value> + <PersistentState /> + </value> + </entry> + <entry key="vectorWizard"> + <value> + <PersistentState> + <option name="children"> + <map> + <entry key="vectorAssetStep"> + <value> + <PersistentState> + <option name="values"> + <map> + <entry key="assetSourceType" value="FILE" /> + <entry key="outputName" value="ic_keys_hole" /> + <entry key="sourceFile" value="$USER_HOME$/Desktop/keys-hole.svg" /> + </map> + </option> + </PersistentState> + </value> + </entry> + </map> + </option> + </PersistentState> + </value> + </entry> + </map> + </option> + </component> +</project> \ No newline at end of file diff --git a/.idea/libraries/Gradle__com_android_support_animated_vector_drawable_25_3_0_aar.xml b/.idea/libraries/Gradle__com_android_support_animated_vector_drawable_25_3_0_aar.xml new file mode 100644 index 0000000..705ae49 --- /dev/null +++ b/.idea/libraries/Gradle__com_android_support_animated_vector_drawable_25_3_0_aar.xml @@ -0,0 +1,12 @@ +<component name="libraryTable"> + <library name="Gradle: com.android.support:animated-vector-drawable:25.3.0@aar"> + <CLASSES> + <root url="jar://$USER_HOME$/.android/build-cache/07e3f6233ea5985b4ce69ec666edaacecacd885e/output/jars/classes.jar!/" /> + <root url="file://$USER_HOME$/.android/build-cache/07e3f6233ea5985b4ce69ec666edaacecacd885e/output/res" /> + </CLASSES> + <JAVADOC /> + <SOURCES> + <root url="jar://$USER_HOME$/Library/Android/sdk/extras/android/m2repository/com/android/support/animated-vector-drawable/25.3.0/animated-vector-drawable-25.3.0-sources.jar!/" /> + </SOURCES> + </library> +</component> \ No newline at end of file diff --git a/.idea/libraries/Gradle__com_android_support_appcompat_v7_25_3_0_aar.xml b/.idea/libraries/Gradle__com_android_support_appcompat_v7_25_3_0_aar.xml new file mode 100644 index 0000000..54213c6 --- /dev/null +++ b/.idea/libraries/Gradle__com_android_support_appcompat_v7_25_3_0_aar.xml @@ -0,0 +1,12 @@ +<component name="libraryTable"> + <library name="Gradle: com.android.support:appcompat-v7:25.3.0@aar"> + <CLASSES> + <root url="file://$USER_HOME$/.android/build-cache/e3475a27fc93304c925ff63a9b6ac871367855b1/output/res" /> + <root url="jar://$USER_HOME$/.android/build-cache/e3475a27fc93304c925ff63a9b6ac871367855b1/output/jars/classes.jar!/" /> + </CLASSES> + <JAVADOC /> + <SOURCES> + <root url="jar://$USER_HOME$/Library/Android/sdk/extras/android/m2repository/com/android/support/appcompat-v7/25.3.0/appcompat-v7-25.3.0-sources.jar!/" /> + </SOURCES> + </library> +</component> \ No newline at end of file diff --git a/.idea/libraries/Gradle__com_android_support_support_annotations_25_3_0_jar.xml b/.idea/libraries/Gradle__com_android_support_support_annotations_25_3_0_jar.xml new file mode 100644 index 0000000..66210f3 --- /dev/null +++ b/.idea/libraries/Gradle__com_android_support_support_annotations_25_3_0_jar.xml @@ -0,0 +1,16 @@ +<component name="libraryTable"> + <library name="Gradle: com.android.support:support-annotations:25.3.0@jar"> + <ANNOTATIONS> + <root url="jar://$USER_HOME$/Library/Android/sdk/extras/android/m2repository/com/android/support/support-annotations/25.3.0/support-annotations-25.3.0-annotations.zip!/" /> + </ANNOTATIONS> + <CLASSES> + <root url="jar://$USER_HOME$/Library/Android/sdk/extras/android/m2repository/com/android/support/support-annotations/25.3.0/support-annotations-25.3.0.jar!/" /> + </CLASSES> + <JAVADOC> + <root url="jar://$USER_HOME$/Library/Android/sdk/extras/android/m2repository/com/android/support/support-annotations/25.3.0/support-annotations-25.3.0-javadoc.jar!/" /> + </JAVADOC> + <SOURCES> + <root url="jar://$USER_HOME$/Library/Android/sdk/extras/android/m2repository/com/android/support/support-annotations/25.3.0/support-annotations-25.3.0-sources.jar!/" /> + </SOURCES> + </library> +</component> \ No newline at end of file diff --git a/.idea/libraries/Gradle__com_android_support_support_compat_25_3_0_aar.xml b/.idea/libraries/Gradle__com_android_support_support_compat_25_3_0_aar.xml new file mode 100644 index 0000000..64394cf --- /dev/null +++ b/.idea/libraries/Gradle__com_android_support_support_compat_25_3_0_aar.xml @@ -0,0 +1,12 @@ +<component name="libraryTable"> + <library name="Gradle: com.android.support:support-compat:25.3.0@aar"> + <CLASSES> + <root url="file://$USER_HOME$/.android/build-cache/f3ad6650f198c13ba06da316596439d7bf9db3d1/output/res" /> + <root url="jar://$USER_HOME$/.android/build-cache/f3ad6650f198c13ba06da316596439d7bf9db3d1/output/jars/classes.jar!/" /> + </CLASSES> + <JAVADOC /> + <SOURCES> + <root url="jar://$USER_HOME$/Library/Android/sdk/extras/android/m2repository/com/android/support/support-compat/25.3.0/support-compat-25.3.0-sources.jar!/" /> + </SOURCES> + </library> +</component> \ No newline at end of file diff --git a/.idea/libraries/Gradle__com_android_support_support_core_ui_25_3_0_aar.xml b/.idea/libraries/Gradle__com_android_support_support_core_ui_25_3_0_aar.xml new file mode 100644 index 0000000..d8cf0b2 --- /dev/null +++ b/.idea/libraries/Gradle__com_android_support_support_core_ui_25_3_0_aar.xml @@ -0,0 +1,12 @@ +<component name="libraryTable"> + <library name="Gradle: com.android.support:support-core-ui:25.3.0@aar"> + <CLASSES> + <root url="file://$USER_HOME$/.android/build-cache/c0b554032abbafefdae6356733354fae8c36b542/output/res" /> + <root url="jar://$USER_HOME$/.android/build-cache/c0b554032abbafefdae6356733354fae8c36b542/output/jars/classes.jar!/" /> + </CLASSES> + <JAVADOC /> + <SOURCES> + <root url="jar://$USER_HOME$/Library/Android/sdk/extras/android/m2repository/com/android/support/support-core-ui/25.3.0/support-core-ui-25.3.0-sources.jar!/" /> + </SOURCES> + </library> +</component> \ No newline at end of file diff --git a/.idea/libraries/Gradle__com_android_support_support_core_utils_25_3_0_aar.xml b/.idea/libraries/Gradle__com_android_support_support_core_utils_25_3_0_aar.xml new file mode 100644 index 0000000..4b56344 --- /dev/null +++ b/.idea/libraries/Gradle__com_android_support_support_core_utils_25_3_0_aar.xml @@ -0,0 +1,12 @@ +<component name="libraryTable"> + <library name="Gradle: com.android.support:support-core-utils:25.3.0@aar"> + <CLASSES> + <root url="jar://$USER_HOME$/.android/build-cache/d1e2d27184be9249545869e62f731417f247227c/output/jars/classes.jar!/" /> + <root url="file://$USER_HOME$/.android/build-cache/d1e2d27184be9249545869e62f731417f247227c/output/res" /> + </CLASSES> + <JAVADOC /> + <SOURCES> + <root url="jar://$USER_HOME$/Library/Android/sdk/extras/android/m2repository/com/android/support/support-core-utils/25.3.0/support-core-utils-25.3.0-sources.jar!/" /> + </SOURCES> + </library> +</component> \ No newline at end of file diff --git a/.idea/libraries/Gradle__com_android_support_support_fragment_25_3_0_aar.xml b/.idea/libraries/Gradle__com_android_support_support_fragment_25_3_0_aar.xml new file mode 100644 index 0000000..13055a2 --- /dev/null +++ b/.idea/libraries/Gradle__com_android_support_support_fragment_25_3_0_aar.xml @@ -0,0 +1,12 @@ +<component name="libraryTable"> + <library name="Gradle: com.android.support:support-fragment:25.3.0@aar"> + <CLASSES> + <root url="file://$USER_HOME$/.android/build-cache/41f101675358dd32e6b5a5903ee40d46172ffc62/output/res" /> + <root url="jar://$USER_HOME$/.android/build-cache/41f101675358dd32e6b5a5903ee40d46172ffc62/output/jars/classes.jar!/" /> + </CLASSES> + <JAVADOC /> + <SOURCES> + <root url="jar://$USER_HOME$/Library/Android/sdk/extras/android/m2repository/com/android/support/support-fragment/25.3.0/support-fragment-25.3.0-sources.jar!/" /> + </SOURCES> + </library> +</component> \ No newline at end of file diff --git a/.idea/libraries/Gradle__com_android_support_support_media_compat_25_3_0_aar.xml b/.idea/libraries/Gradle__com_android_support_support_media_compat_25_3_0_aar.xml new file mode 100644 index 0000000..c02c485 --- /dev/null +++ b/.idea/libraries/Gradle__com_android_support_support_media_compat_25_3_0_aar.xml @@ -0,0 +1,12 @@ +<component name="libraryTable"> + <library name="Gradle: com.android.support:support-media-compat:25.3.0@aar"> + <CLASSES> + <root url="file://$USER_HOME$/.android/build-cache/206a4e3df3ecc823561b46604f7b9746288bc74f/output/res" /> + <root url="jar://$USER_HOME$/.android/build-cache/206a4e3df3ecc823561b46604f7b9746288bc74f/output/jars/classes.jar!/" /> + </CLASSES> + <JAVADOC /> + <SOURCES> + <root url="jar://$USER_HOME$/Library/Android/sdk/extras/android/m2repository/com/android/support/support-media-compat/25.3.0/support-media-compat-25.3.0-sources.jar!/" /> + </SOURCES> + </library> +</component> \ No newline at end of file diff --git a/.idea/libraries/Gradle__com_android_support_support_v4_25_3_0_aar.xml b/.idea/libraries/Gradle__com_android_support_support_v4_25_3_0_aar.xml new file mode 100644 index 0000000..4bff4b3 --- /dev/null +++ b/.idea/libraries/Gradle__com_android_support_support_v4_25_3_0_aar.xml @@ -0,0 +1,10 @@ +<component name="libraryTable"> + <library name="Gradle: com.android.support:support-v4:25.3.0@aar"> + <CLASSES> + <root url="file://$USER_HOME$/.android/build-cache/825c0081e512cd63adad84817f0735594e84fca3/output/res" /> + <root url="jar://$USER_HOME$/.android/build-cache/825c0081e512cd63adad84817f0735594e84fca3/output/jars/classes.jar!/" /> + </CLASSES> + <JAVADOC /> + <SOURCES /> + </library> +</component> \ No newline at end of file diff --git a/.idea/libraries/Gradle__com_android_support_support_vector_drawable_25_3_0_aar.xml b/.idea/libraries/Gradle__com_android_support_support_vector_drawable_25_3_0_aar.xml new file mode 100644 index 0000000..5c813ff --- /dev/null +++ b/.idea/libraries/Gradle__com_android_support_support_vector_drawable_25_3_0_aar.xml @@ -0,0 +1,12 @@ +<component name="libraryTable"> + <library name="Gradle: com.android.support:support-vector-drawable:25.3.0@aar"> + <CLASSES> + <root url="jar://$USER_HOME$/.android/build-cache/dc22d9edfbfaf91c5cd8f0e85e0ea0f1a686dc54/output/jars/classes.jar!/" /> + <root url="file://$USER_HOME$/.android/build-cache/dc22d9edfbfaf91c5cd8f0e85e0ea0f1a686dc54/output/res" /> + </CLASSES> + <JAVADOC /> + <SOURCES> + <root url="jar://$USER_HOME$/Library/Android/sdk/extras/android/m2repository/com/android/support/support-vector-drawable/25.3.0/support-vector-drawable-25.3.0-sources.jar!/" /> + </SOURCES> + </library> +</component> \ No newline at end of file diff --git a/.idea/libraries/Gradle__io_reactivex_rxjava2_rxandroid_2_0_0_aar.xml b/.idea/libraries/Gradle__io_reactivex_rxjava2_rxandroid_2_0_0_aar.xml new file mode 100644 index 0000000..9b2a311 --- /dev/null +++ b/.idea/libraries/Gradle__io_reactivex_rxjava2_rxandroid_2_0_0_aar.xml @@ -0,0 +1,12 @@ +<component name="libraryTable"> + <library name="Gradle: io.reactivex.rxjava2:rxandroid:2.0.0@aar"> + <CLASSES> + <root url="jar://$USER_HOME$/.android/build-cache/c5acc30154172b1d7fbb5f742c52c68a6ad0e66a/output/jars/classes.jar!/" /> + <root url="file://$USER_HOME$/.android/build-cache/c5acc30154172b1d7fbb5f742c52c68a6ad0e66a/output/res" /> + </CLASSES> + <JAVADOC /> + <SOURCES> + <root url="jar://$USER_HOME$/.gradle/caches/modules-2/files-2.1/io.reactivex.rxjava2/rxandroid/2.0.0/556f370ddb42e819b38d5b723a5e7efa0587532f/rxandroid-2.0.0-sources.jar!/" /> + </SOURCES> + </library> +</component> \ No newline at end of file diff --git a/.idea/libraries/Gradle__io_reactivex_rxjava2_rxjava_2_0_2_jar.xml b/.idea/libraries/Gradle__io_reactivex_rxjava2_rxjava_2_0_2_jar.xml new file mode 100644 index 0000000..b9229a0 --- /dev/null +++ b/.idea/libraries/Gradle__io_reactivex_rxjava2_rxjava_2_0_2_jar.xml @@ -0,0 +1,9 @@ +<component name="libraryTable"> + <library name="Gradle: io.reactivex.rxjava2:rxjava:2.0.2@jar"> + <CLASSES> + <root url="jar://$USER_HOME$/.gradle/caches/modules-2/files-2.1/io.reactivex.rxjava2/rxjava/2.0.2/cfccdd18cdfbe7b4773d42c9f3512eeafbe5cbf9/rxjava-2.0.2.jar!/" /> + </CLASSES> + <JAVADOC /> + <SOURCES /> + </library> +</component> \ No newline at end of file diff --git a/.idea/libraries/Gradle__org_reactivestreams_reactive_streams_1_0_0_jar.xml b/.idea/libraries/Gradle__org_reactivestreams_reactive_streams_1_0_0_jar.xml new file mode 100644 index 0000000..f4fcefc --- /dev/null +++ b/.idea/libraries/Gradle__org_reactivestreams_reactive_streams_1_0_0_jar.xml @@ -0,0 +1,11 @@ +<component name="libraryTable"> + <library name="Gradle: org.reactivestreams:reactive-streams:1.0.0@jar"> + <CLASSES> + <root url="jar://$USER_HOME$/.gradle/caches/modules-2/files-2.1/org.reactivestreams/reactive-streams/1.0.0/14b8c877d98005ba3941c9257cfe09f6ed0e0d74/reactive-streams-1.0.0.jar!/" /> + </CLASSES> + <JAVADOC /> + <SOURCES> + <root url="jar://$USER_HOME$/.gradle/caches/modules-2/files-2.1/org.reactivestreams/reactive-streams/1.0.0/5be7bd3f38e43c8fc83699bbb5328c62adb95bbf/reactive-streams-1.0.0-sources.jar!/" /> + </SOURCES> + </library> +</component> \ No newline at end of file diff --git a/.idea/modules.xml b/.idea/modules.xml new file mode 100644 index 0000000..e7a55e6 --- /dev/null +++ b/.idea/modules.xml @@ -0,0 +1,11 @@ +<?xml version="1.0" encoding="UTF-8"?> +<project version="4"> + <component name="ProjectModuleManager"> + <modules> + <module fileurl="file://$PROJECT_DIR$/PatternLockView.iml" filepath="$PROJECT_DIR$/PatternLockView.iml" /> + <module fileurl="file://$PROJECT_DIR$/app/app.iml" filepath="$PROJECT_DIR$/app/app.iml" /> + <module fileurl="file://$PROJECT_DIR$/patternlockview/patternlockview.iml" filepath="$PROJECT_DIR$/patternlockview/patternlockview.iml" /> + <module fileurl="file://$PROJECT_DIR$/patternlockview-reactive/patternlockview-reactive.iml" filepath="$PROJECT_DIR$/patternlockview-reactive/patternlockview-reactive.iml" /> + </modules> + </component> +</project> \ No newline at end of file diff --git a/PatternLockView.iml b/PatternLockView.iml new file mode 100644 index 0000000..d315539 --- /dev/null +++ b/PatternLockView.iml @@ -0,0 +1,19 @@ +<?xml version="1.0" encoding="UTF-8"?> +<module external.linked.project.id="PatternLockView" external.linked.project.path="$MODULE_DIR$" external.root.project.path="$MODULE_DIR$" external.system.id="GRADLE" type="JAVA_MODULE" version="4"> + <component name="FacetManager"> + <facet type="java-gradle" name="Java-Gradle"> + <configuration> + <option name="BUILD_FOLDER_PATH" value="$MODULE_DIR$/build" /> + <option name="BUILDABLE" value="false" /> + </configuration> + </facet> + </component> + <component name="NewModuleRootManager" LANGUAGE_LEVEL="JDK_1_7" inherit-compiler-output="true"> + <exclude-output /> + <content url="file://$MODULE_DIR$"> + <excludeFolder url="file://$MODULE_DIR$/.gradle" /> + </content> + <orderEntry type="inheritedJdk" /> + <orderEntry type="sourceFolder" forTests="false" /> + </component> +</module> \ No newline at end of file diff --git a/app/app.iml b/app/app.iml new file mode 100644 index 0000000..6fdb1f0 --- /dev/null +++ b/app/app.iml @@ -0,0 +1,132 @@ +<?xml version="1.0" encoding="UTF-8"?> +<module external.linked.project.id=":app" external.linked.project.path="$MODULE_DIR$" external.root.project.path="$MODULE_DIR$/.." external.system.id="GRADLE" type="JAVA_MODULE" version="4"> + <component name="FacetManager"> + <facet type="android-gradle" name="Android-Gradle"> + <configuration> + <option name="GRADLE_PROJECT_PATH" value=":app" /> + </configuration> + </facet> + <facet type="android" name="Android"> + <configuration> + <option name="SELECTED_BUILD_VARIANT" value="debug" /> + <option name="ASSEMBLE_TASK_NAME" value="assembleDebug" /> + <option name="COMPILE_JAVA_TASK_NAME" value="compileDebugSources" /> + <afterSyncTasks> + <task>generateDebugSources</task> + </afterSyncTasks> + <option name="ALLOW_USER_CONFIGURATION" value="false" /> + <option name="MANIFEST_FILE_RELATIVE_PATH" value="/src/main/AndroidManifest.xml" /> + <option name="RES_FOLDER_RELATIVE_PATH" value="/src/main/res" /> + <option name="RES_FOLDERS_RELATIVE_PATH" value="file://$MODULE_DIR$/src/main/res;file://$MODULE_DIR$/build/generated/res/rs/debug;file://$MODULE_DIR$/build/generated/res/resValues/debug" /> + <option name="ASSETS_FOLDER_RELATIVE_PATH" value="/src/main/assets" /> + </configuration> + </facet> + </component> + <component name="NewModuleRootManager" LANGUAGE_LEVEL="JDK_1_7"> + <output url="file://$MODULE_DIR$/build/intermediates/classes/debug" /> + <output-test url="file://$MODULE_DIR$/build/intermediates/classes/test/debug" /> + <exclude-output /> + <content url="file://$MODULE_DIR$"> + <sourceFolder url="file://$MODULE_DIR$/build/generated/source/aidl/debug" isTestSource="false" generated="true" /> + <sourceFolder url="file://$MODULE_DIR$/build/generated/source/buildConfig/debug" isTestSource="false" generated="true" /> + <sourceFolder url="file://$MODULE_DIR$/build/generated/source/rs/debug" isTestSource="false" generated="true" /> + <sourceFolder url="file://$MODULE_DIR$/build/generated/source/apt/debug" isTestSource="false" generated="true" /> + <sourceFolder url="file://$MODULE_DIR$/build/generated/res/rs/debug" type="java-resource" /> + <sourceFolder url="file://$MODULE_DIR$/build/generated/res/resValues/debug" type="java-resource" /> + <sourceFolder url="file://$MODULE_DIR$/build/generated/source/aidl/androidTest/debug" isTestSource="true" generated="true" /> + <sourceFolder url="file://$MODULE_DIR$/build/generated/source/buildConfig/androidTest/debug" isTestSource="true" generated="true" /> + <sourceFolder url="file://$MODULE_DIR$/build/generated/source/rs/androidTest/debug" isTestSource="true" generated="true" /> + <sourceFolder url="file://$MODULE_DIR$/build/generated/source/apt/androidTest/debug" isTestSource="true" generated="true" /> + <sourceFolder url="file://$MODULE_DIR$/build/generated/res/rs/androidTest/debug" type="java-test-resource" /> + <sourceFolder url="file://$MODULE_DIR$/build/generated/res/resValues/androidTest/debug" type="java-test-resource" /> + <sourceFolder url="file://$MODULE_DIR$/src/debug/res" type="java-resource" /> + <sourceFolder url="file://$MODULE_DIR$/src/debug/resources" type="java-resource" /> + <sourceFolder url="file://$MODULE_DIR$/src/debug/assets" type="java-resource" /> + <sourceFolder url="file://$MODULE_DIR$/src/debug/aidl" isTestSource="false" /> + <sourceFolder url="file://$MODULE_DIR$/src/debug/java" isTestSource="false" /> + <sourceFolder url="file://$MODULE_DIR$/src/debug/rs" isTestSource="false" /> + <sourceFolder url="file://$MODULE_DIR$/src/debug/shaders" isTestSource="false" /> + <sourceFolder url="file://$MODULE_DIR$/src/testDebug/res" type="java-test-resource" /> + <sourceFolder url="file://$MODULE_DIR$/src/testDebug/resources" type="java-test-resource" /> + <sourceFolder url="file://$MODULE_DIR$/src/testDebug/assets" type="java-test-resource" /> + <sourceFolder url="file://$MODULE_DIR$/src/testDebug/aidl" isTestSource="true" /> + <sourceFolder url="file://$MODULE_DIR$/src/testDebug/java" isTestSource="true" /> + <sourceFolder url="file://$MODULE_DIR$/src/testDebug/rs" isTestSource="true" /> + <sourceFolder url="file://$MODULE_DIR$/src/testDebug/shaders" isTestSource="true" /> + <sourceFolder url="file://$MODULE_DIR$/src/main/res" type="java-resource" /> + <sourceFolder url="file://$MODULE_DIR$/src/main/resources" type="java-resource" /> + <sourceFolder url="file://$MODULE_DIR$/src/main/assets" type="java-resource" /> + <sourceFolder url="file://$MODULE_DIR$/src/main/aidl" isTestSource="false" /> + <sourceFolder url="file://$MODULE_DIR$/src/main/java" isTestSource="false" /> + <sourceFolder url="file://$MODULE_DIR$/src/main/rs" isTestSource="false" /> + <sourceFolder url="file://$MODULE_DIR$/src/main/shaders" isTestSource="false" /> + <sourceFolder url="file://$MODULE_DIR$/src/test/res" type="java-test-resource" /> + <sourceFolder url="file://$MODULE_DIR$/src/test/resources" type="java-test-resource" /> + <sourceFolder url="file://$MODULE_DIR$/src/test/assets" type="java-test-resource" /> + <sourceFolder url="file://$MODULE_DIR$/src/test/aidl" isTestSource="true" /> + <sourceFolder url="file://$MODULE_DIR$/src/test/java" isTestSource="true" /> + <sourceFolder url="file://$MODULE_DIR$/src/test/rs" isTestSource="true" /> + <sourceFolder url="file://$MODULE_DIR$/src/test/shaders" isTestSource="true" /> + <sourceFolder url="file://$MODULE_DIR$/src/androidTest/res" type="java-test-resource" /> + <sourceFolder url="file://$MODULE_DIR$/src/androidTest/resources" type="java-test-resource" /> + <sourceFolder url="file://$MODULE_DIR$/src/androidTest/assets" type="java-test-resource" /> + <sourceFolder url="file://$MODULE_DIR$/src/androidTest/aidl" isTestSource="true" /> + <sourceFolder url="file://$MODULE_DIR$/src/androidTest/java" isTestSource="true" /> + <sourceFolder url="file://$MODULE_DIR$/src/androidTest/rs" isTestSource="true" /> + <sourceFolder url="file://$MODULE_DIR$/src/androidTest/shaders" isTestSource="true" /> + <excludeFolder url="file://$MODULE_DIR$/build/generated/not_namespaced_r_class_sources" /> + <excludeFolder url="file://$MODULE_DIR$/build/generated/source/r" /> + <excludeFolder url="file://$MODULE_DIR$/build/intermediates/apk_list" /> + <excludeFolder url="file://$MODULE_DIR$/build/intermediates/assets" /> + <excludeFolder url="file://$MODULE_DIR$/build/intermediates/blame" /> + <excludeFolder url="file://$MODULE_DIR$/build/intermediates/build-info" /> + <excludeFolder url="file://$MODULE_DIR$/build/intermediates/builds" /> + <excludeFolder url="file://$MODULE_DIR$/build/intermediates/check-manifest" /> + <excludeFolder url="file://$MODULE_DIR$/build/intermediates/checkDebugClasspath" /> + <excludeFolder url="file://$MODULE_DIR$/build/intermediates/classes" /> + <excludeFolder url="file://$MODULE_DIR$/build/intermediates/compatible_screen_manifest" /> + <excludeFolder url="file://$MODULE_DIR$/build/intermediates/incremental" /> + <excludeFolder url="file://$MODULE_DIR$/build/intermediates/incremental-classes" /> + <excludeFolder url="file://$MODULE_DIR$/build/intermediates/incremental-runtime-classes" /> + <excludeFolder url="file://$MODULE_DIR$/build/intermediates/incremental-safeguard" /> + <excludeFolder url="file://$MODULE_DIR$/build/intermediates/incremental-verifier" /> + <excludeFolder url="file://$MODULE_DIR$/build/intermediates/instant-run-resources" /> + <excludeFolder url="file://$MODULE_DIR$/build/intermediates/instant-run-support" /> + <excludeFolder url="file://$MODULE_DIR$/build/intermediates/instant_run_merged_manifests" /> + <excludeFolder url="file://$MODULE_DIR$/build/intermediates/jniLibs" /> + <excludeFolder url="file://$MODULE_DIR$/build/intermediates/lint_jar" /> + <excludeFolder url="file://$MODULE_DIR$/build/intermediates/manifests" /> + <excludeFolder url="file://$MODULE_DIR$/build/intermediates/merged_manifests" /> + <excludeFolder url="file://$MODULE_DIR$/build/intermediates/prebuild" /> + <excludeFolder url="file://$MODULE_DIR$/build/intermediates/processed_res" /> + <excludeFolder url="file://$MODULE_DIR$/build/intermediates/reload-dex" /> + <excludeFolder url="file://$MODULE_DIR$/build/intermediates/res" /> + <excludeFolder url="file://$MODULE_DIR$/build/intermediates/restart-dex" /> + <excludeFolder url="file://$MODULE_DIR$/build/intermediates/rs" /> + <excludeFolder url="file://$MODULE_DIR$/build/intermediates/shaders" /> + <excludeFolder url="file://$MODULE_DIR$/build/intermediates/split-apk" /> + <excludeFolder url="file://$MODULE_DIR$/build/intermediates/split_list" /> + <excludeFolder url="file://$MODULE_DIR$/build/intermediates/symbols" /> + <excludeFolder url="file://$MODULE_DIR$/build/intermediates/transforms" /> + <excludeFolder url="file://$MODULE_DIR$/build/outputs" /> + <excludeFolder url="file://$MODULE_DIR$/build/tmp" /> + </content> + <orderEntry type="jdk" jdkName="Android API 25 Platform" jdkType="Android SDK" /> + <orderEntry type="sourceFolder" forTests="false" /> + <orderEntry type="library" exported="" name="Gradle: com.android.support:support-core-ui:25.3.0@aar" level="project" /> + <orderEntry type="library" exported="" name="Gradle: com.android.support:animated-vector-drawable:25.3.0@aar" level="project" /> + <orderEntry type="library" exported="" name="Gradle: io.reactivex.rxjava2:rxandroid:2.0.0@aar" level="project" /> + <orderEntry type="library" exported="" name="Gradle: com.android.support:support-fragment:25.3.0@aar" level="project" /> + <orderEntry type="library" exported="" name="Gradle: org.reactivestreams:reactive-streams:1.0.0@jar" level="project" /> + <orderEntry type="library" exported="" name="Gradle: com.android.support:support-annotations:25.3.0@jar" level="project" /> + <orderEntry type="library" exported="" name="Gradle: com.android.support:appcompat-v7:25.3.0@aar" level="project" /> + <orderEntry type="library" exported="" name="Gradle: com.android.support:support-media-compat:25.3.0@aar" level="project" /> + <orderEntry type="library" exported="" name="Gradle: com.android.support:support-core-utils:25.3.0@aar" level="project" /> + <orderEntry type="library" exported="" name="Gradle: com.android.support:support-vector-drawable:25.3.0@aar" level="project" /> + <orderEntry type="library" exported="" name="Gradle: com.android.support:support-v4:25.3.0@aar" level="project" /> + <orderEntry type="library" exported="" name="Gradle: io.reactivex.rxjava2:rxjava:2.0.2@jar" level="project" /> + <orderEntry type="library" exported="" name="Gradle: com.android.support:support-compat:25.3.0@aar" level="project" /> + <orderEntry type="module" module-name="patternlockview" exported="" /> + <orderEntry type="module" module-name="patternlockview-reactive" exported="" /> + </component> +</module> \ No newline at end of file diff --git a/app/src/main/res/layout/activity_main.xml b/app/src/main/res/layout/activity_main.xml index 482d3d4..c9175c6 100644 --- a/app/src/main/res/layout/activity_main.xml +++ b/app/src/main/res/layout/activity_main.xml @@ -36,6 +36,7 @@ android:layout_marginTop="16dp" app:aspectRatio="square" app:aspectRatioEnabled="true" + app:dotDrawable="@drawable/logo" app:dotAnimationDuration="150" app:dotCount="3"/> diff --git a/patternlockview-reactive/patternlockview-reactive.iml b/patternlockview-reactive/patternlockview-reactive.iml new file mode 100644 index 0000000..69dc56a --- /dev/null +++ b/patternlockview-reactive/patternlockview-reactive.iml @@ -0,0 +1,121 @@ +<?xml version="1.0" encoding="UTF-8"?> +<module external.linked.project.id=":patternlockview-reactive" external.linked.project.path="$MODULE_DIR$" external.root.project.path="$MODULE_DIR$/.." external.system.id="GRADLE" type="JAVA_MODULE" version="4"> + <component name="FacetManager"> + <facet type="android-gradle" name="Android-Gradle"> + <configuration> + <option name="GRADLE_PROJECT_PATH" value=":patternlockview-reactive" /> + </configuration> + </facet> + <facet type="android" name="Android"> + <configuration> + <option name="SELECTED_BUILD_VARIANT" value="debug" /> + <option name="ASSEMBLE_TASK_NAME" value="assembleDebug" /> + <option name="COMPILE_JAVA_TASK_NAME" value="compileDebugSources" /> + <afterSyncTasks> + <task>generateDebugSources</task> + </afterSyncTasks> + <option name="ALLOW_USER_CONFIGURATION" value="false" /> + <option name="MANIFEST_FILE_RELATIVE_PATH" value="/src/main/AndroidManifest.xml" /> + <option name="RES_FOLDER_RELATIVE_PATH" value="/src/main/res" /> + <option name="RES_FOLDERS_RELATIVE_PATH" value="file://$MODULE_DIR$/src/main/res;file://$MODULE_DIR$/build/generated/res/rs/debug;file://$MODULE_DIR$/build/generated/res/resValues/debug" /> + <option name="ASSETS_FOLDER_RELATIVE_PATH" value="/src/main/assets" /> + <option name="PROJECT_TYPE" value="1" /> + </configuration> + </facet> + </component> + <component name="NewModuleRootManager" LANGUAGE_LEVEL="JDK_1_7"> + <output url="file://$MODULE_DIR$/build/intermediates/classes/debug" /> + <output-test url="file://$MODULE_DIR$/build/intermediates/classes/test/debug" /> + <exclude-output /> + <content url="file://$MODULE_DIR$"> + <sourceFolder url="file://$MODULE_DIR$/build/generated/source/aidl/debug" isTestSource="false" generated="true" /> + <sourceFolder url="file://$MODULE_DIR$/build/generated/source/buildConfig/debug" isTestSource="false" generated="true" /> + <sourceFolder url="file://$MODULE_DIR$/build/generated/source/rs/debug" isTestSource="false" generated="true" /> + <sourceFolder url="file://$MODULE_DIR$/build/generated/source/apt/debug" isTestSource="false" generated="true" /> + <sourceFolder url="file://$MODULE_DIR$/build/generated/res/rs/debug" type="java-resource" /> + <sourceFolder url="file://$MODULE_DIR$/build/generated/res/resValues/debug" type="java-resource" /> + <sourceFolder url="file://$MODULE_DIR$/build/generated/source/aidl/androidTest/debug" isTestSource="true" generated="true" /> + <sourceFolder url="file://$MODULE_DIR$/build/generated/source/buildConfig/androidTest/debug" isTestSource="true" generated="true" /> + <sourceFolder url="file://$MODULE_DIR$/build/generated/source/rs/androidTest/debug" isTestSource="true" generated="true" /> + <sourceFolder url="file://$MODULE_DIR$/build/generated/source/apt/androidTest/debug" isTestSource="true" generated="true" /> + <sourceFolder url="file://$MODULE_DIR$/build/generated/res/rs/androidTest/debug" type="java-test-resource" /> + <sourceFolder url="file://$MODULE_DIR$/build/generated/res/resValues/androidTest/debug" type="java-test-resource" /> + <sourceFolder url="file://$MODULE_DIR$/src/debug/res" type="java-resource" /> + <sourceFolder url="file://$MODULE_DIR$/src/debug/resources" type="java-resource" /> + <sourceFolder url="file://$MODULE_DIR$/src/debug/assets" type="java-resource" /> + <sourceFolder url="file://$MODULE_DIR$/src/debug/aidl" isTestSource="false" /> + <sourceFolder url="file://$MODULE_DIR$/src/debug/java" isTestSource="false" /> + <sourceFolder url="file://$MODULE_DIR$/src/debug/rs" isTestSource="false" /> + <sourceFolder url="file://$MODULE_DIR$/src/debug/shaders" isTestSource="false" /> + <sourceFolder url="file://$MODULE_DIR$/src/testDebug/res" type="java-test-resource" /> + <sourceFolder url="file://$MODULE_DIR$/src/testDebug/resources" type="java-test-resource" /> + <sourceFolder url="file://$MODULE_DIR$/src/testDebug/assets" type="java-test-resource" /> + <sourceFolder url="file://$MODULE_DIR$/src/testDebug/aidl" isTestSource="true" /> + <sourceFolder url="file://$MODULE_DIR$/src/testDebug/java" isTestSource="true" /> + <sourceFolder url="file://$MODULE_DIR$/src/testDebug/rs" isTestSource="true" /> + <sourceFolder url="file://$MODULE_DIR$/src/testDebug/shaders" isTestSource="true" /> + <sourceFolder url="file://$MODULE_DIR$/src/main/res" type="java-resource" /> + <sourceFolder url="file://$MODULE_DIR$/src/main/resources" type="java-resource" /> + <sourceFolder url="file://$MODULE_DIR$/src/main/assets" type="java-resource" /> + <sourceFolder url="file://$MODULE_DIR$/src/main/aidl" isTestSource="false" /> + <sourceFolder url="file://$MODULE_DIR$/src/main/java" isTestSource="false" /> + <sourceFolder url="file://$MODULE_DIR$/src/main/rs" isTestSource="false" /> + <sourceFolder url="file://$MODULE_DIR$/src/main/shaders" isTestSource="false" /> + <sourceFolder url="file://$MODULE_DIR$/src/androidTest/res" type="java-test-resource" /> + <sourceFolder url="file://$MODULE_DIR$/src/androidTest/resources" type="java-test-resource" /> + <sourceFolder url="file://$MODULE_DIR$/src/androidTest/assets" type="java-test-resource" /> + <sourceFolder url="file://$MODULE_DIR$/src/androidTest/aidl" isTestSource="true" /> + <sourceFolder url="file://$MODULE_DIR$/src/androidTest/java" isTestSource="true" /> + <sourceFolder url="file://$MODULE_DIR$/src/androidTest/rs" isTestSource="true" /> + <sourceFolder url="file://$MODULE_DIR$/src/androidTest/shaders" isTestSource="true" /> + <sourceFolder url="file://$MODULE_DIR$/src/test/res" type="java-test-resource" /> + <sourceFolder url="file://$MODULE_DIR$/src/test/resources" type="java-test-resource" /> + <sourceFolder url="file://$MODULE_DIR$/src/test/assets" type="java-test-resource" /> + <sourceFolder url="file://$MODULE_DIR$/src/test/aidl" isTestSource="true" /> + <sourceFolder url="file://$MODULE_DIR$/src/test/java" isTestSource="true" /> + <sourceFolder url="file://$MODULE_DIR$/src/test/rs" isTestSource="true" /> + <sourceFolder url="file://$MODULE_DIR$/src/test/shaders" isTestSource="true" /> + <excludeFolder url="file://$MODULE_DIR$/build/generated/not_namespaced_r_class_sources" /> + <excludeFolder url="file://$MODULE_DIR$/build/generated/source/r" /> + <excludeFolder url="file://$MODULE_DIR$/build/intermediates/aapt_friendly_merged_manifests" /> + <excludeFolder url="file://$MODULE_DIR$/build/intermediates/annotation_processor_list" /> + <excludeFolder url="file://$MODULE_DIR$/build/intermediates/annotations" /> + <excludeFolder url="file://$MODULE_DIR$/build/intermediates/blame" /> + <excludeFolder url="file://$MODULE_DIR$/build/intermediates/bundles" /> + <excludeFolder url="file://$MODULE_DIR$/build/intermediates/check-manifest" /> + <excludeFolder url="file://$MODULE_DIR$/build/intermediates/classes" /> + <excludeFolder url="file://$MODULE_DIR$/build/intermediates/incremental" /> + <excludeFolder url="file://$MODULE_DIR$/build/intermediates/incremental-safeguard" /> + <excludeFolder url="file://$MODULE_DIR$/build/intermediates/javac" /> + <excludeFolder url="file://$MODULE_DIR$/build/intermediates/jniLibs" /> + <excludeFolder url="file://$MODULE_DIR$/build/intermediates/lint" /> + <excludeFolder url="file://$MODULE_DIR$/build/intermediates/lint_jar" /> + <excludeFolder url="file://$MODULE_DIR$/build/intermediates/manifests" /> + <excludeFolder url="file://$MODULE_DIR$/build/intermediates/merged_manifests" /> + <excludeFolder url="file://$MODULE_DIR$/build/intermediates/packaged_res" /> + <excludeFolder url="file://$MODULE_DIR$/build/intermediates/public_res" /> + <excludeFolder url="file://$MODULE_DIR$/build/intermediates/res" /> + <excludeFolder url="file://$MODULE_DIR$/build/intermediates/rs" /> + <excludeFolder url="file://$MODULE_DIR$/build/intermediates/shaders" /> + <excludeFolder url="file://$MODULE_DIR$/build/intermediates/symbols" /> + <excludeFolder url="file://$MODULE_DIR$/build/intermediates/transforms" /> + <excludeFolder url="file://$MODULE_DIR$/build/outputs" /> + <excludeFolder url="file://$MODULE_DIR$/build/tmp" /> + </content> + <orderEntry type="jdk" jdkName="Android API 25 Platform" jdkType="Android SDK" /> + <orderEntry type="sourceFolder" forTests="false" /> + <orderEntry type="library" exported="" name="Gradle: com.android.support:support-core-ui:25.3.0@aar" level="project" /> + <orderEntry type="library" exported="" name="Gradle: com.android.support:animated-vector-drawable:25.3.0@aar" level="project" /> + <orderEntry type="library" exported="" name="Gradle: io.reactivex.rxjava2:rxandroid:2.0.0@aar" level="project" /> + <orderEntry type="library" exported="" name="Gradle: com.android.support:support-fragment:25.3.0@aar" level="project" /> + <orderEntry type="library" exported="" name="Gradle: org.reactivestreams:reactive-streams:1.0.0@jar" level="project" /> + <orderEntry type="library" exported="" name="Gradle: com.android.support:appcompat-v7:25.3.0@aar" level="project" /> + <orderEntry type="library" exported="" name="Gradle: com.android.support:support-media-compat:25.3.0@aar" level="project" /> + <orderEntry type="library" exported="" name="Gradle: com.android.support:support-core-utils:25.3.0@aar" level="project" /> + <orderEntry type="library" exported="" name="Gradle: com.android.support:support-vector-drawable:25.3.0@aar" level="project" /> + <orderEntry type="library" exported="" name="Gradle: com.android.support:support-v4:25.3.0@aar" level="project" /> + <orderEntry type="library" exported="" name="Gradle: io.reactivex.rxjava2:rxjava:2.0.2@jar" level="project" /> + <orderEntry type="library" exported="" name="Gradle: com.android.support:support-compat:25.3.0@aar" level="project" /> + <orderEntry type="module" module-name="patternlockview" exported="" /> + </component> +</module> \ No newline at end of file diff --git a/patternlockview/patternlockview.iml b/patternlockview/patternlockview.iml new file mode 100644 index 0000000..9dd3e02 --- /dev/null +++ b/patternlockview/patternlockview.iml @@ -0,0 +1,119 @@ +<?xml version="1.0" encoding="UTF-8"?> +<module external.linked.project.id=":patternlockview" external.linked.project.path="$MODULE_DIR$" external.root.project.path="$MODULE_DIR$/.." external.system.id="GRADLE" type="JAVA_MODULE" version="4"> + <component name="FacetManager"> + <facet type="android-gradle" name="Android-Gradle"> + <configuration> + <option name="GRADLE_PROJECT_PATH" value=":patternlockview" /> + </configuration> + </facet> + <facet type="android" name="Android"> + <configuration> + <option name="SELECTED_BUILD_VARIANT" value="debug" /> + <option name="ASSEMBLE_TASK_NAME" value="assembleDebug" /> + <option name="COMPILE_JAVA_TASK_NAME" value="compileDebugSources" /> + <afterSyncTasks> + <task>generateDebugSources</task> + </afterSyncTasks> + <option name="ALLOW_USER_CONFIGURATION" value="false" /> + <option name="MANIFEST_FILE_RELATIVE_PATH" value="/src/main/AndroidManifest.xml" /> + <option name="RES_FOLDER_RELATIVE_PATH" value="/src/main/res" /> + <option name="RES_FOLDERS_RELATIVE_PATH" value="file://$MODULE_DIR$/src/main/res;file://$MODULE_DIR$/build/generated/res/rs/debug;file://$MODULE_DIR$/build/generated/res/resValues/debug" /> + <option name="ASSETS_FOLDER_RELATIVE_PATH" value="/src/main/assets" /> + <option name="PROJECT_TYPE" value="1" /> + </configuration> + </facet> + </component> + <component name="NewModuleRootManager" LANGUAGE_LEVEL="JDK_1_7"> + <output url="file://$MODULE_DIR$/build/intermediates/classes/debug" /> + <output-test url="file://$MODULE_DIR$/build/intermediates/classes/test/debug" /> + <exclude-output /> + <content url="file://$MODULE_DIR$"> + <sourceFolder url="file://$MODULE_DIR$/build/generated/source/aidl/debug" isTestSource="false" generated="true" /> + <sourceFolder url="file://$MODULE_DIR$/build/generated/source/buildConfig/debug" isTestSource="false" generated="true" /> + <sourceFolder url="file://$MODULE_DIR$/build/generated/source/rs/debug" isTestSource="false" generated="true" /> + <sourceFolder url="file://$MODULE_DIR$/build/generated/source/apt/debug" isTestSource="false" generated="true" /> + <sourceFolder url="file://$MODULE_DIR$/build/generated/res/rs/debug" type="java-resource" /> + <sourceFolder url="file://$MODULE_DIR$/build/generated/res/resValues/debug" type="java-resource" /> + <sourceFolder url="file://$MODULE_DIR$/build/generated/source/aidl/androidTest/debug" isTestSource="true" generated="true" /> + <sourceFolder url="file://$MODULE_DIR$/build/generated/source/buildConfig/androidTest/debug" isTestSource="true" generated="true" /> + <sourceFolder url="file://$MODULE_DIR$/build/generated/source/rs/androidTest/debug" isTestSource="true" generated="true" /> + <sourceFolder url="file://$MODULE_DIR$/build/generated/source/apt/androidTest/debug" isTestSource="true" generated="true" /> + <sourceFolder url="file://$MODULE_DIR$/build/generated/res/rs/androidTest/debug" type="java-test-resource" /> + <sourceFolder url="file://$MODULE_DIR$/build/generated/res/resValues/androidTest/debug" type="java-test-resource" /> + <sourceFolder url="file://$MODULE_DIR$/src/debug/res" type="java-resource" /> + <sourceFolder url="file://$MODULE_DIR$/src/debug/resources" type="java-resource" /> + <sourceFolder url="file://$MODULE_DIR$/src/debug/assets" type="java-resource" /> + <sourceFolder url="file://$MODULE_DIR$/src/debug/aidl" isTestSource="false" /> + <sourceFolder url="file://$MODULE_DIR$/src/debug/java" isTestSource="false" /> + <sourceFolder url="file://$MODULE_DIR$/src/debug/rs" isTestSource="false" /> + <sourceFolder url="file://$MODULE_DIR$/src/debug/shaders" isTestSource="false" /> + <sourceFolder url="file://$MODULE_DIR$/src/testDebug/res" type="java-test-resource" /> + <sourceFolder url="file://$MODULE_DIR$/src/testDebug/resources" type="java-test-resource" /> + <sourceFolder url="file://$MODULE_DIR$/src/testDebug/assets" type="java-test-resource" /> + <sourceFolder url="file://$MODULE_DIR$/src/testDebug/aidl" isTestSource="true" /> + <sourceFolder url="file://$MODULE_DIR$/src/testDebug/java" isTestSource="true" /> + <sourceFolder url="file://$MODULE_DIR$/src/testDebug/rs" isTestSource="true" /> + <sourceFolder url="file://$MODULE_DIR$/src/testDebug/shaders" isTestSource="true" /> + <sourceFolder url="file://$MODULE_DIR$/src/main/res" type="java-resource" /> + <sourceFolder url="file://$MODULE_DIR$/src/main/resources" type="java-resource" /> + <sourceFolder url="file://$MODULE_DIR$/src/main/assets" type="java-resource" /> + <sourceFolder url="file://$MODULE_DIR$/src/main/aidl" isTestSource="false" /> + <sourceFolder url="file://$MODULE_DIR$/src/main/java" isTestSource="false" /> + <sourceFolder url="file://$MODULE_DIR$/src/main/rs" isTestSource="false" /> + <sourceFolder url="file://$MODULE_DIR$/src/main/shaders" isTestSource="false" /> + <sourceFolder url="file://$MODULE_DIR$/src/androidTest/res" type="java-test-resource" /> + <sourceFolder url="file://$MODULE_DIR$/src/androidTest/resources" type="java-test-resource" /> + <sourceFolder url="file://$MODULE_DIR$/src/androidTest/assets" type="java-test-resource" /> + <sourceFolder url="file://$MODULE_DIR$/src/androidTest/aidl" isTestSource="true" /> + <sourceFolder url="file://$MODULE_DIR$/src/androidTest/java" isTestSource="true" /> + <sourceFolder url="file://$MODULE_DIR$/src/androidTest/rs" isTestSource="true" /> + <sourceFolder url="file://$MODULE_DIR$/src/androidTest/shaders" isTestSource="true" /> + <sourceFolder url="file://$MODULE_DIR$/src/test/res" type="java-test-resource" /> + <sourceFolder url="file://$MODULE_DIR$/src/test/resources" type="java-test-resource" /> + <sourceFolder url="file://$MODULE_DIR$/src/test/assets" type="java-test-resource" /> + <sourceFolder url="file://$MODULE_DIR$/src/test/aidl" isTestSource="true" /> + <sourceFolder url="file://$MODULE_DIR$/src/test/java" isTestSource="true" /> + <sourceFolder url="file://$MODULE_DIR$/src/test/rs" isTestSource="true" /> + <sourceFolder url="file://$MODULE_DIR$/src/test/shaders" isTestSource="true" /> + <excludeFolder url="file://$MODULE_DIR$/build/generated/not_namespaced_r_class_sources" /> + <excludeFolder url="file://$MODULE_DIR$/build/generated/source/r" /> + <excludeFolder url="file://$MODULE_DIR$/build/intermediates/aapt_friendly_merged_manifests" /> + <excludeFolder url="file://$MODULE_DIR$/build/intermediates/annotation_processor_list" /> + <excludeFolder url="file://$MODULE_DIR$/build/intermediates/annotations" /> + <excludeFolder url="file://$MODULE_DIR$/build/intermediates/blame" /> + <excludeFolder url="file://$MODULE_DIR$/build/intermediates/bundles" /> + <excludeFolder url="file://$MODULE_DIR$/build/intermediates/check-manifest" /> + <excludeFolder url="file://$MODULE_DIR$/build/intermediates/classes" /> + <excludeFolder url="file://$MODULE_DIR$/build/intermediates/incremental" /> + <excludeFolder url="file://$MODULE_DIR$/build/intermediates/incremental-safeguard" /> + <excludeFolder url="file://$MODULE_DIR$/build/intermediates/intermediate-jars" /> + <excludeFolder url="file://$MODULE_DIR$/build/intermediates/javac" /> + <excludeFolder url="file://$MODULE_DIR$/build/intermediates/jniLibs" /> + <excludeFolder url="file://$MODULE_DIR$/build/intermediates/lint" /> + <excludeFolder url="file://$MODULE_DIR$/build/intermediates/lint_jar" /> + <excludeFolder url="file://$MODULE_DIR$/build/intermediates/manifests" /> + <excludeFolder url="file://$MODULE_DIR$/build/intermediates/merged_manifests" /> + <excludeFolder url="file://$MODULE_DIR$/build/intermediates/packaged_res" /> + <excludeFolder url="file://$MODULE_DIR$/build/intermediates/public_res" /> + <excludeFolder url="file://$MODULE_DIR$/build/intermediates/res" /> + <excludeFolder url="file://$MODULE_DIR$/build/intermediates/rs" /> + <excludeFolder url="file://$MODULE_DIR$/build/intermediates/shaders" /> + <excludeFolder url="file://$MODULE_DIR$/build/intermediates/symbols" /> + <excludeFolder url="file://$MODULE_DIR$/build/intermediates/transforms" /> + <excludeFolder url="file://$MODULE_DIR$/build/outputs" /> + <excludeFolder url="file://$MODULE_DIR$/build/tmp" /> + </content> + <orderEntry type="jdk" jdkName="Android API 25 Platform" jdkType="Android SDK" /> + <orderEntry type="sourceFolder" forTests="false" /> + <orderEntry type="library" exported="" name="Gradle: com.android.support:support-core-ui:25.3.0@aar" level="project" /> + <orderEntry type="library" exported="" name="Gradle: com.android.support:animated-vector-drawable:25.3.0@aar" level="project" /> + <orderEntry type="library" exported="" name="Gradle: com.android.support:support-fragment:25.3.0@aar" level="project" /> + <orderEntry type="library" exported="" name="Gradle: com.android.support:support-annotations:25.3.0@jar" level="project" /> + <orderEntry type="library" exported="" name="Gradle: com.android.support:support-media-compat:25.3.0@aar" level="project" /> + <orderEntry type="library" exported="" name="Gradle: com.android.support:appcompat-v7:25.3.0@aar" level="project" /> + <orderEntry type="library" exported="" name="Gradle: com.android.support:support-core-utils:25.3.0@aar" level="project" /> + <orderEntry type="library" exported="" name="Gradle: com.android.support:support-vector-drawable:25.3.0@aar" level="project" /> + <orderEntry type="library" exported="" name="Gradle: com.android.support:support-v4:25.3.0@aar" level="project" /> + <orderEntry type="library" exported="" name="Gradle: com.android.support:support-compat:25.3.0@aar" level="project" /> + </component> +</module> \ No newline at end of file diff --git a/patternlockview/src/main/java/com/andrognito/patternlockview/PatternLockView.java b/patternlockview/src/main/java/com/andrognito/patternlockview/PatternLockView.java index 1624fd0..47a1183 100755 --- a/patternlockview/src/main/java/com/andrognito/patternlockview/PatternLockView.java +++ b/patternlockview/src/main/java/com/andrognito/patternlockview/PatternLockView.java @@ -5,10 +5,12 @@ import android.animation.ValueAnimator; import android.content.Context; import android.content.res.TypedArray; +import android.graphics.Bitmap; import android.graphics.Canvas; import android.graphics.Paint; import android.graphics.Path; import android.graphics.Rect; +import android.graphics.drawable.Drawable; import android.os.Build; import android.os.Debug; import android.os.Parcel; @@ -17,6 +19,7 @@ import android.support.annotation.ColorInt; import android.support.annotation.Dimension; import android.support.annotation.IntDef; +import android.support.v4.graphics.drawable.DrawableCompat; import android.util.AttributeSet; import android.view.HapticFeedbackConstants; import android.view.MotionEvent; @@ -124,9 +127,10 @@ public class PatternLockView extends View { private int mDotSelectedSize; private int mDotAnimationDuration; private int mPathEndAnimationDuration; - private Paint mDotPaint; private Paint mPathPaint; + private Bitmap mBitmap; + private Drawable mDotDrawable; private List<PatternLockViewListener> mPatternListeners; // The pattern represented as a list of connected {@link Dot} @@ -191,6 +195,7 @@ public PatternLockView(Context context, AttributeSet attrs) { DEFAULT_DOT_ANIMATION_DURATION); mPathEndAnimationDuration = typedArray.getInt(R.styleable.PatternLockView_pathEndAnimationDuration, DEFAULT_PATH_END_ANIMATION_DURATION); + mDotDrawable = typedArray.getDrawable(R.styleable.PatternLockView_dotDrawable); } finally { typedArray.recycle(); } @@ -236,6 +241,9 @@ private void initView() { mLinearOutSlowInInterpolator = AnimationUtils.loadInterpolator( getContext(), android.R.interpolator.linear_out_slow_in); } + if (mDotDrawable != null) { + mBitmap = getBitmapFromVectorDrawable(getContext(), mDotDrawable); + } } @Override @@ -313,7 +321,7 @@ protected void onDraw(Canvas canvas) { Path currentPath = mCurrentPath; currentPath.rewind(); - +//TODO : can be using drawable. // Draw the dots for (int i = 0; i < sDotCount; i++) { float centerY = getCenterYForRow(i); @@ -322,8 +330,14 @@ protected void onDraw(Canvas canvas) { float centerX = getCenterXForColumn(j); float size = dotState.mSize * dotState.mScale; float translationY = dotState.mTranslateY; - drawCircle(canvas, (int) centerX, (int) centerY + translationY, - size, drawLookupTable[i][j], dotState.mAlpha); + if (mDotDrawable != null) { + drawDrawable(canvas, (int) centerX, (int) centerY + translationY, + size, drawLookupTable[i][j], dotState.mAlpha); + } else { + + drawCircle(canvas, (int) centerX, (int) centerY + translationY, + size, drawLookupTable[i][j], dotState.mAlpha); + } } } @@ -1142,6 +1156,27 @@ private void drawCircle(Canvas canvas, float centerX, float centerY, canvas.drawCircle(centerX, centerY, size / 2, mDotPaint); } + private void drawDrawable(Canvas canvas, float centerX, float centerY, float size, boolean partOfPattern, float alpha) { + mDotPaint.setColor(getCurrentColor(partOfPattern)); + mDotPaint.setAlpha((int) (alpha * 255)); + + canvas.drawBitmap(mBitmap, centerX - (mBitmap.getWidth() / 2), centerY - (mBitmap.getHeight() / 2), mDotPaint); + } + + public Bitmap getBitmapFromVectorDrawable(Context context, Drawable drawable) { + if (Build.VERSION.SDK_INT < Build.VERSION_CODES.LOLLIPOP) { + drawable = (DrawableCompat.wrap(drawable)).mutate(); + } + + Bitmap bitmap = Bitmap.createBitmap(drawable.getIntrinsicWidth(), + drawable.getIntrinsicHeight(), Bitmap.Config.ARGB_8888); + Canvas canvas = new Canvas(bitmap); + drawable.setBounds(0, 0, canvas.getWidth(), canvas.getHeight()); + drawable.draw(canvas); + Bitmap scaledBitmap = Bitmap.createScaledBitmap(bitmap, 60, 60, false); + return scaledBitmap; + } + /** * Represents a cell in the matrix of the pattern view */ diff --git a/patternlockview/src/main/res/drawable/ic_keys_hole.xml b/patternlockview/src/main/res/drawable/ic_keys_hole.xml new file mode 100644 index 0000000..c1c1feb --- /dev/null +++ b/patternlockview/src/main/res/drawable/ic_keys_hole.xml @@ -0,0 +1,9 @@ +<vector xmlns:android="http://schemas.android.com/apk/res/android" + android:width="36dp" + android:height="36dp" + android:viewportWidth="47" + android:viewportHeight="47"> + <path + android:fillColor="#FF000000" + android:pathData="M23.5,0C10.522,0 0,10.522 0,23.5C0,36.479 10.522,47 23.5,47C36.479,47 47,36.479 47,23.5C47,10.522 36.479,0 23.5,0zM30.07,34.686L30.07,34.686c0,2.53 -2.941,4.58 -6.573,4.58c-3.631,0 -6.577,-2.05 -6.577,-4.58c0,-0.494 3.648,-14.979 3.648,-14.979c-2.024,-1.06 -3.418,-3.161 -3.418,-5.609c0,-3.515 2.838,-6.362 6.361,-6.362c3.514,0 6.35,2.848 6.35,6.362c0,2.448 -1.391,4.55 -3.416,5.609c0,0 3.598,14.455 3.611,14.88l0.022,0.099H30.07z" /> +</vector> diff --git a/patternlockview/src/main/res/values/attrs.xml b/patternlockview/src/main/res/values/attrs.xml index c4d8d7d..6172263 100644 --- a/patternlockview/src/main/res/values/attrs.xml +++ b/patternlockview/src/main/res/values/attrs.xml @@ -16,5 +16,6 @@ <attr name="wrongStateColor" format="color"/> <attr name="dotAnimationDuration" format="integer"/> <attr name="pathEndAnimationDuration" format="integer"/> + <attr name="dotDrawable" format="reference" /> </declare-styleable> </resources> \ No newline at end of file From 502b6d091b4e93f5adf0723c5f0cf54ede5e8382 Mon Sep 17 00:00:00 2001 From: "Ozan.Turcan" <ozan.turcan@veripark.com> Date: Thu, 25 Apr 2019 17:00:31 +0300 Subject: [PATCH 2/3] added Drawable for Dots with animation --- .idea/assetWizardSettings.xml | 4 ++-- app/src/main/res/layout/activity_main.xml | 7 +++++- .../patternlockview/PatternLockView.java | 22 ++++++++++--------- .../res/drawable/ic_favorite_heart_button.xml | 4 ++++ .../src/main/res/drawable/ic_keys_hole.xml | 4 ++-- .../src/main/res/drawable/ic_star.xml | 4 ++++ 6 files changed, 30 insertions(+), 15 deletions(-) create mode 100644 patternlockview/src/main/res/drawable/ic_favorite_heart_button.xml create mode 100644 patternlockview/src/main/res/drawable/ic_star.xml diff --git a/.idea/assetWizardSettings.xml b/.idea/assetWizardSettings.xml index 801d4a4..2ee81c3 100644 --- a/.idea/assetWizardSettings.xml +++ b/.idea/assetWizardSettings.xml @@ -19,8 +19,8 @@ <option name="values"> <map> <entry key="assetSourceType" value="FILE" /> - <entry key="outputName" value="ic_keys_hole" /> - <entry key="sourceFile" value="$USER_HOME$/Desktop/keys-hole.svg" /> + <entry key="outputName" value="ic_star" /> + <entry key="sourceFile" value="$USER_HOME$/Desktop/star.svg" /> </map> </option> </PersistentState> diff --git a/app/src/main/res/layout/activity_main.xml b/app/src/main/res/layout/activity_main.xml index c9175c6..ceca6ee 100644 --- a/app/src/main/res/layout/activity_main.xml +++ b/app/src/main/res/layout/activity_main.xml @@ -35,8 +35,13 @@ android:layout_gravity="center_horizontal" android:layout_marginTop="16dp" app:aspectRatio="square" + android:drawingCacheQuality="high" + app:dotNormalSize="40dp" + app:dotSelectedSize="50dp" + app:normalStateColor="#2196F3" + app:wrongStateColor="#C73047" + app:correctStateColor="#34A242" app:aspectRatioEnabled="true" - app:dotDrawable="@drawable/logo" app:dotAnimationDuration="150" app:dotCount="3"/> diff --git a/patternlockview/src/main/java/com/andrognito/patternlockview/PatternLockView.java b/patternlockview/src/main/java/com/andrognito/patternlockview/PatternLockView.java index 47a1183..77560ff 100755 --- a/patternlockview/src/main/java/com/andrognito/patternlockview/PatternLockView.java +++ b/patternlockview/src/main/java/com/andrognito/patternlockview/PatternLockView.java @@ -242,7 +242,7 @@ private void initView() { getContext(), android.R.interpolator.linear_out_slow_in); } if (mDotDrawable != null) { - mBitmap = getBitmapFromVectorDrawable(getContext(), mDotDrawable); + mBitmap = getBitmapFromVectorDrawable(mDotDrawable); } } @@ -321,7 +321,6 @@ protected void onDraw(Canvas canvas) { Path currentPath = mCurrentPath; currentPath.rewind(); -//TODO : can be using drawable. // Draw the dots for (int i = 0; i < sDotCount; i++) { float centerY = getCenterYForRow(i); @@ -330,7 +329,7 @@ protected void onDraw(Canvas canvas) { float centerX = getCenterXForColumn(j); float size = dotState.mSize * dotState.mScale; float translationY = dotState.mTranslateY; - if (mDotDrawable != null) { + if (mBitmap != null) { drawDrawable(canvas, (int) centerX, (int) centerY + translationY, size, drawLookupTable[i][j], dotState.mAlpha); } else { @@ -1160,21 +1159,24 @@ private void drawDrawable(Canvas canvas, float centerX, float centerY, float siz mDotPaint.setColor(getCurrentColor(partOfPattern)); mDotPaint.setAlpha((int) (alpha * 255)); - canvas.drawBitmap(mBitmap, centerX - (mBitmap.getWidth() / 2), centerY - (mBitmap.getHeight() / 2), mDotPaint); + Bitmap scaledBitmap = Bitmap.createScaledBitmap(mBitmap, (int) size, (int) size, false); + + canvas.drawBitmap(scaledBitmap, centerX - (scaledBitmap.getWidth() / 2f), centerY - (scaledBitmap.getHeight() / 2f), mDotPaint); } - public Bitmap getBitmapFromVectorDrawable(Context context, Drawable drawable) { + /** + * using for + */ + public Bitmap getBitmapFromVectorDrawable(Drawable drawable) { if (Build.VERSION.SDK_INT < Build.VERSION_CODES.LOLLIPOP) { drawable = (DrawableCompat.wrap(drawable)).mutate(); } - Bitmap bitmap = Bitmap.createBitmap(drawable.getIntrinsicWidth(), - drawable.getIntrinsicHeight(), Bitmap.Config.ARGB_8888); + Bitmap bitmap = Bitmap.createBitmap(drawable.getIntrinsicWidth(), drawable.getIntrinsicHeight(), Bitmap.Config.ARGB_8888); Canvas canvas = new Canvas(bitmap); - drawable.setBounds(0, 0, canvas.getWidth(), canvas.getHeight()); + drawable.setBounds(0, 0, drawable.getIntrinsicWidth(), drawable.getIntrinsicHeight()); drawable.draw(canvas); - Bitmap scaledBitmap = Bitmap.createScaledBitmap(bitmap, 60, 60, false); - return scaledBitmap; + return bitmap; } /** diff --git a/patternlockview/src/main/res/drawable/ic_favorite_heart_button.xml b/patternlockview/src/main/res/drawable/ic_favorite_heart_button.xml new file mode 100644 index 0000000..71d682f --- /dev/null +++ b/patternlockview/src/main/res/drawable/ic_favorite_heart_button.xml @@ -0,0 +1,4 @@ +<vector android:height="24dp" android:viewportHeight="510" + android:viewportWidth="510" android:width="24dp" xmlns:android="http://schemas.android.com/apk/res/android"> + <path android:fillColor="#FF000000" android:pathData="M255,489.6l-35.7,-35.7C86.7,336.6 0,257.55 0,160.65C0,81.6 61.2,20.4 140.25,20.4c43.35,0 86.7,20.4 114.75,53.55C283.05,40.8 326.4,20.4 369.75,20.4C448.8,20.4 510,81.6 510,160.65c0,96.9 -86.7,175.95 -219.3,293.25L255,489.6z"/> +</vector> diff --git a/patternlockview/src/main/res/drawable/ic_keys_hole.xml b/patternlockview/src/main/res/drawable/ic_keys_hole.xml index c1c1feb..9e5476a 100644 --- a/patternlockview/src/main/res/drawable/ic_keys_hole.xml +++ b/patternlockview/src/main/res/drawable/ic_keys_hole.xml @@ -1,6 +1,6 @@ <vector xmlns:android="http://schemas.android.com/apk/res/android" - android:width="36dp" - android:height="36dp" + android:width="128dp" + android:height="128dp" android:viewportWidth="47" android:viewportHeight="47"> <path diff --git a/patternlockview/src/main/res/drawable/ic_star.xml b/patternlockview/src/main/res/drawable/ic_star.xml new file mode 100644 index 0000000..77564bd --- /dev/null +++ b/patternlockview/src/main/res/drawable/ic_star.xml @@ -0,0 +1,4 @@ +<vector android:height="24dp" android:viewportHeight="49.94" + android:viewportWidth="49.94" android:width="24dp" xmlns:android="http://schemas.android.com/apk/res/android"> + <path android:fillColor="#FF000000" android:pathData="M48.856,22.73c0.983,-0.958 1.33,-2.364 0.906,-3.671c-0.425,-1.307 -1.532,-2.24 -2.892,-2.438l-12.092,-1.757c-0.515,-0.075 -0.96,-0.398 -1.19,-0.865L28.182,3.043c-0.607,-1.231 -1.839,-1.996 -3.212,-1.996c-1.372,0 -2.604,0.765 -3.211,1.996L16.352,14c-0.23,0.467 -0.676,0.79 -1.191,0.865L3.069,16.622c-1.359,0.197 -2.467,1.131 -2.892,2.438c-0.424,1.307 -0.077,2.713 0.906,3.671l8.749,8.528c0.373,0.364 0.544,0.888 0.456,1.4L8.224,44.701c-0.183,1.06 0.095,2.091 0.781,2.904c1.066,1.267 2.927,1.653 4.415,0.871l10.814,-5.686c0.452,-0.237 1.021,-0.235 1.472,0l10.815,5.686c0.526,0.277 1.087,0.417 1.666,0.417c1.057,0 2.059,-0.47 2.748,-1.288c0.687,-0.813 0.964,-1.846 0.781,-2.904l-2.065,-12.042c-0.088,-0.513 0.083,-1.036 0.456,-1.4L48.856,22.73z"/> +</vector> From d9cdb0eca43005e1669f2489e74c61b4bad491df Mon Sep 17 00:00:00 2001 From: "Ozan.Turcan" <ozan.turcan@veripark.com> Date: Mon, 6 May 2019 09:48:17 +0300 Subject: [PATCH 3/3] bring front to Dots --- .../patternlockview/PatternLockView.java | 84 ++++++++++++------- 1 file changed, 56 insertions(+), 28 deletions(-) diff --git a/patternlockview/src/main/java/com/andrognito/patternlockview/PatternLockView.java b/patternlockview/src/main/java/com/andrognito/patternlockview/PatternLockView.java index 77560ff..025f113 100755 --- a/patternlockview/src/main/java/com/andrognito/patternlockview/PatternLockView.java +++ b/patternlockview/src/main/java/com/andrognito/patternlockview/PatternLockView.java @@ -196,6 +196,9 @@ public PatternLockView(Context context, AttributeSet attrs) { mPathEndAnimationDuration = typedArray.getInt(R.styleable.PatternLockView_pathEndAnimationDuration, DEFAULT_PATH_END_ANIMATION_DURATION); mDotDrawable = typedArray.getDrawable(R.styleable.PatternLockView_dotDrawable); + if (mDotDrawable != null) { + mBitmap = getBitmapFromVectorDrawable(mDotDrawable); + } } finally { typedArray.recycle(); } @@ -210,6 +213,11 @@ public PatternLockView(Context context, AttributeSet attrs) { for (int j = 0; j < sDotCount; j++) { mDotStates[i][j] = new DotState(); mDotStates[i][j].mSize = mDotNormalSize; + if (mBitmap != null) { + mDotStates[i][j].mDotView = new View(context); + Canvas canvas = new Canvas(mBitmap); + mDotStates[i][j].mDotView.draw(canvas); + } } } @@ -241,9 +249,7 @@ private void initView() { mLinearOutSlowInInterpolator = AnimationUtils.loadInterpolator( getContext(), android.R.interpolator.linear_out_slow_in); } - if (mDotDrawable != null) { - mBitmap = getBitmapFromVectorDrawable(mDotDrawable); - } + } @Override @@ -321,24 +327,7 @@ protected void onDraw(Canvas canvas) { Path currentPath = mCurrentPath; currentPath.rewind(); - // Draw the dots - for (int i = 0; i < sDotCount; i++) { - float centerY = getCenterYForRow(i); - for (int j = 0; j < sDotCount; j++) { - DotState dotState = mDotStates[i][j]; - float centerX = getCenterXForColumn(j); - float size = dotState.mSize * dotState.mScale; - float translationY = dotState.mTranslateY; - if (mBitmap != null) { - drawDrawable(canvas, (int) centerX, (int) centerY + translationY, - size, drawLookupTable[i][j], dotState.mAlpha); - } else { - drawCircle(canvas, (int) centerX, (int) centerY + translationY, - size, drawLookupTable[i][j], dotState.mAlpha); - } - } - } // Draw the path of the pattern (unless we are in stealth mode) boolean drawPath = !mInStealthMode; @@ -376,7 +365,24 @@ protected void onDraw(Canvas canvas) { lastX = centerX; lastY = centerY; } + // Draw the dots + for (int i = 0; i < sDotCount; i++) { + float centerY = getCenterYForRow(i); + for (int j = 0; j < sDotCount; j++) { + DotState dotState = mDotStates[i][j]; + float centerX = getCenterXForColumn(j); + float size = dotState.mSize * dotState.mScale; + float translationY = dotState.mTranslateY; + if (mBitmap != null) { + drawDrawable(canvas, (int) centerX, (int) centerY + translationY, + size, drawLookupTable[i][j], dotState.mAlpha); + } else { + drawCircle(canvas, (int) centerX, (int) centerY + translationY, + size, drawLookupTable[i][j], dotState.mAlpha); + } + } + } // Draw last in progress section if ((mPatternInProgress || mPatternViewMode == AUTO_DRAW) && anyCircles) { @@ -888,15 +894,39 @@ private void startSizeAnimation(float start, float end, long duration, Interpolator interpolator, final DotState state, final Runnable endRunnable) { ValueAnimator valueAnimator = ValueAnimator.ofFloat(start, end); - valueAnimator.addUpdateListener(new ValueAnimator.AnimatorUpdateListener() { + if (mBitmap != null) { + valueAnimator.addUpdateListener(new ValueAnimator.AnimatorUpdateListener() { - @Override - public void onAnimationUpdate(ValueAnimator animation) { - state.mSize = (Float) animation.getAnimatedValue(); - invalidate(); + @Override + public void onAnimationUpdate(ValueAnimator animation) { + state.mSize = (Float) animation.getAnimatedValue(); + invalidate(); + } + + }); + if (endRunnable != null) { + valueAnimator.addListener(new AnimatorListenerAdapter() { + + @Override + public void onAnimationEnd(Animator animation) { + if (endRunnable != null) { + endRunnable.run(); + } + } + }); } + } else { - }); + valueAnimator.addUpdateListener(new ValueAnimator.AnimatorUpdateListener() { + + @Override + public void onAnimationUpdate(ValueAnimator animation) { + state.mSize = (Float) animation.getAnimatedValue(); + invalidate(); + } + + }); + } if (endRunnable != null) { valueAnimator.addListener(new AnimatorListenerAdapter() { @@ -1158,9 +1188,7 @@ private void drawCircle(Canvas canvas, float centerX, float centerY, private void drawDrawable(Canvas canvas, float centerX, float centerY, float size, boolean partOfPattern, float alpha) { mDotPaint.setColor(getCurrentColor(partOfPattern)); mDotPaint.setAlpha((int) (alpha * 255)); - Bitmap scaledBitmap = Bitmap.createScaledBitmap(mBitmap, (int) size, (int) size, false); - canvas.drawBitmap(scaledBitmap, centerX - (scaledBitmap.getWidth() / 2f), centerY - (scaledBitmap.getHeight() / 2f), mDotPaint); }