diff --git a/.travis.yml b/.travis.yml new file mode 100644 index 0000000..8d38397 --- /dev/null +++ b/.travis.yml @@ -0,0 +1,33 @@ +language: java +jdk: oraclejdk7 +env: + matrix: + - ANDROID_TARGET=android-19 ANDROID_ABI=armeabi-v7a + +before_install: + # Install base Android SDK + - sudo apt-get update -qq + - if [ `uname -m` = x86_64 ]; then sudo apt-get install -qq --force-yes libgd2-xpm ia32-libs ia32-libs-multiarch > /dev/null; fi + - wget http://dl.google.com/android/android-sdk_r22.3-linux.tgz + - tar xzf android-sdk_r22.3-linux.tgz + - export ANDROID_HOME=$PWD/android-sdk-linux + - export PATH=${PATH}:${ANDROID_HOME}/tools:${ANDROID_HOME}/platform-tools + + # Gradle + - wget http://services.gradle.org/distributions/gradle-1.9-bin.zip + - unzip gradle-1.9-bin.zip + - export GRADLE_HOME=$PWD/gradle-1.9 + - export PATH=$GRADLE_HOME/bin:$PATH + + # Install required components + # For a full list, run `android list sdk -a --extended` + # Note that sysimg-19 downloads only ARM, because only the first license query is accepted. + - echo yes | android update sdk --filter platform-tools --no-ui --force > /dev/null + - echo yes | android update sdk --all --filter build-tools-19.0.3 --no-ui --force > /dev/null + - echo yes | android update sdk --filter android-19 --no-ui --force > /dev/null + - echo yes | android update sdk --filter sysimg-19 --no-ui --force > /dev/null + - echo yes | android update sdk --filter extra-android-support --no-ui --force > /dev/null + - echo yes | android update sdk --filter extra-android-m2repository --no-ui --force > /dev/null + +install: + - ./gradlew assemble \ No newline at end of file diff --git a/README.md b/README.md new file mode 100644 index 0000000..e8ad082 --- /dev/null +++ b/README.md @@ -0,0 +1,81 @@ +# Android View Animations [![Build Status](https://travis-ci.org/daimajia/AndroidAnimations)](https://travis-ci.org/daimajia/AndroidAnimations) + +One day, I saw [an iOS library](https://github.com/ArtFeel/AFViewShaker), which is a view shaker, it's very beautiful. I think Android also need one, and should be better. + +So, I started to collect animation effects... and in two days, this project born. + +# Demo + +![](http://ww3.sinaimg.cn/mw690/610dc034jw1ehnv2r93jpg20bx0kokjl.gif) + +# Usage + +## Step 1 + +```groovy +dependencies { + compile 'com.nineoldandroids:library:2.4.0' + compile 'com.daimajia.androidanimations:library:1.0.0@aar' +} +``` +or Maven + +```xml + + com.nineoldandroids + library + 2.4.0 + + + com.daimajia.androidanimation + library + 1.0.0 + apklib + +``` + +## Step2 + +Just like play Yo-yo. + +```java +YoYo.play(YoYo.Techniques.Shake,findViewById(R.id.eidtor)); +``` + +### Effects +#### attension +`Flash`, `Pulse`, `RubberBand`, `Shake`, `Swing`, `Wobble`, `Bounce`, `Tada` + +#### Special +`Hinge`, `RollIn`, `RollOut` + +#### Bounce +`BounceIn`, `BounceInDown`, `BounceInLeft`, `BounceInRight`, `BounceInUp` + +#### Fade +`FadeIn`, `FadeInDown`, `FadeInLeft`, `FadeInRight` +`FadeOut`, `FadeOutDown`, `FadeOutLeft`, `FadeOutRight`, `FadeOutUp` + +#### Flip +`FlipInX`, `FlipOutX`, `FlipOutY` + +#### Rotate +`RotateIn`, `RotateInDownLeft`, `RotateInDownRight`, `RotateInUpLeft`, `RotateInUpRight` +`RotateOut`, `RotateOutDownLeft`, `RotateOutDownRight`, `RotateOutUpLeft`, `RotateOutUpRight` + +#### Slide +`SlideInLeft`, `SlideInRight`, `SlideInUp`, `SlideInDown` +`SlideOutLeft`, `SlideOutRight`, `SlideOutUp`, `SlideOutDown` + +#### Zoom +`ZoomIn`, `ZoomInDown`, `ZoomInLeft`, `ZoomInRight`, `ZoomInUp` +`ZoomOut`, `ZoomOutDown`, `ZoomOutLeft`, `ZoomOutRight`, `ZoomOutUp` + +Welcome contribute your amazing animation effect. :-D + +#About me + +A student in mainland China. + +Welcome to [offer me an internship](mailto:daimajia@gmail.com). +If you have any new idea about this project, feel free to [contact me](mailto:daimajia@gmail.com). \ No newline at end of file diff --git a/build.gradle b/build.gradle index aadd3db..881b632 100644 --- a/build.gradle +++ b/build.gradle @@ -6,7 +6,7 @@ buildscript { } dependencies { classpath 'com.android.tools.build:gradle:0.11.+' - + classpath 'com.jakewharton.sdkmanager:gradle-plugin:0.10.+' // NOTE: Do not place your application dependencies here; they belong // in the individual module build.gradle files } diff --git a/app/.gitignore b/demo/.gitignore similarity index 100% rename from app/.gitignore rename to demo/.gitignore diff --git a/app/build.gradle b/demo/build.gradle similarity index 94% rename from app/build.gradle rename to demo/build.gradle index 5f1d777..56bd973 100644 --- a/app/build.gradle +++ b/demo/build.gradle @@ -1,3 +1,4 @@ +apply plugin: 'android-sdk-manager' apply plugin: 'android' android { diff --git a/app/proguard-rules.pro b/demo/proguard-rules.pro similarity index 100% rename from app/proguard-rules.pro rename to demo/proguard-rules.pro diff --git a/app/src/main/AndroidManifest.xml b/demo/src/main/AndroidManifest.xml similarity index 100% rename from app/src/main/AndroidManifest.xml rename to demo/src/main/AndroidManifest.xml diff --git a/app/src/main/java/com/daimajia/androidanimations/EffectAdapter.java b/demo/src/main/java/com/daimajia/androidanimations/EffectAdapter.java similarity index 100% rename from app/src/main/java/com/daimajia/androidanimations/EffectAdapter.java rename to demo/src/main/java/com/daimajia/androidanimations/EffectAdapter.java diff --git a/app/src/main/java/com/daimajia/androidanimations/ExampleActivity.java b/demo/src/main/java/com/daimajia/androidanimations/ExampleActivity.java similarity index 100% rename from app/src/main/java/com/daimajia/androidanimations/ExampleActivity.java rename to demo/src/main/java/com/daimajia/androidanimations/ExampleActivity.java diff --git a/app/src/main/java/com/daimajia/androidanimations/MyActivity.java b/demo/src/main/java/com/daimajia/androidanimations/MyActivity.java similarity index 100% rename from app/src/main/java/com/daimajia/androidanimations/MyActivity.java rename to demo/src/main/java/com/daimajia/androidanimations/MyActivity.java diff --git a/app/src/main/res/drawable-hdpi/ic_launcher.png b/demo/src/main/res/drawable-hdpi/ic_launcher.png similarity index 100% rename from app/src/main/res/drawable-hdpi/ic_launcher.png rename to demo/src/main/res/drawable-hdpi/ic_launcher.png diff --git a/app/src/main/res/drawable-mdpi/ic_launcher.png b/demo/src/main/res/drawable-mdpi/ic_launcher.png similarity index 100% rename from app/src/main/res/drawable-mdpi/ic_launcher.png rename to demo/src/main/res/drawable-mdpi/ic_launcher.png diff --git a/app/src/main/res/drawable-xhdpi/ic_launcher.png b/demo/src/main/res/drawable-xhdpi/ic_launcher.png similarity index 100% rename from app/src/main/res/drawable-xhdpi/ic_launcher.png rename to demo/src/main/res/drawable-xhdpi/ic_launcher.png diff --git a/app/src/main/res/drawable-xxhdpi/ic_launcher.png b/demo/src/main/res/drawable-xxhdpi/ic_launcher.png similarity index 100% rename from app/src/main/res/drawable-xxhdpi/ic_launcher.png rename to demo/src/main/res/drawable-xxhdpi/ic_launcher.png diff --git a/app/src/main/res/layout/activity_my.xml b/demo/src/main/res/layout/activity_my.xml similarity index 100% rename from app/src/main/res/layout/activity_my.xml rename to demo/src/main/res/layout/activity_my.xml diff --git a/app/src/main/res/layout/example.xml b/demo/src/main/res/layout/example.xml similarity index 100% rename from app/src/main/res/layout/example.xml rename to demo/src/main/res/layout/example.xml diff --git a/app/src/main/res/layout/item.xml b/demo/src/main/res/layout/item.xml similarity index 100% rename from app/src/main/res/layout/item.xml rename to demo/src/main/res/layout/item.xml diff --git a/app/src/main/res/menu/my.xml b/demo/src/main/res/menu/my.xml similarity index 100% rename from app/src/main/res/menu/my.xml rename to demo/src/main/res/menu/my.xml diff --git a/app/src/main/res/values-w820dp/dimens.xml b/demo/src/main/res/values-w820dp/dimens.xml similarity index 100% rename from app/src/main/res/values-w820dp/dimens.xml rename to demo/src/main/res/values-w820dp/dimens.xml diff --git a/app/src/main/res/values/dimens.xml b/demo/src/main/res/values/dimens.xml similarity index 100% rename from app/src/main/res/values/dimens.xml rename to demo/src/main/res/values/dimens.xml diff --git a/app/src/main/res/values/strings.xml b/demo/src/main/res/values/strings.xml similarity index 100% rename from app/src/main/res/values/strings.xml rename to demo/src/main/res/values/strings.xml diff --git a/app/src/main/res/values/styles.xml b/demo/src/main/res/values/styles.xml similarity index 100% rename from app/src/main/res/values/styles.xml rename to demo/src/main/res/values/styles.xml diff --git a/gradle.properties b/gradle.properties index 5d08ba7..ec0329e 100644 --- a/gradle.properties +++ b/gradle.properties @@ -15,4 +15,20 @@ # When configured, Gradle will run in incubating parallel mode. # This option should only be used with decoupled projects. More details, visit # http://www.gradle.org/docs/current/userguide/multi_project_builds.html#sec:decoupled_projects -# org.gradle.parallel=true \ No newline at end of file +# org.gradle.parallel=true + + +VERSION_NAME=1.0.0 +VERSION_CODE=1 +GROUP=com.daimajia.androidanimations + +POM_DESCRIPTION=Collect android animations +POM_URL=https://github.com/daimajia/AndroidAnimations +POM_SCM_URL=https://github.com/daimajia/AndroidAnimations +POM_SCM_CONNECTION=scm:https://github.com/daimajia/AndroidAnimations.git +POM_SCM_DEV_CONNECTION=scm:https://github.com/daimajia/AndroidAnimations.git +POM_LICENCE_NAME=MIT +POM_LICENCE_URL=http://opensource.org/licenses/MIT +POM_LICENCE_DIST=repo +POM_DEVELOPER_ID=daimajia +POM_DEVELOPER_NAME=daimajia \ No newline at end of file diff --git a/library/build.gradle b/library/build.gradle index 9cd649e..85d4fb3 100644 --- a/library/build.gradle +++ b/library/build.gradle @@ -9,7 +9,7 @@ android { minSdkVersion 8 targetSdkVersion 19 versionCode 1 - versionName "1.0" + versionName "1.0.0" } buildTypes { release { @@ -24,3 +24,4 @@ dependencies { compile 'com.android.support:appcompat-v7:19.+' compile 'com.nineoldandroids:library:2.4.0' } +apply from: './gradle-mvn-push.gradle' \ No newline at end of file diff --git a/library/gradle-mvn-push.gradle b/library/gradle-mvn-push.gradle new file mode 100644 index 0000000..ae4b440 --- /dev/null +++ b/library/gradle-mvn-push.gradle @@ -0,0 +1,127 @@ +/* + * Copyright 2013 Chris Banes + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +apply plugin: 'maven' +apply plugin: 'signing' + +def isReleaseBuild() { + return VERSION_NAME.contains("SNAPSHOT") == false +} + +def getReleaseRepositoryUrl() { + return hasProperty('RELEASE_REPOSITORY_URL') ? RELEASE_REPOSITORY_URL + : "https://oss.sonatype.org/service/local/staging/deploy/maven2/" +} + +def getSnapshotRepositoryUrl() { + return hasProperty('SNAPSHOT_REPOSITORY_URL') ? SNAPSHOT_REPOSITORY_URL + : "https://oss.sonatype.org/content/repositories/snapshots/" +} + +def getRepositoryUsername() { + return hasProperty('NEXUS_USERNAME') ? NEXUS_USERNAME : "" +} + +def getRepositoryPassword() { + return hasProperty('NEXUS_PASSWORD') ? NEXUS_PASSWORD : "" +} + +afterEvaluate { project -> + uploadArchives { + repositories { + mavenDeployer { + beforeDeployment { MavenDeployment deployment -> signing.signPom(deployment) } + + pom.groupId = GROUP + pom.artifactId = POM_ARTIFACT_ID + pom.version = VERSION_NAME + + repository(url: getReleaseRepositoryUrl()) { + authentication(userName: getRepositoryUsername(), password: getRepositoryPassword()) + } + snapshotRepository(url: getSnapshotRepositoryUrl()) { + authentication(userName: getRepositoryUsername(), password: getRepositoryPassword()) + } + + pom.project { + name POM_NAME + packaging POM_PACKAGING + description POM_DESCRIPTION + url POM_URL + + scm { + url POM_SCM_URL + connection POM_SCM_CONNECTION + developerConnection POM_SCM_DEV_CONNECTION + } + + licenses { + license { + name POM_LICENCE_NAME + url POM_LICENCE_URL + distribution POM_LICENCE_DIST + } + } + + developers { + developer { + id POM_DEVELOPER_ID + name POM_DEVELOPER_NAME + } + } + } + } + } + } + + signing { + required { isReleaseBuild() && gradle.taskGraph.hasTask("uploadArchives") } + sign configurations.archives + } + + task apklib(type: Zip){ + appendix = extension = 'apklib' + + from 'AndroidManifest.xml' + into('res') { + from 'res' + } + into('src') { + from 'src' + } + } + + task androidJavadocs(type: Javadoc) { + source = android.sourceSets.main + classpath += project.files(android.getBootClasspath() .join(File.pathSeparator)) + } + + task androidJavadocsJar(type: Jar, dependsOn: androidJavadocs) { + classifier = 'javadoc' + from androidJavadocs.destinationDir + } + + task androidSourcesJar(type: Jar) { + classifier = 'sources' + from android.sourceSets.main + } + + artifacts { + archives androidSourcesJar + archives androidJavadocsJar + archives apklib + } +} diff --git a/library/gradle.properties b/library/gradle.properties new file mode 100644 index 0000000..1c7fa2d --- /dev/null +++ b/library/gradle.properties @@ -0,0 +1,22 @@ +# Project-wide Gradle settings. + +# IDE (e.g. Android Studio) users: +# Settings specified in this file will override any Gradle settings +# configured through the IDE. + +# For more details on how to configure your build environment visit +# http://www.gradle.org/docs/current/userguide/build_environment.html + +# Specifies the JVM arguments used for the daemon process. +# The setting is particularly useful for tweaking memory settings. +# Default value: -Xmx10248m -XX:MaxPermSize=256m +# org.gradle.jvmargs=-Xmx2048m -XX:MaxPermSize=512m -XX:+HeapDumpOnOutOfMemoryError -Dfile.encoding=UTF-8 + +# When configured, Gradle will run in incubating parallel mode. +# This option should only be used with decoupled projects. More details, visit +# http://www.gradle.org/docs/current/userguide/multi_project_builds.html#sec:decoupled_projects +# org.gradle.parallel=true + +POM_NAME=AndroidAnimations Library +POM_ARTIFACT_ID=library +POM_PACKAGING=aar diff --git a/library/src/main/java/com/daimajia/androidanimations/library/BaseViewAnimator.java b/library/src/main/java/com/daimajia/androidanimations/library/BaseViewAnimator.java index fd77e38..4d3f728 100644 --- a/library/src/main/java/com/daimajia/androidanimations/library/BaseViewAnimator.java +++ b/library/src/main/java/com/daimajia/androidanimations/library/BaseViewAnimator.java @@ -59,7 +59,7 @@ public BaseViewAnimator setDuration(long duration){ return this; } - public BaseViewAnimator setStartDeley(long delay){ + public BaseViewAnimator setStartDelay(long delay){ getAnimatorAgent().setStartDelay(delay); return this; } diff --git a/library/src/main/java/com/daimajia/androidanimations/library/YoYo.java b/library/src/main/java/com/daimajia/androidanimations/library/YoYo.java index 2c8d4eb..870454d 100644 --- a/library/src/main/java/com/daimajia/androidanimations/library/YoYo.java +++ b/library/src/main/java/com/daimajia/androidanimations/library/YoYo.java @@ -164,11 +164,11 @@ public static void play(Techniques name, View target, Animator.AnimatorListener. } public static void play(Techniques name, View target,long delay,long duration){ - name.getAnimator().setDuration(duration).setStartDeley(delay).animate(target); + name.getAnimator().setDuration(duration).setStartDelay(delay).animate(target); } public static void play(Techniques name, View target,long delay,long duration,Interpolator interpolator){ - name.getAnimator().setDuration(duration).setStartDeley(delay).setInterpolator(interpolator).animate(target); + name.getAnimator().setDuration(duration).setStartDelay(delay).setInterpolator(interpolator).animate(target); } public static void play(Techniques name, View target, long delay, long duration, Interpolator interpolator, Animator.AnimatorListener ... listeners){ @@ -178,7 +178,7 @@ public static void play(Techniques name, View target, long delay, long duration, } animator.setDuration(duration); animator.setInterpolator(interpolator); - animator.setStartDeley(delay); + animator.setStartDelay(delay); animator.animate(target); } } diff --git a/settings.gradle b/settings.gradle index 3306997..a2ad509 100644 --- a/settings.gradle +++ b/settings.gradle @@ -1 +1 @@ -include ':app', ':library' +include ':library', 'demo'