一:需求分析
最近要实现一个view上下循环滚动的动画,需要带有位置移动和透明度转变的动画。类似于从A到B发生位移动画,且view逐渐显示。而从B到C发生位移动画,且view渐变暗消失。实现效果如图所示:
二:需求拆分
接到这个需求后,首先将需求进行细分,分为位移动画和逐渐变量(变暗)两个部分。对应的Android的动画类分别是TranslateAnimation(位移动画)和AlphaAniamtion(透明度变化动画)。首先先熟悉一下这两种动画。
1:TranslateAnimation 位移动画
1 | private void startTranslateAnimation() { |
这里需要注意的一个小点:设置FillAfter的值,为true代表动画后View停留在终点位置处,false代表动画结束后返回起点。
2:AlphaAnimation 透明度转变动画
1 | private void startAlphaAnimation() { |
3:同时完成位移和透明度动画需求
1 | private void startAppearanceAnimation() { |
实现叠加的动画效果:这里一定要注意的是,对AnimationSet动画,fillAfter和duration需要在AniamtionSet对象中设置,不要设置单个动画对象上。
4:完成的动画过程(位移+渐渐显示 停留 位移+渐渐隐藏)
1 | package com.zm.animationdemo; |
总结
- 位移动画TranslateAnimation实现位移,SetFIllAfter=true可让View停留在动画终点处,false返回动画起点
- 透明度动画 AlphaAnimation实现透明度变化,可实现View的渐显或者渐隐效果
- 动画效果可以叠加展示,通过AnimationSet实现。整个动画的fillAfter和duration需要设置在AnimationSet对象上,而不是单个对象单独设置(单独设置不会有效果)