android两个animation无限循环怎么做?

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了android两个animation无限循环怎么做?相关的知识,希望对你有一定的参考价值。

需求要做一个图片动画效果,动画开始从左往右移动100,移动结束后接着渐渐透明掉,透明后重复循环这组动画,用什么方法做?我尝试过用一个 TranslateAnimation 移动 500毫秒完成,接着 AlphaAnimation 延迟500毫秒开始透明。用 AnimationSet 装起两个动画,但是 AnimationSet 设置循环无效,单独给两个动画分别设置循环,时间又对不上。求解这样的动画用什么方式做?

据我所知,想直接给AnimationSet设置重复,是不行的。不过你可以这样来:

final int transDuration = 2000;
final int alphaDuration = 1000;

AnimationSet set = new AnimationSet(false);
set.setRepeatMode(Animation.RESTART);

TranslateAnimation translateAnimation = new TranslateAnimation(0, 0, 0, 300);
translateAnimation.setInterpolator(new Interpolator()
@Override
public float getInterpolation(float arg0)
float ret = arg0 / (1.0f * transDuration / (transDuration + alphaDuration));
return ret < 1 ? ret : 1;

);
translateAnimation.setRepeatCount(Animation.INFINITE);
translateAnimation.setDuration(transDuration + alphaDuration);

AlphaAnimation alphaAnimation = new AlphaAnimation(1, 0);
alphaAnimation.setRepeatCount(Animation.INFINITE);
alphaAnimation.setDuration(alphaDuration);
alphaAnimation.setStartOffset(transDuration);

set.addAnimation(translateAnimation);
set.addAnimation(alphaAnimation);
view.startAnimation(set);

或者像其他所说的,通过在一个动画结束后开始另外一个动画的方式。
参考技术A translateAnimation.setRepeatCount(2); //设置重复次数 translateAnimation.setRepeatMode(Animation.RESTART); //重新从头执行 //translateAnimation.setRepeatMode(Animation.REVERSE); //反方向执 参考技术B 在动画运行结束的回调中启动下一次动画。 参考技术C public void setRepeatMode (int repeatMode)Added in API level 1Defines what this animation should do when it reaches the end. This setting is applied only when the repeat count is either greater than 0 or INFINITE. Defaults to RESTART.ParametersrepeatMode RESTART or REVERSE 参考技术D 次数你可以设置Intager.MAX

以上是关于android两个animation无限循环怎么做?的主要内容,如果未能解决你的问题,请参考以下文章

android中补间动画怎样循环执行

RecyclerView里面嵌套一个无限循环的横向列表该怎么做

RecyclerView里面嵌套一个无限循环的横向列表该怎么做

css3动画连续执行两个怎么做

animate()写无限循环

在android中广告轮播是怎么做的