白诗秀儿 收藏于2018-05-14 转藏1次举报html
这里讲解下使用RecyclerView和LayoutAnimation给列表添加进入动画。分为三个步骤:android
使用LayoutAnimation定义动画的好处是,它是单独定义,能够应用于任何ViewGroup的子类。这里是以RecyclerView为示例。web
示例是一个向下掉的进入效果,如图:
编程
在res/anim/路径下添加文件item_animation_fall_down.xml,它用来定义列表项的动画。添加内容以下:app
<set xmlns:android="http://schemas.android.com/apk/res/android" android:duration="@integer/anim_duration_medium"> <translate android:fromYDelta="-20%" android:toYDelta="0" android:interpolator="@android:anim/decelerate_interpolator" /> <alpha android:fromAlpha="0" android:toAlpha="1" android:interpolator="@android:anim/decelerate_interpolator" /> <scale android:fromXScale="105%" android:fromYScale="105%" android:toXScale="100%" android:toYScale="100%" android:pivotX="50%" android:pivotY="50%" android:interpolator="@android:anim/decelerate_interpolator" /> </set>
说明:dom
使用上面定义的每一项的动画来定义LayoutAnimation。在res/anim/添加layout_animation_fall_down.xml文件,它用来定义LayoutAnimation。内容以下:webapp
<?xml version="1.0" encoding="utf-8"?> <layoutAnimation xmlns:android="http://schemas.android.com/apk/res/android" android:animation="@anim/item_animation_fall_down" android:delay="15%" android:animationOrder="normal" />
有两种方式使用LayoutAnimation:编程方式和xml方式。布局
编程方式:动画
int resId = R.anim.layout_animation_fall_down; LayoutAnimationController animation = AnimationUtils.loadLayoutAnimation(ctx, resId); recyclerview.setLayoutAnimation(animation);
xml方式:spa
<android.support.v7.widget.RecyclerView android:layout_width="match_parent" android:layout_height="match_parent" android:layoutAnimation="@anim/layout_animation_fall_down" />
若是须要更改数据集,能够这样作:
private void runLayoutAnimation(final RecyclerView recyclerView) { final Context context = recyclerView.getContext(); final LayoutAnimationController controller = AnimationUtils.loadLayoutAnimation(context, R.anim.layout_animation_fall_down); recyclerView.setLayoutAnimation(controller); recyclerView.getAdapter().notifyDataSetChanged(); recyclerView.scheduleLayoutAnimation(); }
项目动画:
<?xml version="1.0" encoding="utf-8"?> <set xmlns:android="http://schemas.android.com/apk/res/android" android:duration="@integer/anim_duration_long"> <translate android:interpolator="@android:anim/decelerate_interpolator" android:fromXDelta="100%p" android:toXDelta="0" /> <alpha android:fromAlpha="0.5" android:toAlpha="1" android:interpolator="@android:anim/accelerate_decelerate_interpolator" /> </set>
LayoutAnimation动画
<?xml version="1.0" encoding="utf-8"?> <layoutAnimation xmlns:android="http://schemas.android.com/apk/res/android" android:animation="@anim/item_animation_from_right" android:delay="10%" android:animationOrder="normal" />
项目动画
<?xml version="1.0" encoding="utf-8"?> <set xmlns:android="http://schemas.android.com/apk/res/android" android:duration="@integer/anim_duration_long"> <translate android:interpolator="@android:anim/accelerate_decelerate_interpolator" android:fromYDelta="50%p" android:toYDelta="0" /> <alpha android:fromAlpha="0" android:toAlpha="1" android:interpolator="@android:anim/accelerate_decelerate_interpolator" /> </set>
LayoutAnimation动画
<?xml version=1.0 encoding=utf-8?> <layoutAnimation xmlns:android=http://schemas.android.com/apk/res/android android:animation=@anim/item_animation_from_bottom android:delay=15% android:animationOrder=normal />
摘录自:https://proandroiddev.com/enter-animation-using-recyclerview-and-layoutanimation-part-1-list-75a874a5d213