Permalink
Please sign in to comment.
Showing
with
816 additions
and 0 deletions.
- +23 −0 build.gradle
- +1 −0 ei/.gitignore
- +38 −0 ei/build.gradle
- +17 −0 ei/proguard-rules.pro
- +13 −0 ei/src/androidTest/java/com/daasuu/ei/ApplicationTest.java
- +11 −0 ei/src/main/AndroidManifest.xml
- +36 −0 ei/src/main/java/com/daasuu/ei/Ease.java
- +22 −0 ei/src/main/java/com/daasuu/ei/EasingInterpolator.java
- +200 −0 ei/src/main/java/com/daasuu/ei/EasingProvider.java
- +3 −0 ei/src/main/res/values/strings.xml
- +15 −0 ei/src/test/java/com/daasuu/ei/ExampleUnitTest.java
- +11 −0 gradle.properties
- BIN gradle/wrapper/gradle-wrapper.jar
- +6 −0 gradle/wrapper/gradle-wrapper.properties
- +160 −0 gradlew
- +90 −0 gradlew.bat
- +1 −0 sample/.gitignore
- +27 −0 sample/build.gradle
- +17 −0 sample/proguard-rules.pro
- +13 −0 sample/src/androidTest/java/com/daasuu/easinginterpolator/ApplicationTest.java
- +20 −0 sample/src/main/AndroidManifest.xml
- +28 −0 sample/src/main/java/com/daasuu/easinginterpolator/MainActivity.java
- +17 −0 sample/src/main/res/layout/activity_main.xml
- BIN sample/src/main/res/mipmap-hdpi/ic_launcher.png
- BIN sample/src/main/res/mipmap-mdpi/ic_launcher.png
- BIN sample/src/main/res/mipmap-xhdpi/ic_launcher.png
- BIN sample/src/main/res/mipmap-xxhdpi/ic_launcher.png
- BIN sample/src/main/res/mipmap-xxxhdpi/ic_launcher.png
- +6 −0 sample/src/main/res/values-w820dp/dimens.xml
- +6 −0 sample/src/main/res/values/colors.xml
- +5 −0 sample/src/main/res/values/dimens.xml
- +3 −0 sample/src/main/res/values/strings.xml
- +11 −0 sample/src/main/res/values/styles.xml
- +15 −0 sample/src/test/java/com/daasuu/easinginterpolator/ExampleUnitTest.java
- +1 −0 settings.gradle
23
build.gradle
@@ -0,0 +1,23 @@ | ||
+// Top-level build file where you can add configuration options common to all sub-projects/modules. | ||
+ | ||
+buildscript { | ||
+ repositories { | ||
+ jcenter() | ||
+ } | ||
+ dependencies { | ||
+ classpath 'com.android.tools.build:gradle:1.5.0' | ||
+ classpath 'com.novoda:bintray-release:0.3.4' | ||
+ // NOTE: Do not place your application dependencies here; they belong | ||
+ // in the individual module build.gradle files | ||
+ } | ||
+} | ||
+ | ||
+allprojects { | ||
+ repositories { | ||
+ jcenter() | ||
+ } | ||
+} | ||
+ | ||
+task clean(type: Delete) { | ||
+ delete rootProject.buildDir | ||
+} |
1
ei/.gitignore
@@ -0,0 +1 @@ | ||
+/build |
38
ei/build.gradle
@@ -0,0 +1,38 @@ | ||
+apply plugin: 'com.android.library' | ||
+apply plugin: 'com.novoda.bintray-release' | ||
+ | ||
+android { | ||
+ compileSdkVersion COMPILE_SDK_VERSION as int | ||
+ buildToolsVersion BUILD_TOOLS_VERSION | ||
+ | ||
+ defaultConfig { | ||
+ minSdkVersion COMPILE_MIN_SDK_VERSION as int | ||
+ targetSdkVersion COMPILE_SDK_VERSION as int | ||
+ versionCode VERSION_CODE as int | ||
+ versionName VERSION_NAME | ||
+ } | ||
+ buildTypes { | ||
+ release { | ||
+ minifyEnabled false | ||
+ proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro' | ||
+ } | ||
+ } | ||
+ lintOptions { | ||
+ abortOnError false | ||
+ } | ||
+} | ||
+ | ||
+dependencies { | ||
+ compile fileTree(dir: 'libs', include: ['*.jar']) | ||
+ testCompile 'junit:junit:4.12' | ||
+ compile 'com.android.support:appcompat-v7:23.2.1' | ||
+} | ||
+ | ||
+publish { | ||
+ userOrg = USER_ID | ||
+ groupId = GROUP | ||
+ artifactId = ARTIFACT_NAME | ||
+ publishVersion = VERSION_NAME | ||
+ desc = ARTIFACT_DESCRIPTION | ||
+ website = SITE_URL | ||
+} |
17
ei/proguard-rules.pro
@@ -0,0 +1,17 @@ | ||
+# Add project specific ProGuard rules here. | ||
+# By default, the flags in this file are appended to flags specified | ||
+# in /Users/sudamasayuki/Documents/workspace/adt-bundle-mac-x86_64-20140321/sdk/tools/proguard/proguard-android.txt | ||
+# You can edit the include path and order by changing the proguardFiles | ||
+# directive in build.gradle. | ||
+# | ||
+# For more details, see | ||
+# http://developer.android.com/guide/developing/tools/proguard.html | ||
+ | ||
+# Add any project specific keep options here: | ||
+ | ||
+# If your project uses WebView with JS, uncomment the following | ||
+# and specify the fully qualified class name to the JavaScript interface | ||
+# class: | ||
+#-keepclassmembers class fqcn.of.javascript.interface.for.webview { | ||
+# public *; | ||
+#} |
13
ei/src/androidTest/java/com/daasuu/ei/ApplicationTest.java
@@ -0,0 +1,13 @@ | ||
+package com.daasuu.ei; | ||
+ | ||
+import android.app.Application; | ||
+import android.test.ApplicationTestCase; | ||
+ | ||
+/** | ||
+ * <a href="http://d.android.com/tools/testing/testing_android.html">Testing Fundamentals</a> | ||
+ */ | ||
+public class ApplicationTest extends ApplicationTestCase<Application> { | ||
+ public ApplicationTest() { | ||
+ super(Application.class); | ||
+ } | ||
+} |
11
ei/src/main/AndroidManifest.xml
@@ -0,0 +1,11 @@ | ||
+<manifest xmlns:android="http://schemas.android.com/apk/res/android" | ||
+ package="com.daasuu.ei"> | ||
+ | ||
+ <application | ||
+ android:allowBackup="true" | ||
+ android:label="@string/app_name" | ||
+ android:supportsRtl="true"> | ||
+ | ||
+ </application> | ||
+ | ||
+</manifest> |
36
ei/src/main/java/com/daasuu/ei/Ease.java
@@ -0,0 +1,36 @@ | ||
+package com.daasuu.ei; | ||
+ | ||
+/** | ||
+ * The Easing class provides a collection of ease functions. It does not use the standard 4 param | ||
+ * ease signature. Instead it uses a single param which indicates the current linear ratio (0 to 1) of the tween. | ||
+ */ | ||
+public enum Ease { | ||
+ LINEAR, | ||
+ QUAD_IN, | ||
+ QUAD_OUT, | ||
+ QUAD_IN_OUT, | ||
+ CUBIC_IN, | ||
+ CUBIC_OUT, | ||
+ CUBIC_IN_OUT, | ||
+ QUART_IN, | ||
+ QUART_OUT, | ||
+ QUART_IN_OUT, | ||
+ QUINT_IN, | ||
+ QUINT_OUT, | ||
+ QUINT_IN_OUT, | ||
+ SINE_IN, | ||
+ SINE_OUT, | ||
+ SINE_IN_OUT, | ||
+ BACK_IN, | ||
+ BACK_OUT, | ||
+ BACK_IN_OUT, | ||
+ CIRC_IN, | ||
+ CIRC_OUT, | ||
+ CIRC_IN_OUT, | ||
+ BOUNCE_IN, | ||
+ BOUNCE_OUT, | ||
+ BOUNCE_IN_OUT, | ||
+ ELASTIC_IN, | ||
+ ELASTIC_OUT, | ||
+ ELASTIC_IN_OUT | ||
+} |
22
ei/src/main/java/com/daasuu/ei/EasingInterpolator.java
@@ -0,0 +1,22 @@ | ||
+package com.daasuu.ei; | ||
+ | ||
+import android.animation.TimeInterpolator; | ||
+import android.support.annotation.NonNull; | ||
+ | ||
+/** | ||
+ * The Easing class provides a collection of ease functions. It does not use the standard 4 param | ||
+ * ease signature. Instead it uses a single param which indicates the current linear ratio (0 to 1) of the tween. | ||
+ */ | ||
+public class EasingInterpolator implements TimeInterpolator { | ||
+ | ||
+ private final Ease ease; | ||
+ | ||
+ public EasingInterpolator(@NonNull Ease ease) { | ||
+ this.ease = ease; | ||
+ } | ||
+ | ||
+ @Override | ||
+ public float getInterpolation(float input) { | ||
+ return EasingProvider.get(this.ease, input); | ||
+ } | ||
+} |
200
ei/src/main/java/com/daasuu/ei/EasingProvider.java
@@ -0,0 +1,200 @@ | ||
+package com.daasuu.ei; | ||
+ | ||
+import android.support.annotation.NonNull; | ||
+ | ||
+/** | ||
+ * The Easing class provides a collection of ease functions. It does not use the standard 4 param | ||
+ * ease signature. Instead it uses a single param which indicates the current linear ratio (0 to 1) of the tween. | ||
+ */ | ||
+class EasingProvider { | ||
+ /** | ||
+ * @param ease Easing type | ||
+ * @param elapsedTimeRate Elapsed time / Total time | ||
+ * @return easedValue | ||
+ */ | ||
+ public static float get(@NonNull Ease ease, float elapsedTimeRate) { | ||
+ switch (ease) { | ||
+ case LINEAR: | ||
+ return 1f; | ||
+ case QUAD_IN: | ||
+ return getPowIn(elapsedTimeRate, 2); | ||
+ case QUAD_OUT: | ||
+ return getPowOut(elapsedTimeRate, 2); | ||
+ case QUAD_IN_OUT: | ||
+ return getPowInOut(elapsedTimeRate, 2); | ||
+ case CUBIC_IN: | ||
+ return getPowIn(elapsedTimeRate, 3); | ||
+ case CUBIC_OUT: | ||
+ return getPowOut(elapsedTimeRate, 3); | ||
+ case CUBIC_IN_OUT: | ||
+ return getPowInOut(elapsedTimeRate, 3); | ||
+ case QUART_IN: | ||
+ return getPowIn(elapsedTimeRate, 4); | ||
+ case QUART_OUT: | ||
+ return getPowOut(elapsedTimeRate, 4); | ||
+ case QUART_IN_OUT: | ||
+ return getPowInOut(elapsedTimeRate, 4); | ||
+ case QUINT_IN: | ||
+ return getPowIn(elapsedTimeRate, 5); | ||
+ case QUINT_OUT: | ||
+ return getPowOut(elapsedTimeRate, 5); | ||
+ case QUINT_IN_OUT: | ||
+ return getPowInOut(elapsedTimeRate, 5); | ||
+ case SINE_IN: | ||
+ return (float) (1f - Math.cos(elapsedTimeRate * Math.PI / 2f)); | ||
+ case SINE_OUT: | ||
+ return (float) Math.sin(elapsedTimeRate * Math.PI / 2f); | ||
+ case SINE_IN_OUT: | ||
+ return (float) (-0.5f * (Math.cos(Math.PI * elapsedTimeRate) - 1f)); | ||
+ case BACK_IN: | ||
+ return (float) (elapsedTimeRate * elapsedTimeRate * ((1.7 + 1f) * elapsedTimeRate - 1.7)); | ||
+ case BACK_OUT: | ||
+ return (float) (--elapsedTimeRate * elapsedTimeRate * ((1.7 + 1f) * elapsedTimeRate + 1.7) + 1f); | ||
+ case BACK_IN_OUT: | ||
+ return getBackInOut(elapsedTimeRate, 1.7f); | ||
+ case CIRC_IN: | ||
+ return (float) -(Math.sqrt(1f - elapsedTimeRate * elapsedTimeRate) - 1); | ||
+ case CIRC_OUT: | ||
+ return (float) Math.sqrt(1f - (--elapsedTimeRate) * elapsedTimeRate); | ||
+ case CIRC_IN_OUT: | ||
+ if ((elapsedTimeRate *= 2f) < 1f) { | ||
+ return (float) (-0.5f * (Math.sqrt(1f - elapsedTimeRate * elapsedTimeRate) - 1f)); | ||
+ } | ||
+ return (float) (0.5f * (Math.sqrt(1f - (elapsedTimeRate -= 2f) * elapsedTimeRate) + 1f)); | ||
+ case BOUNCE_IN: | ||
+ return getBounceIn(elapsedTimeRate); | ||
+ case BOUNCE_OUT: | ||
+ return getBounceOut(elapsedTimeRate); | ||
+ case BOUNCE_IN_OUT: | ||
+ if (elapsedTimeRate < 0.5f) { | ||
+ return getBounceIn(elapsedTimeRate * 2f) * 0.5f; | ||
+ } | ||
+ return getBounceOut(elapsedTimeRate * 2f - 1f) * 0.5f + 0.5f; | ||
+ case ELASTIC_IN: | ||
+ return getElasticIn(elapsedTimeRate, 1, 0.3); | ||
+ | ||
+ case ELASTIC_OUT: | ||
+ return getElasticOut(elapsedTimeRate, 1, 0.3); | ||
+ | ||
+ case ELASTIC_IN_OUT: | ||
+ return getElasticInOut(elapsedTimeRate, 1, 0.45); | ||
+ | ||
+ default: | ||
+ return 1f; | ||
+ | ||
+ } | ||
+ | ||
+ } | ||
+ | ||
+ /** | ||
+ * @param elapsedTimeRate Elapsed time / Total time | ||
+ * @param pow pow The exponent to use (ex. 3 would return a cubic ease). | ||
+ * @return easedValue | ||
+ */ | ||
+ private static float getPowIn(float elapsedTimeRate, double pow) { | ||
+ return (float) Math.pow(elapsedTimeRate, pow); | ||
+ } | ||
+ | ||
+ /** | ||
+ * @param elapsedTimeRate Elapsed time / Total time | ||
+ * @param pow pow The exponent to use (ex. 3 would return a cubic ease). | ||
+ * @return easedValue | ||
+ */ | ||
+ private static float getPowOut(float elapsedTimeRate, double pow) { | ||
+ return (float) ((float) 1 - Math.pow(1 - elapsedTimeRate, pow)); | ||
+ } | ||
+ | ||
+ /** | ||
+ * @param elapsedTimeRate Elapsed time / Total time | ||
+ * @param pow pow The exponent to use (ex. 3 would return a cubic ease). | ||
+ * @return easedValue | ||
+ */ | ||
+ private static float getPowInOut(float elapsedTimeRate, double pow) { | ||
+ if ((elapsedTimeRate *= 2) < 1) { | ||
+ return (float) (0.5 * Math.pow(elapsedTimeRate, pow)); | ||
+ } | ||
+ | ||
+ return (float) (1 - 0.5 * Math.abs(Math.pow(2 - elapsedTimeRate, pow))); | ||
+ } | ||
+ | ||
+ /** | ||
+ * @param elapsedTimeRate Elapsed time / Total time | ||
+ * @param amount amount The strength of the ease. | ||
+ * @return easedValue | ||
+ */ | ||
+ private static float getBackInOut(float elapsedTimeRate, float amount) { | ||
+ amount *= 1.525; | ||
+ if ((elapsedTimeRate *= 2) < 1) { | ||
+ return (float) (0.5 * (elapsedTimeRate * elapsedTimeRate * ((amount + 1) * elapsedTimeRate - amount))); | ||
+ } | ||
+ return (float) (0.5 * ((elapsedTimeRate -= 2) * elapsedTimeRate * ((amount + 1) * elapsedTimeRate + amount) + 2)); | ||
+ } | ||
+ | ||
+ /** | ||
+ * @param elapsedTimeRate Elapsed time / Total time | ||
+ * @return easedValue | ||
+ */ | ||
+ private static float getBounceIn(float elapsedTimeRate) { | ||
+ return 1f - getBounceOut(1f - elapsedTimeRate); | ||
+ } | ||
+ | ||
+ /** | ||
+ * @param elapsedTimeRate Elapsed time / Total time | ||
+ * @return easedValue | ||
+ */ | ||
+ private static float getBounceOut(float elapsedTimeRate) { | ||
+ if (elapsedTimeRate < 1 / 2.75) { | ||
+ return (float) (7.5625 * elapsedTimeRate * elapsedTimeRate); | ||
+ } else if (elapsedTimeRate < 2 / 2.75) { | ||
+ return (float) (7.5625 * (elapsedTimeRate -= 1.5 / 2.75) * elapsedTimeRate + 0.75); | ||
+ } else if (elapsedTimeRate < 2.5 / 2.75) { | ||
+ return (float) (7.5625 * (elapsedTimeRate -= 2.25 / 2.75) * elapsedTimeRate + 0.9375); | ||
+ } else { | ||
+ return (float) (7.5625 * (elapsedTimeRate -= 2.625 / 2.75) * elapsedTimeRate + 0.984375); | ||
+ } | ||
+ } | ||
+ | ||
+ /** | ||
+ * @param elapsedTimeRate Elapsed time / Total time | ||
+ * @param amplitude Amplitude of easing | ||
+ * @param period Animation of period | ||
+ * @return easedValue | ||
+ */ | ||
+ private static float getElasticIn(float elapsedTimeRate, double amplitude, double period) { | ||
+ if (elapsedTimeRate == 0 || elapsedTimeRate == 1) return elapsedTimeRate; | ||
+ double pi2 = Math.PI * 2; | ||
+ double s = period / pi2 * Math.asin(1 / amplitude); | ||
+ return (float) -(amplitude * Math.pow(2f, 10f * (elapsedTimeRate -= 1f)) * Math.sin((elapsedTimeRate - s) * pi2 / period)); | ||
+ } | ||
+ | ||
+ /** | ||
+ * @param elapsedTimeRate Elapsed time / Total time | ||
+ * @param amplitude Amplitude of easing | ||
+ * @param period Animation of period | ||
+ * @return easedValue | ||
+ */ | ||
+ private static float getElasticOut(float elapsedTimeRate, double amplitude, double period) { | ||
+ if (elapsedTimeRate == 0 || elapsedTimeRate == 1) return elapsedTimeRate; | ||
+ | ||
+ double pi2 = Math.PI * 2; | ||
+ double s = period / pi2 * Math.asin(1 / amplitude); | ||
+ return (float) (amplitude * Math.pow(2, -10 * elapsedTimeRate) * Math.sin((elapsedTimeRate - s) * pi2 / period) + 1); | ||
+ } | ||
+ | ||
+ /** | ||
+ * @param elapsedTimeRate Elapsed time / Total time | ||
+ * @param amplitude Amplitude of easing | ||
+ * @param period Animation of period | ||
+ * @return easedValue | ||
+ */ | ||
+ private static float getElasticInOut(float elapsedTimeRate, double amplitude, double period) { | ||
+ double pi2 = Math.PI * 2; | ||
+ | ||
+ double s = period / pi2 * Math.asin(1 / amplitude); | ||
+ if ((elapsedTimeRate *= 2) < 1) { | ||
+ return (float) (-0.5f * (amplitude * Math.pow(2, 10 * (elapsedTimeRate -= 1f)) * Math.sin((elapsedTimeRate - s) * pi2 / period))); | ||
+ } | ||
+ return (float) (amplitude * Math.pow(2, -10 * (elapsedTimeRate -= 1)) * Math.sin((elapsedTimeRate - s) * pi2 / period) * 0.5 + 1); | ||
+ | ||
+ } | ||
+} |
3
ei/src/main/res/values/strings.xml
@@ -0,0 +1,3 @@ | ||
+<resources> | ||
+ <string name="app_name">Ei</string> | ||
+</resources> |
15
ei/src/test/java/com/daasuu/ei/ExampleUnitTest.java
@@ -0,0 +1,15 @@ | ||
+package com.daasuu.ei; | ||
+ | ||
+import org.junit.Test; | ||
+ | ||
+import static org.junit.Assert.*; | ||
+ | ||
+/** | ||
+ * To work on unit tests, switch the Test Artifact in the Build Variants view. | ||
+ */ | ||
+public class ExampleUnitTest { | ||
+ @Test | ||
+ public void addition_isCorrect() throws Exception { | ||
+ assertEquals(4, 2 + 2); | ||
+ } | ||
+} |
11
gradle.properties
@@ -0,0 +1,11 @@ | ||
+VERSION_NAME=0.1.0 | ||
+VERSION_CODE=1 | ||
+BUILD_TOOLS_VERSION=23.0.2 | ||
+COMPILE_SDK_VERSION=23 | ||
+COMPILE_MIN_SDK_VERSION=14 | ||
+ | ||
+USER_ID=masayukisuda | ||
+GROUP=com.daasuu | ||
+ARTIFACT_NAME=EasingInterpolator | ||
+ARTIFACT_DESCRIPTION=Twenty-seven different easing animation interpolators for Android. | ||
+SITE_URL=https://github.com/MasayukiSuda/EasingInterpolator |
BIN
gradle/wrapper/gradle-wrapper.jar
Binary file not shown.
6
gradle/wrapper/gradle-wrapper.properties
@@ -0,0 +1,6 @@ | ||
+#Wed Oct 21 11:34:03 PDT 2015 | ||
+distributionBase=GRADLE_USER_HOME | ||
+distributionPath=wrapper/dists | ||
+zipStoreBase=GRADLE_USER_HOME | ||
+zipStorePath=wrapper/dists | ||
+distributionUrl=https\://services.gradle.org/distributions/gradle-2.8-all.zip |
160
gradlew
@@ -0,0 +1,160 @@ | ||
+#!/usr/bin/env bash | ||
+ | ||
+############################################################################## | ||
+## | ||
+## Gradle start up script for UN*X | ||
+## | ||
+############################################################################## | ||
+ | ||
+# Add default JVM options here. You can also use JAVA_OPTS and GRADLE_OPTS to pass JVM options to this script. | ||
+DEFAULT_JVM_OPTS="" | ||
+ | ||
+APP_NAME="Gradle" | ||
+APP_BASE_NAME=`basename "$0"` | ||
+ | ||
+# Use the maximum available, or set MAX_FD != -1 to use that value. | ||
+MAX_FD="maximum" | ||
+ | ||
+warn ( ) { | ||
+ echo "$*" | ||
+} | ||
+ | ||
+die ( ) { | ||
+ echo | ||
+ echo "$*" | ||
+ echo | ||
+ exit 1 | ||
+} | ||
+ | ||
+# OS specific support (must be 'true' or 'false'). | ||
+cygwin=false | ||
+msys=false | ||
+darwin=false | ||
+case "`uname`" in | ||
+ CYGWIN* ) | ||
+ cygwin=true | ||
+ ;; | ||
+ Darwin* ) | ||
+ darwin=true | ||
+ ;; | ||
+ MINGW* ) | ||
+ msys=true | ||
+ ;; | ||
+esac | ||
+ | ||
+# Attempt to set APP_HOME | ||
+# Resolve links: $0 may be a link | ||
+PRG="$0" | ||
+# Need this for relative symlinks. | ||
+while [ -h "$PRG" ] ; do | ||
+ ls=`ls -ld "$PRG"` | ||
+ link=`expr "$ls" : '.*-> \(.*\)$'` | ||
+ if expr "$link" : '/.*' > /dev/null; then | ||
+ PRG="$link" | ||
+ else | ||
+ PRG=`dirname "$PRG"`"/$link" | ||
+ fi | ||
+done | ||
+SAVED="`pwd`" | ||
+cd "`dirname \"$PRG\"`/" >/dev/null | ||
+APP_HOME="`pwd -P`" | ||
+cd "$SAVED" >/dev/null | ||
+ | ||
+CLASSPATH=$APP_HOME/gradle/wrapper/gradle-wrapper.jar | ||
+ | ||
+# Determine the Java command to use to start the JVM. | ||
+if [ -n "$JAVA_HOME" ] ; then | ||
+ if [ -x "$JAVA_HOME/jre/sh/java" ] ; then | ||
+ # IBM's JDK on AIX uses strange locations for the executables | ||
+ JAVACMD="$JAVA_HOME/jre/sh/java" | ||
+ else | ||
+ JAVACMD="$JAVA_HOME/bin/java" | ||
+ fi | ||
+ if [ ! -x "$JAVACMD" ] ; then | ||
+ die "ERROR: JAVA_HOME is set to an invalid directory: $JAVA_HOME | ||
+ | ||
+Please set the JAVA_HOME variable in your environment to match the | ||
+location of your Java installation." | ||
+ fi | ||
+else | ||
+ JAVACMD="java" | ||
+ which java >/dev/null 2>&1 || die "ERROR: JAVA_HOME is not set and no 'java' command could be found in your PATH. | ||
+ | ||
+Please set the JAVA_HOME variable in your environment to match the | ||
+location of your Java installation." | ||
+fi | ||
+ | ||
+# Increase the maximum file descriptors if we can. | ||
+if [ "$cygwin" = "false" -a "$darwin" = "false" ] ; then | ||
+ MAX_FD_LIMIT=`ulimit -H -n` | ||
+ if [ $? -eq 0 ] ; then | ||
+ if [ "$MAX_FD" = "maximum" -o "$MAX_FD" = "max" ] ; then | ||
+ MAX_FD="$MAX_FD_LIMIT" | ||
+ fi | ||
+ ulimit -n $MAX_FD | ||
+ if [ $? -ne 0 ] ; then | ||
+ warn "Could not set maximum file descriptor limit: $MAX_FD" | ||
+ fi | ||
+ else | ||
+ warn "Could not query maximum file descriptor limit: $MAX_FD_LIMIT" | ||
+ fi | ||
+fi | ||
+ | ||
+# For Darwin, add options to specify how the application appears in the dock | ||
+if $darwin; then | ||
+ GRADLE_OPTS="$GRADLE_OPTS \"-Xdock:name=$APP_NAME\" \"-Xdock:icon=$APP_HOME/media/gradle.icns\"" | ||
+fi | ||
+ | ||
+# For Cygwin, switch paths to Windows format before running java | ||
+if $cygwin ; then | ||
+ APP_HOME=`cygpath --path --mixed "$APP_HOME"` | ||
+ CLASSPATH=`cygpath --path --mixed "$CLASSPATH"` | ||
+ JAVACMD=`cygpath --unix "$JAVACMD"` | ||
+ | ||
+ # We build the pattern for arguments to be converted via cygpath | ||
+ ROOTDIRSRAW=`find -L / -maxdepth 1 -mindepth 1 -type d 2>/dev/null` | ||
+ SEP="" | ||
+ for dir in $ROOTDIRSRAW ; do | ||
+ ROOTDIRS="$ROOTDIRS$SEP$dir" | ||
+ SEP="|" | ||
+ done | ||
+ OURCYGPATTERN="(^($ROOTDIRS))" | ||
+ # Add a user-defined pattern to the cygpath arguments | ||
+ if [ "$GRADLE_CYGPATTERN" != "" ] ; then | ||
+ OURCYGPATTERN="$OURCYGPATTERN|($GRADLE_CYGPATTERN)" | ||
+ fi | ||
+ # Now convert the arguments - kludge to limit ourselves to /bin/sh | ||
+ i=0 | ||
+ for arg in "$@" ; do | ||
+ CHECK=`echo "$arg"|egrep -c "$OURCYGPATTERN" -` | ||
+ CHECK2=`echo "$arg"|egrep -c "^-"` ### Determine if an option | ||
+ | ||
+ if [ $CHECK -ne 0 ] && [ $CHECK2 -eq 0 ] ; then ### Added a condition | ||
+ eval `echo args$i`=`cygpath --path --ignore --mixed "$arg"` | ||
+ else | ||
+ eval `echo args$i`="\"$arg\"" | ||
+ fi | ||
+ i=$((i+1)) | ||
+ done | ||
+ case $i in | ||
+ (0) set -- ;; | ||
+ (1) set -- "$args0" ;; | ||
+ (2) set -- "$args0" "$args1" ;; | ||
+ (3) set -- "$args0" "$args1" "$args2" ;; | ||
+ (4) set -- "$args0" "$args1" "$args2" "$args3" ;; | ||
+ (5) set -- "$args0" "$args1" "$args2" "$args3" "$args4" ;; | ||
+ (6) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" ;; | ||
+ (7) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" "$args6" ;; | ||
+ (8) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" "$args6" "$args7" ;; | ||
+ (9) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" "$args6" "$args7" "$args8" ;; | ||
+ esac | ||
+fi | ||
+ | ||
+# Split up the JVM_OPTS And GRADLE_OPTS values into an array, following the shell quoting and substitution rules | ||
+function splitJvmOpts() { | ||
+ JVM_OPTS=("$@") | ||
+} | ||
+eval splitJvmOpts $DEFAULT_JVM_OPTS $JAVA_OPTS $GRADLE_OPTS | ||
+JVM_OPTS[${#JVM_OPTS[*]}]="-Dorg.gradle.appname=$APP_BASE_NAME" | ||
+ | ||
+exec "$JAVACMD" "${JVM_OPTS[@]}" -classpath "$CLASSPATH" org.gradle.wrapper.GradleWrapperMain "$@" |
90
gradlew.bat
@@ -0,0 +1,90 @@ | ||
+@if "%DEBUG%" == "" @echo off | ||
+@rem ########################################################################## | ||
+@rem | ||
+@rem Gradle startup script for Windows | ||
+@rem | ||
+@rem ########################################################################## | ||
+ | ||
+@rem Set local scope for the variables with windows NT shell | ||
+if "%OS%"=="Windows_NT" setlocal | ||
+ | ||
+@rem Add default JVM options here. You can also use JAVA_OPTS and GRADLE_OPTS to pass JVM options to this script. | ||
+set DEFAULT_JVM_OPTS= | ||
+ | ||
+set DIRNAME=%~dp0 | ||
+if "%DIRNAME%" == "" set DIRNAME=. | ||
+set APP_BASE_NAME=%~n0 | ||
+set APP_HOME=%DIRNAME% | ||
+ | ||
+@rem Find java.exe | ||
+if defined JAVA_HOME goto findJavaFromJavaHome | ||
+ | ||
+set JAVA_EXE=java.exe | ||
+%JAVA_EXE% -version >NUL 2>&1 | ||
+if "%ERRORLEVEL%" == "0" goto init | ||
+ | ||
+echo. | ||
+echo ERROR: JAVA_HOME is not set and no 'java' command could be found in your PATH. | ||
+echo. | ||
+echo Please set the JAVA_HOME variable in your environment to match the | ||
+echo location of your Java installation. | ||
+ | ||
+goto fail | ||
+ | ||
+:findJavaFromJavaHome | ||
+set JAVA_HOME=%JAVA_HOME:"=% | ||
+set JAVA_EXE=%JAVA_HOME%/bin/java.exe | ||
+ | ||
+if exist "%JAVA_EXE%" goto init | ||
+ | ||
+echo. | ||
+echo ERROR: JAVA_HOME is set to an invalid directory: %JAVA_HOME% | ||
+echo. | ||
+echo Please set the JAVA_HOME variable in your environment to match the | ||
+echo location of your Java installation. | ||
+ | ||
+goto fail | ||
+ | ||
+:init | ||
+@rem Get command-line arguments, handling Windowz variants | ||
+ | ||
+if not "%OS%" == "Windows_NT" goto win9xME_args | ||
+if "%@eval[2+2]" == "4" goto 4NT_args | ||
+ | ||
+:win9xME_args | ||
+@rem Slurp the command line arguments. | ||
+set CMD_LINE_ARGS= | ||
+set _SKIP=2 | ||
+ | ||
+:win9xME_args_slurp | ||
+if "x%~1" == "x" goto execute | ||
+ | ||
+set CMD_LINE_ARGS=%* | ||
+goto execute | ||
+ | ||
+:4NT_args | ||
+@rem Get arguments from the 4NT Shell from JP Software | ||
+set CMD_LINE_ARGS=%$ | ||
+ | ||
+:execute | ||
+@rem Setup the command line | ||
+ | ||
+set CLASSPATH=%APP_HOME%\gradle\wrapper\gradle-wrapper.jar | ||
+ | ||
+@rem Execute Gradle | ||
+"%JAVA_EXE%" %DEFAULT_JVM_OPTS% %JAVA_OPTS% %GRADLE_OPTS% "-Dorg.gradle.appname=%APP_BASE_NAME%" -classpath "%CLASSPATH%" org.gradle.wrapper.GradleWrapperMain %CMD_LINE_ARGS% | ||
+ | ||
+:end | ||
+@rem End local scope for the variables with windows NT shell | ||
+if "%ERRORLEVEL%"=="0" goto mainEnd | ||
+ | ||
+:fail | ||
+rem Set variable GRADLE_EXIT_CONSOLE if you need the _script_ return code instead of | ||
+rem the _cmd.exe /c_ return code! | ||
+if not "" == "%GRADLE_EXIT_CONSOLE%" exit 1 | ||
+exit /b 1 | ||
+ | ||
+:mainEnd | ||
+if "%OS%"=="Windows_NT" endlocal | ||
+ | ||
+:omega |
1
sample/.gitignore
@@ -0,0 +1 @@ | ||
+/build |
27
sample/build.gradle
@@ -0,0 +1,27 @@ | ||
+apply plugin: 'com.android.application' | ||
+ | ||
+android { | ||
+ compileSdkVersion 23 | ||
+ buildToolsVersion "23.0.2" | ||
+ | ||
+ defaultConfig { | ||
+ applicationId "com.daasuu.easinginterpolator" | ||
+ minSdkVersion 14 | ||
+ targetSdkVersion 23 | ||
+ versionCode 1 | ||
+ versionName "1.0" | ||
+ } | ||
+ buildTypes { | ||
+ release { | ||
+ minifyEnabled false | ||
+ proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro' | ||
+ } | ||
+ } | ||
+} | ||
+ | ||
+dependencies { | ||
+ compile fileTree(dir: 'libs', include: ['*.jar']) | ||
+ testCompile 'junit:junit:4.12' | ||
+ compile 'com.android.support:appcompat-v7:23.2.1' | ||
+ compile project(':ei') | ||
+} |
17
sample/proguard-rules.pro
@@ -0,0 +1,17 @@ | ||
+# Add project specific ProGuard rules here. | ||
+# By default, the flags in this file are appended to flags specified | ||
+# in /Users/sudamasayuki/Documents/workspace/adt-bundle-mac-x86_64-20140321/sdk/tools/proguard/proguard-android.txt | ||
+# You can edit the include path and order by changing the proguardFiles | ||
+# directive in build.gradle. | ||
+# | ||
+# For more details, see | ||
+# http://developer.android.com/guide/developing/tools/proguard.html | ||
+ | ||
+# Add any project specific keep options here: | ||
+ | ||
+# If your project uses WebView with JS, uncomment the following | ||
+# and specify the fully qualified class name to the JavaScript interface | ||
+# class: | ||
+#-keepclassmembers class fqcn.of.javascript.interface.for.webview { | ||
+# public *; | ||
+#} |
13
sample/src/androidTest/java/com/daasuu/easinginterpolator/ApplicationTest.java
@@ -0,0 +1,13 @@ | ||
+package com.daasuu.easinginterpolator; | ||
+ | ||
+import android.app.Application; | ||
+import android.test.ApplicationTestCase; | ||
+ | ||
+/** | ||
+ * <a href="http://d.android.com/tools/testing/testing_android.html">Testing Fundamentals</a> | ||
+ */ | ||
+public class ApplicationTest extends ApplicationTestCase<Application> { | ||
+ public ApplicationTest() { | ||
+ super(Application.class); | ||
+ } | ||
+} |
20
sample/src/main/AndroidManifest.xml
@@ -0,0 +1,20 @@ | ||
+<?xml version="1.0" encoding="utf-8"?> | ||
+<manifest xmlns:android="http://schemas.android.com/apk/res/android" | ||
+ package="com.daasuu.easinginterpolator"> | ||
+ | ||
+ <application | ||
+ android:allowBackup="true" | ||
+ android:icon="@mipmap/ic_launcher" | ||
+ android:label="@string/app_name" | ||
+ android:supportsRtl="true" | ||
+ android:theme="@style/AppTheme"> | ||
+ <activity android:name=".MainActivity"> | ||
+ <intent-filter> | ||
+ <action android:name="android.intent.action.MAIN" /> | ||
+ | ||
+ <category android:name="android.intent.category.LAUNCHER" /> | ||
+ </intent-filter> | ||
+ </activity> | ||
+ </application> | ||
+ | ||
+</manifest> |
28
sample/src/main/java/com/daasuu/easinginterpolator/MainActivity.java
@@ -0,0 +1,28 @@ | ||
+package com.daasuu.easinginterpolator; | ||
+ | ||
+import android.animation.ObjectAnimator; | ||
+import android.support.v7.app.AppCompatActivity; | ||
+import android.os.Bundle; | ||
+import android.widget.TextView; | ||
+ | ||
+import com.daasuu.ei.Ease; | ||
+import com.daasuu.ei.EasingInterpolator; | ||
+ | ||
+public class MainActivity extends AppCompatActivity { | ||
+ | ||
+ @Override | ||
+ protected void onCreate(Bundle savedInstanceState) { | ||
+ super.onCreate(savedInstanceState); | ||
+ setContentView(R.layout.activity_main); | ||
+ | ||
+ TextView textView = (TextView) findViewById(R.id.txt_hello); | ||
+ | ||
+ ObjectAnimator animator = ObjectAnimator.ofFloat( | ||
+ textView, "translationX", 0, 600); | ||
+ | ||
+ animator.setDuration(2000) | ||
+ .setInterpolator(new EasingInterpolator(Ease.ELASTIC_IN_OUT)); | ||
+ animator.start(); | ||
+ | ||
+ } | ||
+} |
17
sample/src/main/res/layout/activity_main.xml
@@ -0,0 +1,17 @@ | ||
+<?xml version="1.0" encoding="utf-8"?> | ||
+<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" | ||
+ xmlns:tools="http://schemas.android.com/tools" | ||
+ android:layout_width="match_parent" | ||
+ android:layout_height="match_parent" | ||
+ android:paddingBottom="@dimen/activity_vertical_margin" | ||
+ android:paddingLeft="@dimen/activity_horizontal_margin" | ||
+ android:paddingRight="@dimen/activity_horizontal_margin" | ||
+ android:paddingTop="@dimen/activity_vertical_margin" | ||
+ tools:context="com.daasuu.easinginterpolator.MainActivity"> | ||
+ | ||
+ <TextView | ||
+ android:id="@+id/txt_hello" | ||
+ android:layout_width="wrap_content" | ||
+ android:layout_height="wrap_content" | ||
+ android:text="Hello World!" /> | ||
+</RelativeLayout> |
BIN
sample/src/main/res/mipmap-hdpi/ic_launcher.png
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
BIN
sample/src/main/res/mipmap-mdpi/ic_launcher.png
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
BIN
sample/src/main/res/mipmap-xhdpi/ic_launcher.png
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
BIN
sample/src/main/res/mipmap-xxhdpi/ic_launcher.png
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
BIN
sample/src/main/res/mipmap-xxxhdpi/ic_launcher.png
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
6
sample/src/main/res/values-w820dp/dimens.xml
@@ -0,0 +1,6 @@ | ||
+<resources> | ||
+ <!-- Example customization of dimensions originally defined in res/values/dimens.xml | ||
+ (such as screen margins) for screens with more than 820dp of available width. This | ||
+ would include 7" and 10" devices in landscape (~960dp and ~1280dp respectively). --> | ||
+ <dimen name="activity_horizontal_margin">64dp</dimen> | ||
+</resources> |
6
sample/src/main/res/values/colors.xml
@@ -0,0 +1,6 @@ | ||
+<?xml version="1.0" encoding="utf-8"?> | ||
+<resources> | ||
+ <color name="colorPrimary">#3F51B5</color> | ||
+ <color name="colorPrimaryDark">#303F9F</color> | ||
+ <color name="colorAccent">#FF4081</color> | ||
+</resources> |
5
sample/src/main/res/values/dimens.xml
@@ -0,0 +1,5 @@ | ||
+<resources> | ||
+ <!-- Default screen margins, per the Android Design guidelines. --> | ||
+ <dimen name="activity_horizontal_margin">16dp</dimen> | ||
+ <dimen name="activity_vertical_margin">16dp</dimen> | ||
+</resources> |
3
sample/src/main/res/values/strings.xml
@@ -0,0 +1,3 @@ | ||
+<resources> | ||
+ <string name="app_name">EasingInterpolator</string> | ||
+</resources> |
11
sample/src/main/res/values/styles.xml
@@ -0,0 +1,11 @@ | ||
+<resources> | ||
+ | ||
+ <!-- Base application theme. --> | ||
+ <style name="AppTheme" parent="Theme.AppCompat.Light.DarkActionBar"> | ||
+ <!-- Customize your theme here. --> | ||
+ <item name="colorPrimary">@color/colorPrimary</item> | ||
+ <item name="colorPrimaryDark">@color/colorPrimaryDark</item> | ||
+ <item name="colorAccent">@color/colorAccent</item> | ||
+ </style> | ||
+ | ||
+</resources> |
15
sample/src/test/java/com/daasuu/easinginterpolator/ExampleUnitTest.java
@@ -0,0 +1,15 @@ | ||
+package com.daasuu.easinginterpolator; | ||
+ | ||
+import org.junit.Test; | ||
+ | ||
+import static org.junit.Assert.*; | ||
+ | ||
+/** | ||
+ * To work on unit tests, switch the Test Artifact in the Build Variants view. | ||
+ */ | ||
+public class ExampleUnitTest { | ||
+ @Test | ||
+ public void addition_isCorrect() throws Exception { | ||
+ assertEquals(4, 2 + 2); | ||
+ } | ||
+} |
1
settings.gradle
@@ -0,0 +1 @@ | ||
+include ':sample', ':ei' |
0 comments on commit
1a37180