diff --git a/DEV/preview/Telecine_2016-01-09-19-01-46.gif b/DEV/preview/Telecine_2016-01-09-19-01-46.gif
new file mode 100644
index 0000000..13b8d63
Binary files /dev/null and b/DEV/preview/Telecine_2016-01-09-19-01-46.gif differ
diff --git a/DEV/preview/Telecine_2016-01-09-19-01-46.mp4 b/DEV/preview/Telecine_2016-01-09-19-01-46.mp4
new file mode 100755
index 0000000..e2be07d
Binary files /dev/null and b/DEV/preview/Telecine_2016-01-09-19-01-46.mp4 differ
diff --git a/README.md b/README.md
index 82236f5..1cfcb92 100644
--- a/README.md
+++ b/README.md
@@ -1,17 +1,17 @@
#ItemAnimators [![Maven Central](https://maven-badges.herokuapp.com/maven-central/com.mikepenz/itemanimators/badge.svg?style=flat)](https://maven-badges.herokuapp.com/maven-central/com.mikepenz/itemanimators) [![Join the chat at https://gitter.im/mikepenz/itemanimators](https://badges.gitter.im/Join%20Chat.svg)](https://gitter.im/mikepenz/itemanimators?utm_source=badge&utm_medium=badge&utm_campaign=pr-badge&utm_content=badge)
-The **ItemAnimators** library comes with a huge collections of pre-created Animators for your RecyclerView.
-It was created so developers can easly animate their RecyclerView. It also takes care about correctly handling all view states so you don't have to.
+The **ItemAnimators** library comes with a huge collections of pre-created animators for your `RecyclerView`. It was created so developers can easily animate their `RecyclerView`.
+These `Animators` correctly work with all view states and `RecyclerView` states (as the `DefaultItemAnimator` does)
> **DISCLAIMER**: this library does not animate items on scroll, just when added, removed, moved, or changed
#Preview
-##Screenshots
+
#Include in your project
##Using Maven
```javascript
-compile('com.mikepenz:itemanimators:0.1.0-SNAPSHOT@aar') {
+compile('com.mikepenz:itemanimators:0.2.0-SNAPSHOT@aar') {
transitive = true
}
@@ -33,6 +33,28 @@ mRecyclerView.setItemAnimator(new ScaleUpAnimator());
//https://github.com/mikepenz/FastAdapter
```
+##Included animators
+
+* **Simple**
+ * `AlphaInAnimator`
+
+* **Resize**
+ * `ScaleUpAnimator`
+ * `ScaleXAnimator`
+ * `ScaleYAnimator`
+
+* **Move**
+ * `SlideDownAlphaAnimator` (Best for collapse animations)
+ * `SlideRightAlphaAnimator`
+ * `SlideUpAlphaAnimator`
+ * `SlideLeftAlphaAnimator`
+ * `SlideInOutTopAnimator`
+ * `SlideInOutRightAnimator`
+ * `SlideInOutBottomAnimator`
+ * `SlideInOutLeftAnimator`
+
+* more will follow soon...
+
#Developed By
* Mike Penz
diff --git a/app/build.gradle b/app/build.gradle
index 26afe04..8e3228d 100644
--- a/app/build.gradle
+++ b/app/build.gradle
@@ -12,8 +12,8 @@ android {
defaultConfig {
minSdkVersion 11
targetSdkVersion 23
- versionCode 10
- versionName '0.1.0-SNAPSHOT'
+ versionCode 20
+ versionName '0.2.0-SNAPSHOT'
applicationVariants.all { variant ->
variant.outputs.each { output ->
@@ -52,10 +52,17 @@ dependencies {
//used to generate the drawer on the left
//https://github.com/mikepenz/MaterialDrawer
- compile('com.mikepenz:materialdrawer:5.0.0.fastAdapter.b5-SNAPSHOT@aar') {
+ compile('com.mikepenz:materialdrawer:5.0.0.fastAdapter.b7-SNAPSHOT@aar') {
transitive = true
exclude module: "itemanimators"
+ exclude module: "fastadapter"
}
+
+ // used to fill the RecyclerView with the DrawerItems
+ // and provides single and multi selection, collapsable items
+ // https://github.com/mikepenz/FastAdapter
+ compile 'com.mikepenz:fastadapter:0.7.1@aar'
+
//used to generate the Open Source section
//https://github.com/mikepenz/AboutLibraries
compile('com.mikepenz:aboutlibraries:5.3.4@aar') {
diff --git a/app/src/main/java/com/mikepenz/itemanimators/app/SampleActivity.java b/app/src/main/java/com/mikepenz/itemanimators/app/SampleActivity.java
index 4462a9a..91c8500 100755
--- a/app/src/main/java/com/mikepenz/itemanimators/app/SampleActivity.java
+++ b/app/src/main/java/com/mikepenz/itemanimators/app/SampleActivity.java
@@ -3,6 +3,7 @@
import android.content.Intent;
import android.graphics.Color;
import android.os.Bundle;
+import android.os.Handler;
import android.support.v7.app.AppCompatActivity;
import android.support.v7.widget.GridLayoutManager;
import android.support.v7.widget.LinearLayoutManager;
@@ -128,17 +129,15 @@ public boolean onItemClick(View view, int position, IDrawerItem drawerItem) {
//configure our fastAdapter
//get our recyclerView and do basic setup
mRecyclerView = (RecyclerView) findViewById(R.id.rv);
- mRecyclerView.setLayoutManager(new LinearLayoutManager(this));
- mRecyclerView.setItemAnimator(new ScaleUpAnimator());
+ mRecyclerView.setLayoutManager(new GridLayoutManager(this, 3));
mRecyclerView.setAdapter(mItemAdapter.wrap(mFastAdapter));
-
- //add some dummy data
- mItemAdapter.add(ImageDummyData.getImages());
+ mRecyclerView.setItemAnimator(new AlphaInAnimator());
+ mRecyclerView.getItemAnimator().setAddDuration(500);
+ mRecyclerView.getItemAnimator().setRemoveDuration(500);
//restore selections (this has to be done after the items were added
mFastAdapter.withSavedInstanceState(savedInstanceState);
-
/**
* selection spinner for the different animtors
*/
@@ -160,6 +159,14 @@ public void onItemSelected(AdapterView> parent, View view, int position, long
public void onNothingSelected(AdapterView> parent) {
}
});
+
+ new Handler().postDelayed(new Runnable() {
+ @Override
+ public void run() {
+ //add some dummy data
+ mItemAdapter.add(ImageDummyData.getImages());
+ }
+ }, 50);
}
@Override
diff --git a/app/src/main/java/com/mikepenz/itemanimators/app/items/SampleItem.java b/app/src/main/java/com/mikepenz/itemanimators/app/items/SampleItem.java
deleted file mode 100644
index 7bd57b2..0000000
--- a/app/src/main/java/com/mikepenz/itemanimators/app/items/SampleItem.java
+++ /dev/null
@@ -1,134 +0,0 @@
-package com.mikepenz.itemanimators.app.items;
-
-import android.content.Context;
-import android.support.annotation.StringRes;
-import android.support.v7.widget.RecyclerView;
-import android.view.View;
-import android.widget.TextView;
-
-import com.mikepenz.fastadapter.ICollapsible;
-import com.mikepenz.fastadapter.IItem;
-import com.mikepenz.fastadapter.items.AbstractItem;
-import com.mikepenz.fastadapter.utils.FastAdapterUIUtils;
-import com.mikepenz.fastadapter.utils.ViewHolderFactory;
-import com.mikepenz.itemanimators.app.R;
-import com.mikepenz.materialdrawer.holder.StringHolder;
-import com.mikepenz.materialize.util.UIUtils;
-
-import java.util.List;
-
-import butterknife.Bind;
-import butterknife.ButterKnife;
-
-/**
- * Created by mikepenz on 28.12.15.
- */
-public class SampleItem extends AbstractItem implements ICollapsible {
-
- public String header;
- public StringHolder name;
- public StringHolder description;
-
- private List mSubItems;
- private boolean mCollapsed = true;
-
- public SampleItem withHeader(String header) {
- this.header = header;
- return this;
- }
-
- public SampleItem withName(String Name) {
- this.name = new StringHolder(Name);
- return this;
- }
-
- public SampleItem withName(@StringRes int NameRes) {
- this.name = new StringHolder(NameRes);
- return this;
- }
-
- public SampleItem withDescription(String description) {
- this.description = new StringHolder(description);
- return this;
- }
-
- public SampleItem withDescription(@StringRes int descriptionRes) {
- this.description = new StringHolder(descriptionRes);
- return this;
- }
-
- @Override
- public boolean isCollapsed() {
- return mCollapsed;
- }
-
- @Override
- public SampleItem withCollapsed(boolean collapsed) {
- mCollapsed = collapsed;
- return this;
- }
-
- @Override
- public List getSubItems() {
- return mSubItems;
- }
-
- public SampleItem withSubItems(List subItems) {
- this.mSubItems = subItems;
- return this;
- }
-
- @Override
- public int getType() {
- return R.id.fastadapter_sampleitem_id;
- }
-
- @Override
- public int getLayoutRes() {
- return R.layout.sample_item;
- }
-
- @Override
- public void bindView(RecyclerView.ViewHolder holder) {
- Context ctx = holder.itemView.getContext();
- //get our viewHolder
- ViewHolder viewHolder = (ViewHolder) holder;
-
- //set the item selected if it is
- viewHolder.itemView.setSelected(isSelected());
- //set itself as tag. (not required)
- viewHolder.itemView.setTag(this);
-
- //set the background for the item
- UIUtils.setBackground(viewHolder.view, FastAdapterUIUtils.getSelectableBackground(ctx, UIUtils.getThemeColor(ctx, R.attr.colorPrimary)));
- //set the text for the name
- StringHolder.applyTo(name, viewHolder.name);
- //set the text for the description or hide
- StringHolder.applyToOrHide(description, viewHolder.description);
- }
-
- @Override
- public ViewHolderFactory getFactory() {
- return new ItemFactory();
- }
-
- public static class ItemFactory implements ViewHolderFactory {
- public ViewHolder create(View v) {
- return new ViewHolder(v);
- }
- }
-
- protected static class ViewHolder extends RecyclerView.ViewHolder {
- protected View view;
- @Bind(R.id.material_drawer_name)
- TextView name;
- @Bind(R.id.material_drawer_description)
- TextView description;
-
- public ViewHolder(View view) {
- super(view);
- ButterKnife.bind(this, view);
- this.view = view;
- }
- }
-}
diff --git a/app/src/main/res/layout/sample_item.xml b/app/src/main/res/layout/sample_item.xml
deleted file mode 100755
index f7dda3a..0000000
--- a/app/src/main/res/layout/sample_item.xml
+++ /dev/null
@@ -1,36 +0,0 @@
-
-
-
-
-
-
-
\ No newline at end of file
diff --git a/gradle.properties b/gradle.properties
index 0c11840..22d6f80 100644
--- a/gradle.properties
+++ b/gradle.properties
@@ -19,8 +19,8 @@ org.gradle.daemon=true
org.gradle.parallel=true
# Maven stuff
-VERSION_NAME=0.1.0-SNAPSHOT
-VERSION_CODE=10
+VERSION_NAME=0.2.0-SNAPSHOT
+VERSION_CODE=20
GROUP=com.mikepenz
POM_DESCRIPTION=ItemAnimators Library
diff --git a/library/build.gradle b/library/build.gradle
index 50db719..8ca8826 100644
--- a/library/build.gradle
+++ b/library/build.gradle
@@ -8,8 +8,8 @@ android {
defaultConfig {
minSdkVersion 10
targetSdkVersion 23
- versionCode 10
- versionName '0.1.0-SNAPSHOT'
+ versionCode 20
+ versionName '0.2.0-SNAPSHOT'
}
buildTypes {
release {
diff --git a/library/src/main/java/com/mikepenz/itemanimators/BaseItemAnimator.java b/library/src/main/java/com/mikepenz/itemanimators/BaseItemAnimator.java
index d75a370..eb1203a 100644
--- a/library/src/main/java/com/mikepenz/itemanimators/BaseItemAnimator.java
+++ b/library/src/main/java/com/mikepenz/itemanimators/BaseItemAnimator.java
@@ -239,8 +239,7 @@ public boolean animateRemove(final ViewHolder holder) {
}
private void animateRemoveImpl(final ViewHolder holder) {
- final View view = holder.itemView;
- final ViewPropertyAnimatorCompat animation = removeAnimation(view);
+ final ViewPropertyAnimatorCompat animation = removeAnimation(holder);
mRemoveAnimations.add(holder);
animation.setListener(new VpaListenerAdapter() {
@Override
@@ -251,7 +250,7 @@ public void onAnimationStart(View view) {
@Override
public void onAnimationEnd(View view) {
animation.setListener(null);
- removeAnimationCleanup(view);
+ removeAnimationCleanup(holder);
dispatchRemoveFinished(holder);
mRemoveAnimations.remove(holder);
dispatchFinishedWhenDone();
@@ -259,21 +258,20 @@ public void onAnimationEnd(View view) {
}).start();
}
- abstract public ViewPropertyAnimatorCompat removeAnimation(View view);
+ abstract public ViewPropertyAnimatorCompat removeAnimation(ViewHolder holder);
- abstract public void removeAnimationCleanup(View view);
+ abstract public void removeAnimationCleanup(ViewHolder holder);
@Override
public boolean animateAdd(final ViewHolder holder) {
resetAnimation(holder);
- addAnimationPrepare(holder.itemView);
+ addAnimationPrepare(holder);
mPendingAdditions.add(holder);
return true;
}
private void animateAddImpl(final ViewHolder holder) {
- final View view = holder.itemView;
- final ViewPropertyAnimatorCompat animation = addAnimation(view);
+ final ViewPropertyAnimatorCompat animation = addAnimation(holder);
mAddAnimations.add(holder);
animation.
setListener(new VpaListenerAdapter() {
@@ -284,7 +282,7 @@ public void onAnimationStart(View view) {
@Override
public void onAnimationCancel(View view) {
- addAnimationCleanup(view);
+ addAnimationCleanup(holder);
}
@Override
@@ -293,6 +291,7 @@ public void onAnimationEnd(View view) {
dispatchAddFinished(holder);
mAddAnimations.remove(holder);
dispatchFinishedWhenDone();
+ addAnimationCleanup(holder);
}
}).start();
}
@@ -300,24 +299,24 @@ public void onAnimationEnd(View view) {
/**
* the animation to prepare the view before the add animation is run
*
- * @param view
+ * @param holder
*/
- abstract public void addAnimationPrepare(View view);
+ abstract public void addAnimationPrepare(ViewHolder holder);
/**
* the animation for adding a view
*
- * @param view
+ * @param holder
* @return
*/
- abstract public ViewPropertyAnimatorCompat addAnimation(View view);
+ abstract public ViewPropertyAnimatorCompat addAnimation(ViewHolder holder);
/**
* the cleanup method if the animation needs to be stopped. and tro prepare for the next view
*
- * @param view
+ * @param holder
*/
- abstract void addAnimationCleanup(View view);
+ abstract void addAnimationCleanup(ViewHolder holder);
@Override
public boolean animateMove(final ViewHolder holder, int fromX, int fromY,
@@ -403,7 +402,7 @@ private void animateChangeImpl(final ChangeInfo changeInfo) {
final ViewHolder newHolder = changeInfo.newHolder;
final View newView = newHolder != null ? newHolder.itemView : null;
if (view != null) {
- final ViewPropertyAnimatorCompat oldViewAnim = changeOldAnimation(view, changeInfo);
+ final ViewPropertyAnimatorCompat oldViewAnim = changeOldAnimation(holder, changeInfo);
mChangeAnimations.add(changeInfo.oldHolder);
oldViewAnim.setListener(new VpaListenerAdapter() {
@Override
@@ -414,7 +413,7 @@ public void onAnimationStart(View view) {
@Override
public void onAnimationEnd(View view) {
oldViewAnim.setListener(null);
- changeAnimationCleanup(view);
+ changeAnimationCleanup(holder);
ViewCompat.setTranslationX(view, 0);
ViewCompat.setTranslationY(view, 0);
dispatchChangeFinished(changeInfo.oldHolder, true);
@@ -424,7 +423,7 @@ public void onAnimationEnd(View view) {
}).start();
}
if (newView != null) {
- final ViewPropertyAnimatorCompat newViewAnimation = changeNewAnimation(newView);
+ final ViewPropertyAnimatorCompat newViewAnimation = changeNewAnimation(newHolder);
mChangeAnimations.add(changeInfo.newHolder);
newViewAnimation.setListener(new VpaListenerAdapter() {
@Override
@@ -435,7 +434,7 @@ public void onAnimationStart(View view) {
@Override
public void onAnimationEnd(View view) {
newViewAnimation.setListener(null);
- changeAnimationCleanup(newView);
+ changeAnimationCleanup(newHolder);
ViewCompat.setTranslationX(newView, 0);
ViewCompat.setTranslationY(newView, 0);
dispatchChangeFinished(changeInfo.newHolder, false);
@@ -480,25 +479,25 @@ public void changeAnimation(ViewHolder oldHolder, ViewHolder newHolder, int from
/**
* the animation for removing the old view
*
- * @param view
+ * @param holder
* @return
*/
- abstract public ViewPropertyAnimatorCompat changeOldAnimation(View view, ChangeInfo changeInfo);
+ abstract public ViewPropertyAnimatorCompat changeOldAnimation(ViewHolder holder, ChangeInfo changeInfo);
/**
* the animation for changing the new view
*
- * @param view
+ * @param holder
* @return
*/
- abstract public ViewPropertyAnimatorCompat changeNewAnimation(View view);
+ abstract public ViewPropertyAnimatorCompat changeNewAnimation(ViewHolder holder);
/**
* the cleanup method if the animation needs to be stopped. and tro prepare for the next view
*
- * @param view
+ * @param holder
*/
- abstract public void changeAnimationCleanup(View view);
+ abstract public void changeAnimationCleanup(ViewHolder holder);
private void endChangeAnimation(List infoList, ViewHolder item) {
for (int i = infoList.size() - 1; i >= 0; i--) {
@@ -530,7 +529,7 @@ private boolean endChangeAnimationIfNecessary(ChangeInfo changeInfo, ViewHolder
} else {
return false;
}
- changeAnimationCleanup(item.itemView);
+ changeAnimationCleanup(item);
ViewCompat.setTranslationX(item.itemView, 0);
ViewCompat.setTranslationY(item.itemView, 0);
dispatchChangeFinished(item, oldItem);
@@ -538,7 +537,7 @@ private boolean endChangeAnimationIfNecessary(ChangeInfo changeInfo, ViewHolder
}
@Override
- public void endAnimation(ViewHolder item) {
+ public void endAnimation(final ViewHolder item) {
final View view = item.itemView;
// this will trigger end callback which should set properties to their target values.
ViewCompat.animate(view).cancel();
@@ -554,11 +553,11 @@ public void endAnimation(ViewHolder item) {
}
endChangeAnimation(mPendingChanges, item);
if (mPendingRemovals.remove(item)) {
- removeAnimationCleanup(view);
+ removeAnimationCleanup(item);
dispatchRemoveFinished(item);
}
if (mPendingAdditions.remove(item)) {
- addAnimationCleanup(view);
+ addAnimationCleanup(item);
dispatchAddFinished(item);
}
@@ -588,7 +587,7 @@ public void endAnimation(ViewHolder item) {
for (int i = mAdditionsList.size() - 1; i >= 0; i--) {
ArrayList additions = mAdditionsList.get(i);
if (additions.remove(item)) {
- addAnimationCleanup(view);
+ addAnimationCleanup(item);
dispatchAddFinished(item);
if (additions.isEmpty()) {
mAdditionsList.remove(i);
@@ -675,7 +674,7 @@ public void endAnimations() {
for (int i = count - 1; i >= 0; i--) {
ViewHolder item = mPendingAdditions.get(i);
View view = item.itemView;
- addAnimationCleanup(view);
+ addAnimationCleanup(item);
dispatchAddFinished(item);
mPendingAdditions.remove(i);
}
@@ -712,7 +711,7 @@ public void endAnimations() {
for (int j = count - 1; j >= 0; j--) {
ViewHolder item = additions.get(j);
View view = item.itemView;
- addAnimationCleanup(view);
+ addAnimationCleanup(item);
dispatchAddFinished(item);
additions.remove(j);
if (additions.isEmpty()) {
diff --git a/library/src/main/java/com/mikepenz/itemanimators/BaseScaleAnimator.java b/library/src/main/java/com/mikepenz/itemanimators/BaseScaleAnimator.java
index 163f42d..ccd62ce 100644
--- a/library/src/main/java/com/mikepenz/itemanimators/BaseScaleAnimator.java
+++ b/library/src/main/java/com/mikepenz/itemanimators/BaseScaleAnimator.java
@@ -2,7 +2,6 @@
import android.support.v4.view.ViewCompat;
import android.support.v7.widget.RecyclerView;
-import android.view.View;
/**
* Created by mikepenz on 08.01.16.
@@ -11,7 +10,7 @@ public abstract class BaseScaleAnimator extends BaseItemAnimator {
public void changeAnimation(RecyclerView.ViewHolder oldHolder, RecyclerView.ViewHolder newHolder, int fromX, int fromY, int toX, int toY) {
final float prevTranslationX = ViewCompat.getTranslationX(oldHolder.itemView);
final float prevTranslationY = ViewCompat.getTranslationY(oldHolder.itemView);
- final float prevValue = changeAnimationPrepare1(oldHolder.itemView);
+ final float prevValue = changeAnimationPrepare1(oldHolder);
resetAnimation(oldHolder);
int deltaX = (int) (toX - fromX - prevTranslationX);
int deltaY = (int) (toY - fromY - prevTranslationY);
@@ -19,34 +18,34 @@ public void changeAnimation(RecyclerView.ViewHolder oldHolder, RecyclerView.View
ViewCompat.setTranslationX(oldHolder.itemView, prevTranslationX);
ViewCompat.setTranslationY(oldHolder.itemView, prevTranslationY);
- changeAnimationPrepare2(oldHolder.itemView, prevValue);
+ changeAnimationPrepare2(oldHolder, prevValue);
if (newHolder != null) {
// carry over translation values
resetAnimation(newHolder);
ViewCompat.setTranslationX(newHolder.itemView, -deltaX);
ViewCompat.setTranslationY(newHolder.itemView, -deltaY);
- changeAnimationPrepare3(newHolder.itemView);
+ changeAnimationPrepare3(newHolder);
}
}
/**
- * @param view
+ * @param holder
* @return the default value for the animatd attribute
*/
- abstract public float changeAnimationPrepare1(View view);
+ abstract public float changeAnimationPrepare1(RecyclerView.ViewHolder holder);
/**
* animates the view to the previous default value
*
- * @param view
+ * @param holder
* @param prevValue the previous value
*/
- abstract public void changeAnimationPrepare2(View view, float prevValue);
+ abstract public void changeAnimationPrepare2(RecyclerView.ViewHolder holder, float prevValue);
/**
* resets the value
*
- * @param view
+ * @param holder
*/
- abstract public void changeAnimationPrepare3(View view);
+ abstract public void changeAnimationPrepare3(RecyclerView.ViewHolder holder);
}
diff --git a/library/src/main/java/com/mikepenz/itemanimators/DefaultAnimator.java b/library/src/main/java/com/mikepenz/itemanimators/DefaultAnimator.java
index 62a32b2..aaa29d5 100644
--- a/library/src/main/java/com/mikepenz/itemanimators/DefaultAnimator.java
+++ b/library/src/main/java/com/mikepenz/itemanimators/DefaultAnimator.java
@@ -1,8 +1,9 @@
package com.mikepenz.itemanimators;
+
import android.support.v4.view.ViewCompat;
import android.support.v4.view.ViewPropertyAnimatorCompat;
-import android.view.View;
+import android.support.v7.widget.RecyclerView;
/**
* Created by mikepenz on 08.01.16.
@@ -10,38 +11,38 @@
public class DefaultAnimator extends BaseItemAnimator {
// ADD ANIMATION METHODS
- public void addAnimationPrepare(View view) {
- ViewCompat.setAlpha(view, 0);
+ public void addAnimationPrepare(RecyclerView.ViewHolder holder) {
+ ViewCompat.setAlpha(holder.itemView, 0);
}
- public ViewPropertyAnimatorCompat addAnimation(View view) {
- return ViewCompat.animate(view).alpha(1).setDuration(getAddDuration()).setInterpolator(getInterpolator());
+ public ViewPropertyAnimatorCompat addAnimation(RecyclerView.ViewHolder holder) {
+ return ViewCompat.animate(holder.itemView).alpha(1).setDuration(getAddDuration()).setInterpolator(getInterpolator());
}
- public void addAnimationCleanup(View view) {
- ViewCompat.setAlpha(view, 1);
+ public void addAnimationCleanup(RecyclerView.ViewHolder holder) {
+ ViewCompat.setAlpha(holder.itemView, 1);
}
// REMOVE ANIMATION METHODS
- public ViewPropertyAnimatorCompat removeAnimation(View view) {
- return ViewCompat.animate(view).setDuration(getRemoveDuration()).alpha(0).setInterpolator(getInterpolator());
+ public ViewPropertyAnimatorCompat removeAnimation(RecyclerView.ViewHolder holder) {
+ return ViewCompat.animate(holder.itemView).setDuration(getRemoveDuration()).alpha(0).setInterpolator(getInterpolator());
}
- public void removeAnimationCleanup(View view) {
- ViewCompat.setAlpha(view, 1);
+ public void removeAnimationCleanup(RecyclerView.ViewHolder holder) {
+ ViewCompat.setAlpha(holder.itemView, 1);
}
// CHANGE ANIMATION METHODS
- public ViewPropertyAnimatorCompat changeOldAnimation(View view, ChangeInfo changeInfo) {
- return ViewCompat.animate(view).setDuration(getChangeDuration()).alpha(0).translationX(changeInfo.toX - changeInfo.fromX).translationY(changeInfo.toY - changeInfo.fromY).setInterpolator(getInterpolator());
+ public ViewPropertyAnimatorCompat changeOldAnimation(RecyclerView.ViewHolder holder, ChangeInfo changeInfo) {
+ return ViewCompat.animate(holder.itemView).setDuration(getChangeDuration()).alpha(0).translationX(changeInfo.toX - changeInfo.fromX).translationY(changeInfo.toY - changeInfo.fromY).setInterpolator(getInterpolator());
}
- public ViewPropertyAnimatorCompat changeNewAnimation(View view) {
- return ViewCompat.animate(view).translationX(0).translationY(0).setDuration(getChangeDuration()).alpha(1).setInterpolator(getInterpolator());
+ public ViewPropertyAnimatorCompat changeNewAnimation(RecyclerView.ViewHolder holder) {
+ return ViewCompat.animate(holder.itemView).translationX(0).translationY(0).setDuration(getChangeDuration()).alpha(1).setInterpolator(getInterpolator());
}
- public void changeAnimationCleanup(View view) {
- ViewCompat.setAlpha(view, 1);
+ public void changeAnimationCleanup(RecyclerView.ViewHolder holder) {
+ ViewCompat.setAlpha(holder.itemView, 1);
}
}
diff --git a/library/src/main/java/com/mikepenz/itemanimators/ScaleUpAnimator.java b/library/src/main/java/com/mikepenz/itemanimators/ScaleUpAnimator.java
index d851ee4..25d891e 100644
--- a/library/src/main/java/com/mikepenz/itemanimators/ScaleUpAnimator.java
+++ b/library/src/main/java/com/mikepenz/itemanimators/ScaleUpAnimator.java
@@ -2,59 +2,59 @@
import android.support.v4.view.ViewCompat;
import android.support.v4.view.ViewPropertyAnimatorCompat;
-import android.view.View;
+import android.support.v7.widget.RecyclerView;
/**
* Created by mikepenz on 08.01.16.
*/
public class ScaleUpAnimator extends BaseScaleAnimator {
- public void addAnimationPrepare(View view) {
- ViewCompat.setScaleX(view, 0);
- ViewCompat.setScaleY(view, 0);
+ public void addAnimationPrepare(RecyclerView.ViewHolder holder) {
+ ViewCompat.setScaleX(holder.itemView, 0);
+ ViewCompat.setScaleY(holder.itemView, 0);
}
- public ViewPropertyAnimatorCompat addAnimation(View view) {
- return ViewCompat.animate(view).scaleX(1).scaleY(1).setDuration(getAddDuration()).setInterpolator(getInterpolator());
+ public ViewPropertyAnimatorCompat addAnimation(RecyclerView.ViewHolder holder) {
+ return ViewCompat.animate(holder.itemView).scaleX(1).scaleY(1).setDuration(getAddDuration()).setInterpolator(getInterpolator());
}
- public void addAnimationCleanup(View view) {
- ViewCompat.setScaleX(view, 1);
- ViewCompat.setScaleY(view, 1);
+ public void addAnimationCleanup(RecyclerView.ViewHolder holder) {
+ ViewCompat.setScaleX(holder.itemView, 1);
+ ViewCompat.setScaleY(holder.itemView, 1);
}
- public ViewPropertyAnimatorCompat removeAnimation(View view) {
- return ViewCompat.animate(view).setDuration(getRemoveDuration()).scaleX(0).scaleY(0).setInterpolator(getInterpolator());
+ public ViewPropertyAnimatorCompat removeAnimation(RecyclerView.ViewHolder holder) {
+ return ViewCompat.animate(holder.itemView).setDuration(getRemoveDuration()).scaleX(0).scaleY(0).setInterpolator(getInterpolator());
}
- public void removeAnimationCleanup(View view) {
- ViewCompat.setScaleX(view, 1);
- ViewCompat.setScaleY(view, 1);
+ public void removeAnimationCleanup(RecyclerView.ViewHolder holder) {
+ ViewCompat.setScaleX(holder.itemView, 1);
+ ViewCompat.setScaleY(holder.itemView, 1);
}
- public float changeAnimationPrepare1(View view) {
- return ViewCompat.getScaleX(view);
+ public float changeAnimationPrepare1(RecyclerView.ViewHolder holder) {
+ return ViewCompat.getScaleX(holder.itemView);
}
- public void changeAnimationPrepare2(View view, float prevValue) {
- ViewCompat.setScaleX(view, prevValue);
+ public void changeAnimationPrepare2(RecyclerView.ViewHolder holder, float prevValue) {
+ ViewCompat.setScaleX(holder.itemView, prevValue);
}
- public void changeAnimationPrepare3(View view) {
- ViewCompat.setScaleX(view, 0);
- ViewCompat.setScaleY(view, 0);
+ public void changeAnimationPrepare3(RecyclerView.ViewHolder holder) {
+ ViewCompat.setScaleX(holder.itemView, 0);
+ ViewCompat.setScaleY(holder.itemView, 0);
}
- public ViewPropertyAnimatorCompat changeOldAnimation(View view, ChangeInfo changeInfo) {
- return ViewCompat.animate(view).setDuration(getChangeDuration()).scaleX(0).scaleY(0).translationX(changeInfo.toX - changeInfo.fromX).translationY(changeInfo.toY - changeInfo.fromY).setInterpolator(getInterpolator());
+ public ViewPropertyAnimatorCompat changeOldAnimation(RecyclerView.ViewHolder holder, ChangeInfo changeInfo) {
+ return ViewCompat.animate(holder.itemView).setDuration(getChangeDuration()).scaleX(0).scaleY(0).translationX(changeInfo.toX - changeInfo.fromX).translationY(changeInfo.toY - changeInfo.fromY).setInterpolator(getInterpolator());
}
- public ViewPropertyAnimatorCompat changeNewAnimation(View view) {
- return ViewCompat.animate(view).translationX(0).translationY(0).setDuration(getChangeDuration()).scaleX(1).scaleY(1).setInterpolator(getInterpolator());
+ public ViewPropertyAnimatorCompat changeNewAnimation(RecyclerView.ViewHolder holder) {
+ return ViewCompat.animate(holder.itemView).translationX(0).translationY(0).setDuration(getChangeDuration()).scaleX(1).scaleY(1).setInterpolator(getInterpolator());
}
- public void changeAnimationCleanup(View view) {
- ViewCompat.setScaleX(view, 1);
- ViewCompat.setScaleY(view, 1);
+ public void changeAnimationCleanup(RecyclerView.ViewHolder holder) {
+ ViewCompat.setScaleX(holder.itemView, 1);
+ ViewCompat.setScaleY(holder.itemView, 1);
}
}
diff --git a/library/src/main/java/com/mikepenz/itemanimators/ScaleXAnimator.java b/library/src/main/java/com/mikepenz/itemanimators/ScaleXAnimator.java
index 238448c..eec7078 100644
--- a/library/src/main/java/com/mikepenz/itemanimators/ScaleXAnimator.java
+++ b/library/src/main/java/com/mikepenz/itemanimators/ScaleXAnimator.java
@@ -2,56 +2,56 @@
import android.support.v4.view.ViewCompat;
import android.support.v4.view.ViewPropertyAnimatorCompat;
-import android.view.View;
+import android.support.v7.widget.RecyclerView;
/**
* Created by mikepenz on 08.01.16.
*/
public class ScaleXAnimator extends BaseScaleAnimator {
- public void addAnimationPrepare(View view) {
- ViewCompat.setScaleX(view, 0);
+ public void addAnimationPrepare(RecyclerView.ViewHolder holder) {
+ ViewCompat.setScaleX(holder.itemView, 0);
}
- public ViewPropertyAnimatorCompat addAnimation(View view) {
- return ViewCompat.animate(view).scaleX(1).setDuration(getAddDuration());
+ public ViewPropertyAnimatorCompat addAnimation(RecyclerView.ViewHolder holder) {
+ return ViewCompat.animate(holder.itemView).scaleX(1).setDuration(getAddDuration());
}
- public void addAnimationCleanup(View view) {
- ViewCompat.setScaleX(view, 1);
+ public void addAnimationCleanup(RecyclerView.ViewHolder holder) {
+ ViewCompat.setScaleX(holder.itemView, 1);
}
- public ViewPropertyAnimatorCompat removeAnimation(View view) {
- final ViewPropertyAnimatorCompat animation = ViewCompat.animate(view);
+ public ViewPropertyAnimatorCompat removeAnimation(RecyclerView.ViewHolder holder) {
+ final ViewPropertyAnimatorCompat animation = ViewCompat.animate(holder.itemView);
return animation.setDuration(getRemoveDuration()).scaleX(0);
}
- public void removeAnimationCleanup(View view) {
- ViewCompat.setScaleX(view, 1);
+ public void removeAnimationCleanup(RecyclerView.ViewHolder holder) {
+ ViewCompat.setScaleX(holder.itemView, 1);
}
- public float changeAnimationPrepare1(View view) {
- return ViewCompat.getScaleX(view);
+ public float changeAnimationPrepare1(RecyclerView.ViewHolder holder) {
+ return ViewCompat.getScaleX(holder.itemView);
}
- public void changeAnimationPrepare2(View view, float prevValue) {
- ViewCompat.setScaleX(view, prevValue);
+ public void changeAnimationPrepare2(RecyclerView.ViewHolder holder, float prevValue) {
+ ViewCompat.setScaleX(holder.itemView, prevValue);
}
- public void changeAnimationPrepare3(View view) {
- ViewCompat.setScaleX(view, 0);
+ public void changeAnimationPrepare3(RecyclerView.ViewHolder holder) {
+ ViewCompat.setScaleX(holder.itemView, 0);
}
- public ViewPropertyAnimatorCompat changeOldAnimation(View view, ChangeInfo changeInfo) {
- return ViewCompat.animate(view).setDuration(getChangeDuration()).scaleX(0).translationX(changeInfo.toX - changeInfo.fromX).translationY(changeInfo.toY - changeInfo.fromY);
+ public ViewPropertyAnimatorCompat changeOldAnimation(RecyclerView.ViewHolder holder, ChangeInfo changeInfo) {
+ return ViewCompat.animate(holder.itemView).setDuration(getChangeDuration()).scaleX(0).translationX(changeInfo.toX - changeInfo.fromX).translationY(changeInfo.toY - changeInfo.fromY);
}
- public ViewPropertyAnimatorCompat changeNewAnimation(View view) {
- return ViewCompat.animate(view).translationX(0).translationY(0).setDuration(getChangeDuration()).scaleX(1);
+ public ViewPropertyAnimatorCompat changeNewAnimation(RecyclerView.ViewHolder holder) {
+ return ViewCompat.animate(holder.itemView).translationX(0).translationY(0).setDuration(getChangeDuration()).scaleX(1);
}
- public void changeAnimationCleanup(View view) {
- ViewCompat.setScaleX(view, 1);
+ public void changeAnimationCleanup(RecyclerView.ViewHolder holder) {
+ ViewCompat.setScaleX(holder.itemView, 1);
}
}
diff --git a/library/src/main/java/com/mikepenz/itemanimators/ScaleYAnimator.java b/library/src/main/java/com/mikepenz/itemanimators/ScaleYAnimator.java
index 09044ab..117a126 100644
--- a/library/src/main/java/com/mikepenz/itemanimators/ScaleYAnimator.java
+++ b/library/src/main/java/com/mikepenz/itemanimators/ScaleYAnimator.java
@@ -2,56 +2,56 @@
import android.support.v4.view.ViewCompat;
import android.support.v4.view.ViewPropertyAnimatorCompat;
-import android.view.View;
+import android.support.v7.widget.RecyclerView;
/**
* Created by mikepenz on 08.01.16.
*/
public class ScaleYAnimator extends BaseScaleAnimator {
- public void addAnimationPrepare(View view) {
- ViewCompat.setScaleY(view, 0);
+ public void addAnimationPrepare(RecyclerView.ViewHolder holder) {
+ ViewCompat.setScaleY(holder.itemView, 0);
}
- public ViewPropertyAnimatorCompat addAnimation(View view) {
- return ViewCompat.animate(view).scaleY(1).setDuration(getAddDuration());
+ public ViewPropertyAnimatorCompat addAnimation(RecyclerView.ViewHolder holder) {
+ return ViewCompat.animate(holder.itemView).scaleY(1).setDuration(getAddDuration());
}
- public void addAnimationCleanup(View view) {
- ViewCompat.setScaleY(view, 1);
+ public void addAnimationCleanup(RecyclerView.ViewHolder holder) {
+ ViewCompat.setScaleY(holder.itemView, 1);
}
- public ViewPropertyAnimatorCompat removeAnimation(View view) {
- final ViewPropertyAnimatorCompat animation = ViewCompat.animate(view);
+ public ViewPropertyAnimatorCompat removeAnimation(RecyclerView.ViewHolder holder) {
+ final ViewPropertyAnimatorCompat animation = ViewCompat.animate(holder.itemView);
return animation.setDuration(getRemoveDuration()).scaleY(0);
}
- public void removeAnimationCleanup(View view) {
- ViewCompat.setScaleY(view, 1);
+ public void removeAnimationCleanup(RecyclerView.ViewHolder holder) {
+ ViewCompat.setScaleY(holder.itemView, 1);
}
- public float changeAnimationPrepare1(View view) {
- return ViewCompat.getScaleY(view);
+ public float changeAnimationPrepare1(RecyclerView.ViewHolder holder) {
+ return ViewCompat.getScaleY(holder.itemView);
}
- public void changeAnimationPrepare2(View view, float prevValue) {
- ViewCompat.setScaleY(view, prevValue);
+ public void changeAnimationPrepare2(RecyclerView.ViewHolder holder, float prevValue) {
+ ViewCompat.setScaleY(holder.itemView, prevValue);
}
- public void changeAnimationPrepare3(View view) {
- ViewCompat.setScaleY(view, 0);
+ public void changeAnimationPrepare3(RecyclerView.ViewHolder holder) {
+ ViewCompat.setScaleY(holder.itemView, 0);
}
- public ViewPropertyAnimatorCompat changeOldAnimation(View view, ChangeInfo changeInfo) {
- return ViewCompat.animate(view).setDuration(getChangeDuration()).scaleY(0).translationX(changeInfo.toX - changeInfo.fromX).translationY(changeInfo.toY - changeInfo.fromY);
+ public ViewPropertyAnimatorCompat changeOldAnimation(RecyclerView.ViewHolder holder, ChangeInfo changeInfo) {
+ return ViewCompat.animate(holder.itemView).setDuration(getChangeDuration()).scaleY(0).translationX(changeInfo.toX - changeInfo.fromX).translationY(changeInfo.toY - changeInfo.fromY);
}
- public ViewPropertyAnimatorCompat changeNewAnimation(View view) {
- return ViewCompat.animate(view).translationX(0).translationY(0).setDuration(getChangeDuration()).scaleY(1);
+ public ViewPropertyAnimatorCompat changeNewAnimation(RecyclerView.ViewHolder holder) {
+ return ViewCompat.animate(holder.itemView).translationX(0).translationY(0).setDuration(getChangeDuration()).scaleY(1);
}
- public void changeAnimationCleanup(View view) {
- ViewCompat.setScaleY(view, 1);
+ public void changeAnimationCleanup(RecyclerView.ViewHolder holder) {
+ ViewCompat.setScaleY(holder.itemView, 1);
}
}
diff --git a/library/src/main/java/com/mikepenz/itemanimators/SlideDownAlphaAnimator.java b/library/src/main/java/com/mikepenz/itemanimators/SlideDownAlphaAnimator.java
index 4492042..4b2436e 100644
--- a/library/src/main/java/com/mikepenz/itemanimators/SlideDownAlphaAnimator.java
+++ b/library/src/main/java/com/mikepenz/itemanimators/SlideDownAlphaAnimator.java
@@ -2,27 +2,27 @@
import android.support.v4.view.ViewCompat;
import android.support.v4.view.ViewPropertyAnimatorCompat;
-import android.view.View;
+import android.support.v7.widget.RecyclerView;
/**
* Created by mikepenz on 08.01.16.
*/
public class SlideDownAlphaAnimator extends DefaultAnimator {
@Override
- public void addAnimationPrepare(View view) {
- ViewCompat.setTranslationY(view, -view.getHeight());
- ViewCompat.setAlpha(view, 0);
+ public void addAnimationPrepare(RecyclerView.ViewHolder holder) {
+ ViewCompat.setTranslationY(holder.itemView, -holder.itemView.getHeight());
+ ViewCompat.setAlpha(holder.itemView, 0);
}
@Override
- public ViewPropertyAnimatorCompat addAnimation(View view) {
- return ViewCompat.animate(view).translationY(0).alpha(1).setDuration(getMoveDuration());
+ public ViewPropertyAnimatorCompat addAnimation(RecyclerView.ViewHolder holder) {
+ return ViewCompat.animate(holder.itemView).translationY(0).alpha(1).setDuration(getMoveDuration()).setInterpolator(getInterpolator());
}
@Override
- public void addAnimationCleanup(View view) {
- ViewCompat.setTranslationY(view, 0);
- ViewCompat.setAlpha(view, 1);
+ public void addAnimationCleanup(RecyclerView.ViewHolder holder) {
+ ViewCompat.setTranslationY(holder.itemView, 0);
+ ViewCompat.setAlpha(holder.itemView, 1);
}
@Override
@@ -36,14 +36,14 @@ public long getRemoveDelay(long remove, long move, long change) {
}
@Override
- public ViewPropertyAnimatorCompat removeAnimation(View view) {
- final ViewPropertyAnimatorCompat animation = ViewCompat.animate(view);
- return animation.setDuration(getMoveDuration()).alpha(0).translationY(-view.getHeight());
+ public ViewPropertyAnimatorCompat removeAnimation(RecyclerView.ViewHolder holder) {
+ final ViewPropertyAnimatorCompat animation = ViewCompat.animate(holder.itemView);
+ return animation.setDuration(getRemoveDuration()).alpha(0).translationY(-holder.itemView.getHeight()).setInterpolator(getInterpolator());
}
@Override
- public void removeAnimationCleanup(View view) {
- ViewCompat.setTranslationY(view, 0);
- ViewCompat.setAlpha(view, 1);
+ public void removeAnimationCleanup(RecyclerView.ViewHolder holder) {
+ ViewCompat.setTranslationY(holder.itemView, 0);
+ ViewCompat.setAlpha(holder.itemView, 1);
}
}
diff --git a/library/src/main/java/com/mikepenz/itemanimators/SlideInOutBottomAnimator.java b/library/src/main/java/com/mikepenz/itemanimators/SlideInOutBottomAnimator.java
new file mode 100644
index 0000000..97ce780
--- /dev/null
+++ b/library/src/main/java/com/mikepenz/itemanimators/SlideInOutBottomAnimator.java
@@ -0,0 +1,70 @@
+package com.mikepenz.itemanimators;
+
+import android.support.v4.view.ViewCompat;
+import android.support.v4.view.ViewPropertyAnimatorCompat;
+import android.support.v7.widget.RecyclerView;
+import android.view.View;
+
+/**
+ * Created by mikepenz on 08.01.16.
+ * Base for this animator thanks to @gabrielemariotti - https://github.com/gabrielemariotti/RecyclerViewItemAnimators
+ */
+public class SlideInOutBottomAnimator extends DefaultAnimator {
+
+ private float mDeltaY;
+ private RecyclerView mRecyclerView;
+
+ public SlideInOutBottomAnimator(RecyclerView recyclerView) {
+ mRecyclerView = recyclerView;
+ }
+
+ @Override
+ public void addAnimationPrepare(RecyclerView.ViewHolder holder) {
+ retrieveItemPosition(holder);
+ ViewCompat.setTranslationY(holder.itemView, -mDeltaY);
+ ViewCompat.setTranslationZ(holder.itemView, 100);
+ }
+
+ @Override
+ public ViewPropertyAnimatorCompat addAnimation(RecyclerView.ViewHolder holder) {
+ final View view = holder.itemView;
+ return ViewCompat.animate(view).translationY(0).alpha(1).setDuration(getAddDuration());
+ }
+
+ @Override
+ public void addAnimationCleanup(RecyclerView.ViewHolder holder) {
+ ViewCompat.setAlpha(holder.itemView, 1);
+ ViewCompat.setTranslationY(holder.itemView, 0);
+ ViewCompat.setTranslationZ(holder.itemView, 1);
+ }
+
+ @Override
+ public ViewPropertyAnimatorCompat removeAnimation(RecyclerView.ViewHolder holder) {
+ ViewCompat.setTranslationZ(holder.itemView, 100);
+ final ViewPropertyAnimatorCompat animation = ViewCompat.animate(holder.itemView);
+ return animation.setDuration(getRemoveDuration()).alpha(0).translationY(-mDeltaY);
+ }
+
+ @Override
+ public void removeAnimationCleanup(RecyclerView.ViewHolder holder) {
+ ViewCompat.setTranslationY(holder.itemView, 0);
+ ViewCompat.setAlpha(holder.itemView, 1);
+ ViewCompat.setTranslationZ(holder.itemView, 1);
+ }
+
+
+ private void retrieveItemPosition(final RecyclerView.ViewHolder holder) {
+ mDeltaY = mRecyclerView.getHeight() - mRecyclerView.getLayoutManager().getDecoratedTop(holder.itemView);
+ }
+
+ @Override
+ public long getAddDelay(long remove, long move, long change) {
+ return 0;
+ }
+
+ @Override
+ public long getRemoveDelay(long remove, long move, long change) {
+ return remove / 2;
+ }
+
+}
diff --git a/library/src/main/java/com/mikepenz/itemanimators/SlideInOutLeftAnimator.java b/library/src/main/java/com/mikepenz/itemanimators/SlideInOutLeftAnimator.java
new file mode 100644
index 0000000..57fe6e1
--- /dev/null
+++ b/library/src/main/java/com/mikepenz/itemanimators/SlideInOutLeftAnimator.java
@@ -0,0 +1,70 @@
+package com.mikepenz.itemanimators;
+
+import android.support.v4.view.ViewCompat;
+import android.support.v4.view.ViewPropertyAnimatorCompat;
+import android.support.v7.widget.RecyclerView;
+import android.view.View;
+
+/**
+ * Created by mikepenz on 08.01.16.
+ * Base for this animator thanks to @gabrielemariotti - https://github.com/gabrielemariotti/RecyclerViewItemAnimators
+ */
+public class SlideInOutLeftAnimator extends DefaultAnimator {
+
+ private float mDeltaX;
+ private RecyclerView mRecyclerView;
+
+ public SlideInOutLeftAnimator(RecyclerView recyclerView) {
+ mRecyclerView = recyclerView;
+ }
+
+ @Override
+ public void addAnimationPrepare(RecyclerView.ViewHolder holder) {
+ retrieveItemPosition(holder);
+ ViewCompat.setTranslationX(holder.itemView, -mDeltaX);
+ ViewCompat.setTranslationZ(holder.itemView, 100);
+ }
+
+ @Override
+ public ViewPropertyAnimatorCompat addAnimation(RecyclerView.ViewHolder holder) {
+ final View view = holder.itemView;
+ return ViewCompat.animate(view).translationX(0).alpha(1).setDuration(getAddDuration());
+ }
+
+ @Override
+ public void addAnimationCleanup(RecyclerView.ViewHolder holder) {
+ ViewCompat.setAlpha(holder.itemView, 1);
+ ViewCompat.setTranslationX(holder.itemView, 0);
+ ViewCompat.setTranslationZ(holder.itemView, 1);
+ }
+
+ @Override
+ public ViewPropertyAnimatorCompat removeAnimation(RecyclerView.ViewHolder holder) {
+ ViewCompat.setTranslationZ(holder.itemView, 100);
+ final ViewPropertyAnimatorCompat animation = ViewCompat.animate(holder.itemView);
+ return animation.setDuration(getRemoveDuration()).alpha(0).translationX(-mDeltaX);
+ }
+
+ @Override
+ public void removeAnimationCleanup(RecyclerView.ViewHolder holder) {
+ ViewCompat.setTranslationX(holder.itemView, 0);
+ ViewCompat.setAlpha(holder.itemView, 1);
+ ViewCompat.setTranslationZ(holder.itemView, 1);
+ }
+
+
+ private void retrieveItemPosition(final RecyclerView.ViewHolder holder) {
+ mDeltaX = mRecyclerView.getWidth() - mRecyclerView.getLayoutManager().getDecoratedLeft(holder.itemView);
+ }
+
+ @Override
+ public long getAddDelay(long remove, long move, long change) {
+ return 0;
+ }
+
+ @Override
+ public long getRemoveDelay(long remove, long move, long change) {
+ return remove / 2;
+ }
+
+}
diff --git a/library/src/main/java/com/mikepenz/itemanimators/SlideInOutRightAnimator.java b/library/src/main/java/com/mikepenz/itemanimators/SlideInOutRightAnimator.java
new file mode 100644
index 0000000..430c929
--- /dev/null
+++ b/library/src/main/java/com/mikepenz/itemanimators/SlideInOutRightAnimator.java
@@ -0,0 +1,70 @@
+package com.mikepenz.itemanimators;
+
+import android.support.v4.view.ViewCompat;
+import android.support.v4.view.ViewPropertyAnimatorCompat;
+import android.support.v7.widget.RecyclerView;
+import android.view.View;
+
+/**
+ * Created by mikepenz on 08.01.16.
+ * Base for this animator thanks to @gabrielemariotti - https://github.com/gabrielemariotti/RecyclerViewItemAnimators
+ */
+public class SlideInOutRightAnimator extends DefaultAnimator {
+
+ private float mDeltaX;
+ private RecyclerView mRecyclerView;
+
+ public SlideInOutRightAnimator(RecyclerView recyclerView) {
+ mRecyclerView = recyclerView;
+ }
+
+ @Override
+ public void addAnimationPrepare(RecyclerView.ViewHolder holder) {
+ retrieveItemPosition(holder);
+ ViewCompat.setTranslationX(holder.itemView, +mDeltaX);
+ ViewCompat.setTranslationZ(holder.itemView, 100);
+ }
+
+ @Override
+ public ViewPropertyAnimatorCompat addAnimation(RecyclerView.ViewHolder holder) {
+ final View view = holder.itemView;
+ return ViewCompat.animate(view).translationX(0).alpha(1).setDuration(getAddDuration());
+ }
+
+ @Override
+ public void addAnimationCleanup(RecyclerView.ViewHolder holder) {
+ ViewCompat.setAlpha(holder.itemView, 1);
+ ViewCompat.setTranslationX(holder.itemView, 0);
+ ViewCompat.setTranslationZ(holder.itemView, 1);
+ }
+
+ @Override
+ public ViewPropertyAnimatorCompat removeAnimation(RecyclerView.ViewHolder holder) {
+ ViewCompat.setTranslationZ(holder.itemView, 100);
+ final ViewPropertyAnimatorCompat animation = ViewCompat.animate(holder.itemView);
+ return animation.setDuration(getRemoveDuration()).alpha(0).translationX(+mDeltaX);
+ }
+
+ @Override
+ public void removeAnimationCleanup(RecyclerView.ViewHolder holder) {
+ ViewCompat.setTranslationX(holder.itemView, 0);
+ ViewCompat.setAlpha(holder.itemView, 1);
+ ViewCompat.setTranslationZ(holder.itemView, 1);
+ }
+
+
+ private void retrieveItemPosition(final RecyclerView.ViewHolder holder) {
+ mDeltaX = mRecyclerView.getWidth() - mRecyclerView.getLayoutManager().getDecoratedLeft(holder.itemView);
+ }
+
+ @Override
+ public long getAddDelay(long remove, long move, long change) {
+ return 0;
+ }
+
+ @Override
+ public long getRemoveDelay(long remove, long move, long change) {
+ return remove / 2;
+ }
+
+}
diff --git a/library/src/main/java/com/mikepenz/itemanimators/SlideInOutTopAnimator.java b/library/src/main/java/com/mikepenz/itemanimators/SlideInOutTopAnimator.java
new file mode 100644
index 0000000..5f2de16
--- /dev/null
+++ b/library/src/main/java/com/mikepenz/itemanimators/SlideInOutTopAnimator.java
@@ -0,0 +1,70 @@
+package com.mikepenz.itemanimators;
+
+import android.support.v4.view.ViewCompat;
+import android.support.v4.view.ViewPropertyAnimatorCompat;
+import android.support.v7.widget.RecyclerView;
+import android.view.View;
+
+/**
+ * Created by mikepenz on 08.01.16.
+ * Base for this animator thanks to @gabrielemariotti - https://github.com/gabrielemariotti/RecyclerViewItemAnimators
+ */
+public class SlideInOutTopAnimator extends DefaultAnimator {
+
+ private float mDeltaY;
+ private RecyclerView mRecyclerView;
+
+ public SlideInOutTopAnimator(RecyclerView recyclerView) {
+ mRecyclerView = recyclerView;
+ }
+
+ @Override
+ public void addAnimationPrepare(RecyclerView.ViewHolder holder) {
+ retrieveItemPosition(holder);
+ ViewCompat.setTranslationY(holder.itemView, +mDeltaY);
+ ViewCompat.setTranslationZ(holder.itemView, 100);
+ }
+
+ @Override
+ public ViewPropertyAnimatorCompat addAnimation(RecyclerView.ViewHolder holder) {
+ final View view = holder.itemView;
+ return ViewCompat.animate(view).translationY(0).alpha(1).setDuration(getAddDuration());
+ }
+
+ @Override
+ public void addAnimationCleanup(RecyclerView.ViewHolder holder) {
+ ViewCompat.setAlpha(holder.itemView, 1);
+ ViewCompat.setTranslationY(holder.itemView, 0);
+ ViewCompat.setTranslationZ(holder.itemView, 1);
+ }
+
+ @Override
+ public ViewPropertyAnimatorCompat removeAnimation(RecyclerView.ViewHolder holder) {
+ ViewCompat.setTranslationZ(holder.itemView, 100);
+ final ViewPropertyAnimatorCompat animation = ViewCompat.animate(holder.itemView);
+ return animation.setDuration(getRemoveDuration()).alpha(0).translationY(+mDeltaY);
+ }
+
+ @Override
+ public void removeAnimationCleanup(RecyclerView.ViewHolder holder) {
+ ViewCompat.setTranslationY(holder.itemView, 0);
+ ViewCompat.setAlpha(holder.itemView, 1);
+ ViewCompat.setTranslationZ(holder.itemView, 1);
+ }
+
+
+ private void retrieveItemPosition(final RecyclerView.ViewHolder holder) {
+ mDeltaY = mRecyclerView.getHeight() - mRecyclerView.getLayoutManager().getDecoratedTop(holder.itemView);
+ }
+
+ @Override
+ public long getAddDelay(long remove, long move, long change) {
+ return 0;
+ }
+
+ @Override
+ public long getRemoveDelay(long remove, long move, long change) {
+ return remove / 2;
+ }
+
+}
diff --git a/library/src/main/java/com/mikepenz/itemanimators/SlideLeftAlphaAnimator.java b/library/src/main/java/com/mikepenz/itemanimators/SlideLeftAlphaAnimator.java
index 43f0e74..e7179e0 100644
--- a/library/src/main/java/com/mikepenz/itemanimators/SlideLeftAlphaAnimator.java
+++ b/library/src/main/java/com/mikepenz/itemanimators/SlideLeftAlphaAnimator.java
@@ -2,27 +2,27 @@
import android.support.v4.view.ViewCompat;
import android.support.v4.view.ViewPropertyAnimatorCompat;
-import android.view.View;
+import android.support.v7.widget.RecyclerView;
/**
* Created by mikepenz on 08.01.16.
*/
public class SlideLeftAlphaAnimator extends DefaultAnimator {
@Override
- public void addAnimationPrepare(View view) {
- ViewCompat.setTranslationX(view, view.getWidth());
- ViewCompat.setAlpha(view, 0);
+ public void addAnimationPrepare(RecyclerView.ViewHolder holder) {
+ ViewCompat.setTranslationX(holder.itemView, holder.itemView.getWidth());
+ ViewCompat.setAlpha(holder.itemView, 0);
}
@Override
- public ViewPropertyAnimatorCompat addAnimation(View view) {
- return ViewCompat.animate(view).translationX(0).alpha(1).setDuration(getMoveDuration());
+ public ViewPropertyAnimatorCompat addAnimation(RecyclerView.ViewHolder holder) {
+ return ViewCompat.animate(holder.itemView).translationX(0).alpha(1).setDuration(getMoveDuration()).setInterpolator(getInterpolator());
}
@Override
- public void addAnimationCleanup(View view) {
- ViewCompat.setTranslationX(view, 0);
- ViewCompat.setAlpha(view, 1);
+ public void addAnimationCleanup(RecyclerView.ViewHolder holder) {
+ ViewCompat.setTranslationX(holder.itemView, 0);
+ ViewCompat.setAlpha(holder.itemView, 1);
}
@Override
@@ -36,14 +36,14 @@ public long getRemoveDelay(long remove, long move, long change) {
}
@Override
- public ViewPropertyAnimatorCompat removeAnimation(View view) {
- final ViewPropertyAnimatorCompat animation = ViewCompat.animate(view);
- return animation.setDuration(getMoveDuration()).alpha(0).translationX(view.getWidth());
+ public ViewPropertyAnimatorCompat removeAnimation(RecyclerView.ViewHolder holder) {
+ final ViewPropertyAnimatorCompat animation = ViewCompat.animate(holder.itemView);
+ return animation.setDuration(getRemoveDuration()).alpha(0).translationX(holder.itemView.getWidth()).setInterpolator(getInterpolator());
}
@Override
- public void removeAnimationCleanup(View view) {
- ViewCompat.setTranslationX(view, 0);
- ViewCompat.setAlpha(view, 1);
+ public void removeAnimationCleanup(RecyclerView.ViewHolder holder) {
+ ViewCompat.setTranslationX(holder.itemView, 0);
+ ViewCompat.setAlpha(holder.itemView, 1);
}
}
diff --git a/library/src/main/java/com/mikepenz/itemanimators/SlideRightAlphaAnimator.java b/library/src/main/java/com/mikepenz/itemanimators/SlideRightAlphaAnimator.java
index fa132e1..0c7379e 100644
--- a/library/src/main/java/com/mikepenz/itemanimators/SlideRightAlphaAnimator.java
+++ b/library/src/main/java/com/mikepenz/itemanimators/SlideRightAlphaAnimator.java
@@ -2,27 +2,27 @@
import android.support.v4.view.ViewCompat;
import android.support.v4.view.ViewPropertyAnimatorCompat;
-import android.view.View;
+import android.support.v7.widget.RecyclerView;
/**
* Created by mikepenz on 08.01.16.
*/
public class SlideRightAlphaAnimator extends DefaultAnimator {
@Override
- public void addAnimationPrepare(View view) {
- ViewCompat.setTranslationX(view, -view.getWidth());
- ViewCompat.setAlpha(view, 0);
+ public void addAnimationPrepare(RecyclerView.ViewHolder holder) {
+ ViewCompat.setTranslationX(holder.itemView, -holder.itemView.getWidth());
+ ViewCompat.setAlpha(holder.itemView, 0);
}
@Override
- public ViewPropertyAnimatorCompat addAnimation(View view) {
- return ViewCompat.animate(view).translationX(0).alpha(1).setDuration(getMoveDuration());
+ public ViewPropertyAnimatorCompat addAnimation(RecyclerView.ViewHolder holder) {
+ return ViewCompat.animate(holder.itemView).translationX(0).alpha(1).setDuration(getMoveDuration()).setInterpolator(getInterpolator());
}
@Override
- public void addAnimationCleanup(View view) {
- ViewCompat.setTranslationX(view, 0);
- ViewCompat.setAlpha(view, 1);
+ public void addAnimationCleanup(RecyclerView.ViewHolder holder) {
+ ViewCompat.setTranslationX(holder.itemView, 0);
+ ViewCompat.setAlpha(holder.itemView, 1);
}
@Override
@@ -36,14 +36,14 @@ public long getRemoveDelay(long remove, long move, long change) {
}
@Override
- public ViewPropertyAnimatorCompat removeAnimation(View view) {
- final ViewPropertyAnimatorCompat animation = ViewCompat.animate(view);
- return animation.setDuration(getMoveDuration()).alpha(0).translationX(-view.getWidth());
+ public ViewPropertyAnimatorCompat removeAnimation(RecyclerView.ViewHolder holder) {
+ final ViewPropertyAnimatorCompat animation = ViewCompat.animate(holder.itemView);
+ return animation.setDuration(getRemoveDuration()).alpha(0).translationX(-holder.itemView.getWidth()).setInterpolator(getInterpolator());
}
@Override
- public void removeAnimationCleanup(View view) {
- ViewCompat.setTranslationX(view, 0);
- ViewCompat.setAlpha(view, 1);
+ public void removeAnimationCleanup(RecyclerView.ViewHolder holder) {
+ ViewCompat.setTranslationX(holder.itemView, 0);
+ ViewCompat.setAlpha(holder.itemView, 1);
}
}
diff --git a/library/src/main/java/com/mikepenz/itemanimators/SlideUpAlphaAnimator.java b/library/src/main/java/com/mikepenz/itemanimators/SlideUpAlphaAnimator.java
index fc59859..d7d0b62 100644
--- a/library/src/main/java/com/mikepenz/itemanimators/SlideUpAlphaAnimator.java
+++ b/library/src/main/java/com/mikepenz/itemanimators/SlideUpAlphaAnimator.java
@@ -2,27 +2,27 @@
import android.support.v4.view.ViewCompat;
import android.support.v4.view.ViewPropertyAnimatorCompat;
-import android.view.View;
+import android.support.v7.widget.RecyclerView;
/**
* Created by mikepenz on 08.01.16.
*/
public class SlideUpAlphaAnimator extends DefaultAnimator {
@Override
- public void addAnimationPrepare(View view) {
- ViewCompat.setTranslationY(view, view.getHeight());
- ViewCompat.setAlpha(view, 0);
+ public void addAnimationPrepare(RecyclerView.ViewHolder holder) {
+ ViewCompat.setTranslationY(holder.itemView, holder.itemView.getHeight());
+ ViewCompat.setAlpha(holder.itemView, 0);
}
@Override
- public ViewPropertyAnimatorCompat addAnimation(View view) {
- return ViewCompat.animate(view).translationY(0).alpha(1).setDuration(getMoveDuration());
+ public ViewPropertyAnimatorCompat addAnimation(RecyclerView.ViewHolder holder) {
+ return ViewCompat.animate(holder.itemView).translationY(0).alpha(1).setDuration(getMoveDuration()).setInterpolator(getInterpolator());
}
@Override
- public void addAnimationCleanup(View view) {
- ViewCompat.setTranslationY(view, 0);
- ViewCompat.setAlpha(view, 1);
+ public void addAnimationCleanup(RecyclerView.ViewHolder holder) {
+ ViewCompat.setTranslationY(holder.itemView, 0);
+ ViewCompat.setAlpha(holder.itemView, 1);
}
@Override
@@ -36,14 +36,14 @@ public long getRemoveDelay(long remove, long move, long change) {
}
@Override
- public ViewPropertyAnimatorCompat removeAnimation(View view) {
- final ViewPropertyAnimatorCompat animation = ViewCompat.animate(view);
- return animation.setDuration(getMoveDuration()).alpha(0).translationY(view.getHeight());
+ public ViewPropertyAnimatorCompat removeAnimation(RecyclerView.ViewHolder holder) {
+ final ViewPropertyAnimatorCompat animation = ViewCompat.animate(holder.itemView);
+ return animation.setDuration(getRemoveDuration()).alpha(0).translationY(holder.itemView.getHeight()).setInterpolator(getInterpolator());
}
@Override
- public void removeAnimationCleanup(View view) {
- ViewCompat.setTranslationY(view, 0);
- ViewCompat.setAlpha(view, 1);
+ public void removeAnimationCleanup(RecyclerView.ViewHolder holder) {
+ ViewCompat.setTranslationY(holder.itemView, 0);
+ ViewCompat.setAlpha(holder.itemView, 1);
}
}
diff --git a/library/src/main/res/values/library_itemanimators_strings.xml b/library/src/main/res/values/library_itemanimators_strings.xml
index 9eb289a..7d55a4a 100755
--- a/library/src/main/res/values/library_itemanimators_strings.xml
+++ b/library/src/main/res/values/library_itemanimators_strings.xml
@@ -10,7 +10,7 @@
The ItemAnimators library comes with a huge collections of pre-created Animators for your RecyclerView.
]]>
- 0.1.0-SNAPSHOT
+ 0.2.0-SNAPSHOT
https://github.com/mikepenz/itemanimators
apache_2_0
true