天天看点

RecyclerView加载动画

引言

看到很多RecyclerView都有不错的动画,我动画知识也很欠缺,就决定拿他来玩玩。

本文先玩设置RecyclerView的加载动画

代码

效果

RecyclerView加载动画

实现步骤:

1.在res/anim文件下新增动画animate.xml

<set xmlns:android="http://schemas.android.com/apk/res/android"
    android:duration="@integer/anim_duration_medium">

    <translate
        android:fromYDelta="100%"
        android:toYDelta="0" />

    <alpha
        android:fromAlpha="0"
        android:toAlpha="1" />

    <scale
        android:fromXScale="105%"
        android:fromYScale="105%"
        android:pivotX="50%"
        android:pivotY="50%"
        android:toXScale="100%"
        android:toYScale="100%" />

</set>
           

2.recylerView设置LayoutAnimationController

LayoutAnimationController controller = new LayoutAnimationController(AnimationUtils.loadAnimation(this,R.anim.animate));
        recyclerView.setLayoutAnimation(controller);
           

动画笔记

关于动画从来都没有好好的玩过,以下记录一下学习到的。

Android中动画有四种基本动画:

animate description
translate 位移动画
alpha 渐变透明度动画
scale 缩放动画
rotate 旋转动画

如上面的动画一样,可使用set集合来组合动画

关于插值器,我理解的是 值的一种变化方式。

比如从0-100变化,有的插值器会匀速变有的会加速…

常用插值器:

interpolator description
AccelerateInterpolator 在动画开始的地方速率变小,然后开始加速变大
DecelerateInterpolator 在动画开始的地方变大,然后慢慢变小
AnticipateInterpolator 开始的时候慢慢变小,然后突然加速变大
BounceInterpolator 变大动画快结束的时候,突然更大变大,然后还原
CycleInterpolator 动画循环播放特定的次数,速率改变沿着正弦曲线
LinearInterpolator 匀速变大
AccelerateInterpolator 向前甩一定值后再回到原来位置

从开始看到别人写的动画时,总是疑惑里面的传值单位,有的是int有的是float有的甚至是百分号,决定总结一下。

translate标签:

0是原来的位置

//单位是int%,0可以省略%
android:fromYDelta="100%"
android:toYDelta="0"
           

alpha标签:

0-1是从完全透明到完全不透明

//单位是float
android:fromAlpha="0"
           

rotate标签(需要中心点坐标):

从小到大是顺时针旋转,从大到小是逆时针旋转。

//单位是int
android:fromDegrees="0"
           

scale标签(需要中心点坐标):

//单位是int%
 android:fromXScale="105%"
           

另外中心点坐标pivotY的单位是int%

android:pivotX="50%"
           

继续阅读