android 动画列表,使用RecyclerView和LayoutAnimation给列表添加进入动画

这里讲解下使用RecyclerView和LayoutAnimation给列表添加进入动画。分为三个步骤:给列表项添加动画

使用列表项的动画定义LayoutAnimation

RecyclerView应用LayoutAnimation的动画

使用LayoutAnimation定义动画的好处是,它是单独定义,可以应用于任何ViewGroup的子类。这里是以RecyclerView为示例。

示例效果

示例是一个向下掉的进入效果,如图:

1519297068969_HpkiJ.gif

定义列表项动画

在res/anim/路径下添加文件item_animation_fall_down.xml,它用来定义列表项的动画。添加内容如下:

android:duration="@integer/anim_duration_medium">

android:fromYDelta="-20%"

android:toYDelta="0"

android:interpolator="@android:anim/decelerate_interpolator"

/>

android:fromAlpha="0"

android:toAlpha="1"

android:interpolator="@android:anim/decelerate_interpolator"

/>

android:fromXScale="105%"

android:fromYScale="105%"

android:toXScale="100%"

android:toYScale="100%"

android:pivotX="50%"

android:pivotY="50%"

android:interpolator="@android:anim/decelerate_interpolator"

/>

说明:Translate Y -20%到0%:在动画开始之前,向上移动视图20%的高度,并让它落到最终位置。

Alpha 0到1:视图从开始完全不可见,并缓慢出现,直至完全可见。

Scale X/Y 105% 到 100%:scale设置为105%,以使其缩小至最终尺寸。 这会使它看起来好像掉下来一样,落到背景上。

定义LayoutAnimation

使用上面定义的每一项的动画来定义LayoutAnimation。在res/anim/添加layout_animation_fall_down.xml文件,它用来定义LayoutAnimation。内容如下:<?xml  version="1.0" encoding="utf-8"?>

xmlns:android="http://schemas.android.com/apk/res/android"

android:animation="@anim/item_animation_fall_down"

android:delay="15%"

android:animationOrder="normal"

/>android:animation="@anim/item_animation_fall_down”:定义将哪个动画应用于布局中的每一项。

android:delay=”15%":设置动画延迟,0%表示所有项目同时进行动画,100%表示每个项目完成其动画后才开始下一个项目。15%则表示项目动画到达15%时开始下一个项目的动画。

android:animationOrder="normal":控制内容的动画顺序,有三种类型:normal,reverse和random。normal表示根据布局的自然顺序(垂直:从上到下,水平:从左到右)出现动画。reverse与normal相反。random表示动画随机出现。

应用LayoutAnimation

有两种方式使用LayoutAnimation:编程方式和xml方式。

编程方式:int resId = R.anim.layout_animation_fall_down;

LayoutAnimationController animation = AnimationUtils.loadLayoutAnimation(ctx, resId);

recyclerview.setLayoutAnimation(animation);

xml方式:

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"?>

android:duration="@integer/anim_duration_long">

android:interpolator="@android:anim/decelerate_interpolator"

android:fromXDelta="100%p"

android:toXDelta="0"

/>

android:fromAlpha="0.5"

android:toAlpha="1"

android:interpolator="@android:anim/accelerate_decelerate_interpolator"

/>

LayoutAnimation动画<?xml  version="1.0" encoding="utf-8"?>

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"?>

android:duration="@integer/anim_duration_long">

android:interpolator="@android:anim/accelerate_decelerate_interpolator"

android:fromYDelta="50%p"

android:toYDelta="0"

/>

android:fromAlpha="0"

android:toAlpha="1"

android:interpolator="@android:anim/accelerate_decelerate_interpolator"

/>

LayoutAnimation动画<?xml  version=1.0 encoding=utf-8?>

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

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值