引言
看到很多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%"