diff --git a/.gitignore b/.gitignore index dba5cc47..49d43a56 100644 --- a/.gitignore +++ b/.gitignore @@ -1,78 +1,14 @@ -# built application files -*bin\.apk -*.ap_ - -# files for the dex VM -*.dex - -# Java class files -*.class - -# generated files -bin/ -gen/ - -# Local configuration file (sdk path, etc) -local.properties - -assets/ - -.settings -eclipsebin - -bin -gen -build -out -lib -local.properties - -target -pom.xml.* -release.properties - -.idea -*.iml -classes - -obj - +.settings/org.eclipse.jdt.core.prefs +*/.settings/org.eclipse.jdt.core.prefs +**/bin/* +**/target/* +**/gen/* +**/build/* +**/.idea/* +**/*.iml +.gradle +/local.properties +/.idea/workspace.xml .DS_Store - -#ignore thumbnails created by windows -Thumbs.db -#Ignore files build by Visual Studio -*.obj -*.exe -*.pdb -*.user -*.aps -*.pch -*.vspscc -*_i.c -*_p.c -*.ncb -*.suo -*.tlb -*.tlh -*.bak -*.cache -*.ilk -*.log -[Bb]in -[Dd]ebug*/ -*.lib -*.sbr -obj/ -[Rr]elease*/ -_ReSharper*/ -[Tt]est[Rr]esult* -example/.classpath -example/.project -example/proguard-project.txt -*/.classpath -*proguard-project.txt - -.gradle/ -gradle/* -gradlew* +.metadata/* +**.hprof diff --git a/.project b/.project new file mode 100644 index 00000000..abc834ee --- /dev/null +++ b/.project @@ -0,0 +1,17 @@ + + + ListViewAnimations (Parent) + + + + + + org.eclipse.m2e.core.maven2Builder + + + + + + org.eclipse.m2e.core.maven2Nature + + diff --git a/.travis.yml b/.travis.yml new file mode 100644 index 00000000..f578e76c --- /dev/null +++ b/.travis.yml @@ -0,0 +1,44 @@ +language: android +jdk: oraclejdk7 + +env: + matrix: + - ANDROID_TARGET=15 LINT=false MAVEN=false + - ANDROID_TARGET=16 LINT=false MAVEN=false + - ANDROID_TARGET=17 LINT=false MAVEN=false + - ANDROID_TARGET=18 LINT=false MAVEN=false + - ANDROID_TARGET=19 LINT=true MAVEN=true + global: + - TERM=dumb + - COMPONENTS=build-tools-20.0.0,android-20,extra-android-m2repository,extra-android-support,extra-google-m2repository + - LICENSES="android-sdk-license-5be876d5|android-sdk-preview-license-52d11cd2" + - secure: Fo/btrr+HpwmQL6TNxZuh/TWRMouz9Z1RCo77tf3crNP4OHq9EAkduLc/b4i6HCGFM3fyfJ7AM5XMa3OQvXfF84FQnew7NGE6zB/CKFfKBIZyzntvrDg4VqWEAHzunT6+eBnGtxtrAE0bBo4MmUCklXWP8j5UAyjfFpSeJdOywY= + - secure: s56rqSiiwX40CQWeHTcbyVLRtwLP/pcHWqaVCKuXtZ/m9SgRI/SHp9o8ITI2dzr3syEeAkHjkJOkHQSpH0bHi1xKY4M9ODcCugwv+yDEELw1qmI6Cvwjvj1cKsG7ebt39OnCkz+TqhtI/iOEkxq7mTizFjNIxIImMkKxeQwcFgE= + - secure: UOQ9keLBuJw5Ed/eYtXarwoGuJSSvgGTob+D9aU8hVRoTUXpSDuHtk9TdS4MNXQ33jgFZEsmkpwRmV54XVEGe6xcri1uys1JDzjc+SqTEgbEh1QktfIWGvOx49YZtI2Zei0324S2qXRtemKMw4N+1XRRMP/IXEogr26Xi5JLVcI= + +before_install: + - curl -3L https://raw.github.com/embarkmobile/android-sdk-installer/version-2/android-sdk-installer | bash /dev/stdin --install=$COMPONENTS,android-$ANDROID_TARGET,sys-img-armeabi-v7a-android-$ANDROID_TARGET --accept=$LICENSES && source ~/.android-sdk-installer/env + - curl -3L -o wait_for_emulator https://github.com/embarkmobile/android-sdk-installer/raw/version-2/wait_for_emulator + - sudo chmod +x wait_for_emulator + + # Start the emulator + - echo no | android create avd --force -n test -t android-$ANDROID_TARGET --abi armeabi-v7a + - emulator -avd test -no-audio -no-window & + +before_script: + # Downloads gradle stuff + - gradle + - ./wait_for_emulator + +install: + - true + +script: + - gradle connectedCheck --info + - if [[ $LINT == 'true' ]]; then gradle lint ; fi + +after_success: + - if [[ $MAVEN == 'true' && $TRAVIS_BRANCH == 'dev' && $TRAVIS_PULL_REQUEST == 'false' ]]; then gradle uploadArchives -PnexusUsername="${nexusUsername}" -PnexusPassword="${nexusPassword}" ; fi + +notifications: + email: false \ No newline at end of file diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md new file mode 100644 index 00000000..30803187 --- /dev/null +++ b/CONTRIBUTING.md @@ -0,0 +1,35 @@ +# Reporting issues + +Found a bug in the library? Don't hesitate to open an issue! But first: + +* Check if it hasn't been reported yet. +* Verify the bug still exists in the `dev` branch. + +When describing an issue, be precise: + +* Include steps to reproduce (including sample code if necessary); +* What happened? What do you think should have happened? +* On what Android version does this issue occur? + +# Contributing code + +## Please do! + +I'm happy to view and accept pull requests. However, it is important to follow these guidelines if you want to contribute. + +## General steps + +* [Fork](https://github.com/nhaarman/ListViewAnimations/fork) the repository. +* Create a local clone of the repository. +* Create a local branch, **based on the `dev` branch** (see the *Rules* section) +* Commit your code, and push the changes to your own repository. +* Create a pull request, specifying that you want to merge into the `dev` branch (or any child branch of it) + +## Rules + +* Branch names should start with either `feature_` or `bugfix_`. If there is an open issue, include its number, like `bugfix_123`. +* **Do not** include in your commit message anything related to automatic issue closing, such as `Fixes issue 123`. We'll do that when merging your pull request. +* **Do not** put any `@author` comment. Git keeps track of all your changes and `@author` does more harm than good. +* **Do not** issue a pull request into the `master` branch. +* Try to keep the diff as small as possible. For example, be aware of auto formatting. +* All files should have the Apache 2 License header. \ No newline at end of file diff --git a/ListViewAnimationsExample.apk b/ListViewAnimationsExample.apk deleted file mode 100644 index ae38cba2..00000000 Binary files a/ListViewAnimationsExample.apk and /dev/null differ diff --git a/README.md b/README.md index ecb8e1de..bbb80f2e 100644 --- a/README.md +++ b/README.md @@ -1,38 +1,33 @@ -ListViewAnimations ([Play Store Demo][1]) +ListViewAnimations ([Play Store Demo][1]) [![Build Status](https://travis-ci.org/nhaarman/ListViewAnimations.svg)](https://travis-ci.org/nhaarman/ListViewAnimations) =========== ListViewAnimations is an Open Source Android library that allows developers to easily create ListViews with animations. Feel free to use it all you want in your Android apps provided that you cite this project and include the license in your app. -Known applications using ListViewAnimations ------ -[Ultimate Tic-Tac-Toe][12] | [Light Flow Lite - LED Control][18] | [TreinVerkeer][6] | [Pearl Jam Lyrics][19] | [Calorie Chart][20] | [Car Hire][10] | [Super BART][11] | [DK FlashCards][15] | [Counter Plus][22] | [SimpleNews - RSS Reader][23] | [Voorlees Verhaaltjes 2.0][21] | [Per-App Modes][26] | [SimpleNews][27] - Features ----- ListViewAnimations provides the following features: -* Appearance animations for items in ListViews, GridViews, and other AbsListViews; - * Built in animations include Alpha, SwingRightIn, SwingLeftIn, SwingBottomIn, SwingRightIn and ScaleIn. +* Appearance animations for items in `ListViews`, `GridViews`, other `AbsListViews`; + * Built in animations include `Alpha`, `SwingRightIn`, `SwingLeftIn`, `SwingBottomIn`, `SwingRightIn` and `ScaleIn`. * Other animations can easily be added -* Swipe-to-Dismiss, Swipe-To-Dismiss with contextual undo (and optionally count down); + * StickyListHeaders is supported, other implementations can easily be added. +* Swipe-to-Dismiss, Swipe-To-Dismiss with contextual undo; * Drag-and-Drop reordering; -* Animate dismissal of items; * Animate addition of items; * Smoothly expand your items to reveal more content; +![](https://raw.githubusercontent.com/nhaarman/ListViewAnimations/gh-pages/images/dynamiclistview.gif "DynamicListView") + Setup ----- -* In Eclipse, just import the library as an Android library project. -* Project > Clean to generate the binaries you need, like R.java, etc. -* Then, just add ListViewAnimations as a dependency to your existing project and you're good to go! -**Or**: +The library consists of separate modules: -* [Download the .jar file][4] -* [Download the latest NineOldAndroids .jar file][17] -* Add the .jar files to your project's `libs` folder, or add them as external jars to your project's build path. +* `lib-core`: The core of the library, and contains appearance animations. +* `lib-manipulation`: Contains the item manipulation options, such as Swipe-to-Dismiss, and Drag-and-Drop. +* `lib-core-slh`: An extension of `lib-core` to support `StickyListHeaders`. -**Or**: +When using `lib-manipulation` or `lib-core-slh`, `lib-core` is included as well. Add the following to your `build.gradle`: @@ -40,44 +35,72 @@ Add the following to your `build.gradle`: mavenCentral() } - dependencies{ - compile 'com.nhaarman.listviewanimations:library:2.6.0' + dependencies { + compile 'com.nhaarman.listviewanimations:lib-core:3.0.+' + compile 'com.nhaarman.listviewanimations:lib-manipulation:3.0.+' + compile 'com.nhaarman.listviewanimations:lib-core-slh:3.0.+' } **Or**: +* Download the jar files you need: + * [`lib-core`][8] + * [`lib-manipulation`][9] + * [`lib-core-slh`][10] +* [Download the latest NineOldAndroids .jar file][6] +* Add the .jar files to your project's `libs` folder, or add them as external jars to your project's build path. + +**Or**: + Add the following to your `pom.xml`: com.nhaarman.listviewanimations - library - 2.6.0 + lib-core + 3.0.0 - -Usage + + com.nhaarman.listviewanimations + lib-manipulation + 3.0.0 + + + com.nhaarman.listviewanimations + lib-core-slh + 3.0.0 + + + +Getting Started ----- -Please refer to the [Wiki][13] pages to learn more about how to use this library. + +* [Wiki][11]: Tutorials and examples +* Docs: + * `lib-core` - [Javadoc][12] + * `lib-manipulation` - [Javadoc][13] + * `lib-core-slh` - [Javadoc][14] Contribute ----- Please do! I'm happy to review and accept pull requests. -Please read the [Contributing wiki](https://github.com/nhaarman/ListViewAnimations/wiki/Contributing) before you do. +Please read [Contributing](https://github.com/nhaarman/ListViewAnimations/blob/master/CONTRIBUTING.md) before you do. Developed By ----- * Niek Haarman +*** + Special Thanks ----- -* Roman Nurik - The ListViewAnimations library uses a modified version of his [SwipeDismissListViewTouchListener][5] to support swipe-to-dismiss. -* DevBytes - Drag-and-Drop reordering is done by a modified version of their [DynamicListView][16]. +* DevBytes - Drag-and-Drop reordering is done by a rewritten version of their [DynamicListView][5]. * Jake Warthon - To support devices pre-HC (<3.0), a copy of [NineOldAndroids][2] is included. -* [Contributors][25] +* [Contributors][7] License ----- - Copyright 2013 Niek Haarman + Copyright 2014 Niek Haarman Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. @@ -94,26 +117,13 @@ License [1]: https://play.google.com/store/apps/details?id=com.haarman.listviewanimations [2]: http://nineoldandroids.com/ [3]: http://en.wikipedia.org/wiki/Decorator_pattern - [4]: https://github.com/nhaarman/ListViewAnimations/blob/master/com.haarman.listviewanimations-2.6.0.jar?raw=true - [5]: https://gist.github.com/romannurik/2980593 - [6]: https://play.google.com/store/apps/details?id=com.haarman.treinverkeer - [7]: https://www.twitter.com/niekfct - [8]: https://plus.google.com/106017817931984343451 - [9]: https://play.google.com/store/apps/details?id=com.niek.runningapp - [10]: https://play.google.com/store/apps/details?id=com.rentalcars.handset - [11]: https://play.google.com/store/apps/details?id=com.getgoodcode.bart - [12]: https://play.google.com/store/apps/details?id=com.haarman.ultimatettt - [13]: https://github.com/nhaarman/ListViewAnimations/wiki - [15]: https://play.google.com/store/apps/details?id=com.ducky.flashcards - [16]: http://youtu.be/_BZIvjMgH-Q - [17]: https://github.com/JakeWharton/NineOldAndroids/downloads - [18]: https://play.google.com/store/apps/details?id=com.rageconsulting.android.lightflowlite - [19]: https://play.google.com/store/apps/details?id=com.juannale.pearljamlyricsapp - [20]: https://play.google.com/store/apps/details?id=com.cafetaso.foodinfo - [21]: https://play.google.com/store/apps/details?id=sa.voorleesVerhaaltjes - [22]: https://play.google.com/store/apps/details?id=com.seedform.counter - [23]: https://play.google.com/store/apps/details?id=de.dala.simplenews - [24]: https://github.com/Dalanie/SimpleNews - [25]: https://github.com/nhaarman/ListViewAnimations/graphs/contributors - [26]: https://play.google.com/store/apps/details?id=com.franco.perappmodes - [27]: https://play.google.com/store/apps/details?id=de.dala.simplenews + [5]: http://youtu.be/_BZIvjMgH-Q + [6]: https://github.com/JakeWharton/NineOldAndroids/downloads + [7]: https://github.com/nhaarman/ListViewAnimations/graphs/contributors + [8]: https://github.com/nhaarman/ListViewAnimations/releases/download/3.0.0/listviewanimations_lib-core_3.0.0.jar + [9]: https://github.com/nhaarman/ListViewAnimations/releases/download/3.0.0/listviewanimations_lib-manipulation_3.0.0.jar + [10]: https://github.com/nhaarman/ListViewAnimations/releases/download/3.0.0/listviewanimations_lib-core-slh_3.0.0.jar + [11]: https://github.com/nhaarman/ListViewAnimations/wiki + [12]: http://nhaarman.github.io/ListViewAnimations/javadoc/3.0.0/lib-core + [13]: http://nhaarman.github.io/ListViewAnimations/javadoc/3.0.0/lib-manipulation + [14]: http://nhaarman.github.io/ListViewAnimations/javadoc/3.0.0/lib-core-slh diff --git a/RELEASING.md b/RELEASING.md new file mode 100644 index 00000000..cf0bee00 --- /dev/null +++ b/RELEASING.md @@ -0,0 +1,16 @@ +ListViewAnimations Release Process +================================= + + 1. Make sure it builds! + + gradlew clean build + + 2. Check the version number in the root `gradle.properties`. + 3. Make the release! + + gradlew clean generateReleaseJavadoc pushMaven -DisRelease=true + + 4. Promote the Maven artifact on Sonatype's OSS Nexus install. + 5. Tag commit as release (`x.x.x`) + 6. Provide changelog / `.jar` files at [the Releases page](https://github.com/nhaarman/ListViewAnimations/releases). + 7. Increment the patch version number for future SNAPSHOT releases in the root `gradle.properties`. \ No newline at end of file diff --git a/build.gradle b/build.gradle index 0fe6e91c..f2bfa322 100644 --- a/build.gradle +++ b/build.gradle @@ -1,4 +1,18 @@ -import java.util.regex.Pattern +/* + * Copyright 2014 Niek Haarman + * + * 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. + */ buildscript { repositories { @@ -6,15 +20,11 @@ buildscript { } dependencies { - classpath 'com.android.tools.build:gradle:0.8.+' + classpath 'com.android.tools.build:gradle:0.12.+' + classpath 'org.ajoberstar:gradle-git:0.9.+' } } -def isReleaseBuild() { - println version - return version.contains("SNAPSHOT") == false -} - allprojects { group = 'com.nhaarman.listviewanimations' version = VERSION_NAME @@ -22,66 +32,4 @@ allprojects { repositories { mavenCentral() } - - tasks.withType(Compile) { - options.encoding = 'UTF-8' - } -} - - -task('increaseVersionCode') << { - def files = new File[2]; - files[0] = file("library/AndroidManifest.xml") - files[1] = file("example/AndroidManifest.xml") - def pattern = Pattern.compile("versionCode=\"(\\d+)\"") - for (int i = 0; i < files.length; ++i) { - def manifestText = files[i].getText() - def matcher = pattern.matcher(manifestText) - matcher.find() - def currentVersionCode = Long.parseLong(matcher.group(1)); - def versionCode = Long.parseLong(new Date().format('yyyyMMdd') + "1") - while (versionCode <= currentVersionCode) { - ++versionCode - } - println(versionCode) - def manifestContent = matcher.replaceAll("versionCode=\"" + versionCode + "\"") - files[i].write(manifestContent) - } -} - -task('syncVersionName') << { - def manifestFiles = new File[2]; - manifestFiles[0] = file("library/AndroidManifest.xml") - manifestFiles[1] = file("example/AndroidManifest.xml") - def pattern = Pattern.compile("versionName=\"(.+)\"") - for (int i = 0; i < manifestFiles.length; ++i) { - def manifestText = manifestFiles[i].getText() - def matcher = pattern.matcher(manifestText) - matcher.find() - def manifestContent = matcher.replaceAll("versionName=\"" + version + "\"") - manifestFiles[i].write(manifestContent) - } - - def readmeFile = file("README.md") - def readmeText = readmeFile.getText() - def matcher = pattern.matcher(readmeText) - matcher.find() - def previousVersion = matcher.group(1) - def readmeContent = readmeText.replaceAll(previousVersion, version) - - pattern = Pattern.compile("repostart -->(.+)" + repo + " + - - + \ No newline at end of file diff --git a/example/pom.xml b/example/pom.xml index 3c378776..825a9d52 100644 --- a/example/pom.xml +++ b/example/pom.xml @@ -1,147 +1,222 @@ - - 4.0.0 + - - com.haarman.listviewanimations - parent - 1.0.0-SNAPSHOT - + + 4.0.0 - example - apk + + com.nhaarman.listviewanimations + parent + 3.0.0-SNAPSHOT + - ListViewAnimations (Example) + example + apk - - - - com.google.android - android - provided - - - com.google.android - support-v4 - + ListViewAnimations (Example) - - - com.haarman.listviewanimations - listviewanimations - ${project.version} - apklib - + + + + com.google.android + android + provided + + + com.google.android + support-v4 + - - - junit - junit - test - - + + + com.nhaarman.listviewanimations + lib-core-slh + ${project.version} + apklib + + + com.nhaarman.listviewanimations + lib-manipulation + ${project.version} + apklib + + - - src - - - com.jayway.maven.plugins.android.generation2 - android-maven-plugin - true - - - runLint - compile - - lint - - - - + + + + com.jayway.maven.plugins.android.generation2 + android-maven-plugin + true + + ${project.basedir}/src/main/AndroidManifest.xml + ${project.basedir}/src/main/res + ${project.basedir}/src/main/aidl + + - - org.codehaus.mojo - build-helper-maven-plugin - - - package - - attach-artifact - - - - - jar - ${project.build.directory}/${project.build.finalName}.jar - - - - - - + + org.codehaus.mojo + build-helper-maven-plugin + + + package + attach-artifact + + attach-artifact + + + + + jar + ${project.build.directory}/${project.build.finalName}.jar + + + + + + - - org.apache.maven.plugins - maven-source-plugin - - - attach-sources - - jar - - - - + + org.apache.maven.plugins + maven-source-plugin + + + attach-sources + + jar + + + + - - org.apache.maven.plugins - maven-javadoc-plugin - - - attach-javadocs - - jar - - - true - - - - + + org.apache.maven.plugins + maven-javadoc-plugin + + + attach-javadocs + + jar + + + + - - org.apache.maven.plugins - maven-release-plugin - - - + + org.apache.maven.plugins + maven-release-plugin + + + + + + + org.eclipse.m2e + lifecycle-mapping + 1.0.0 + + + + + + + com.jayway.maven.plugins.android.generation2 + + android-maven-plugin + [3.8.2,) + + consume-aar + + + + + + + + + + + + + - - - release - - - performRelease - true - - - - - - org.apache.maven.plugins - maven-gpg-plugin - ${maven-gpg-plugin.version} - - - sign-artifacts - verify - - sign - - - - - - - - + + + release + + + performRelease + true + + + + + + org.apache.maven.plugins + maven-jarsigner-plugin + + + signing + + sign + verify + + package + true + + + ${project.build.directory}/${project.artifactId}.apk + + + + + + + com.jayway.maven.plugins.android.generation2 + android-maven-plugin + true + + true + + false + + + false + true + ${project.build.directory}/${project.artifactId}-signed-aligned.apk + + + false + + + + + alignApk + package + + zipalign + + + + + + + + \ No newline at end of file diff --git a/example/proguard-project.txt b/example/proguard-project.txt new file mode 100644 index 00000000..f2fe1559 --- /dev/null +++ b/example/proguard-project.txt @@ -0,0 +1,20 @@ +# To enable ProGuard in your project, edit project.properties +# to define the proguard.config property as described in that file. +# +# Add project specific ProGuard rules here. +# By default, the flags in this file are appended to flags specified +# in ${sdk.dir}/tools/proguard/proguard-android.txt +# You can edit the include path and order by changing the ProGuard +# include property in project.properties. +# +# 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 *; +#} diff --git a/example/project.properties b/example/project.properties index de78aecc..e5c05e2e 100644 --- a/example/project.properties +++ b/example/project.properties @@ -1,3 +1,19 @@ +# +# Copyright 2014 Niek Haarman +# +# 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. +# + # This file is automatically generated by Android Tools. # Do not modify this file -- YOUR CHANGES WILL BE ERASED! # @@ -12,5 +28,3 @@ # Project target. target=android-19 -android.library.reference.1=..\\..\\android-support-v7-appcompat -android.library.reference.2=../library diff --git a/example/res/drawable-xhdpi/ic_beer.png b/example/res/drawable-xhdpi/ic_beer.png deleted file mode 100644 index 904d4c6c..00000000 Binary files a/example/res/drawable-xhdpi/ic_beer.png and /dev/null differ diff --git a/example/res/drawable-xhdpi/ic_github.png b/example/res/drawable-xhdpi/ic_github.png deleted file mode 100644 index 2e8a7c29..00000000 Binary files a/example/res/drawable-xhdpi/ic_github.png and /dev/null differ diff --git a/example/res/drawable-xxhdpi/ic_beer.png b/example/res/drawable-xxhdpi/ic_beer.png deleted file mode 100644 index cc60b9de..00000000 Binary files a/example/res/drawable-xxhdpi/ic_beer.png and /dev/null differ diff --git a/example/res/layout/activity_animateremoval.xml b/example/res/layout/activity_animateremoval.xml deleted file mode 100644 index 4ca3375b..00000000 --- a/example/res/layout/activity_animateremoval.xml +++ /dev/null @@ -1,20 +0,0 @@ - - - -