【参考链接】

 

TweenAnimation虽然提供了各种不同的动画,但是也具有一些相同的方法

setDuration()

持续时间

 

setFillAfter()

动画结束时View是否停留在结束位置,true表示停在false表示不。

 

setRepeatCount()

重复次数,如果-1则无限循环

 

setRepeatMode()

设置为Animation.RESTART则从头开始重复,设置为Animation.REVERSE则倒着开始重复

 

setInterpolator()

设置插值器

 

setStartOffset()

设置每次动画开始时的延时时间,设置后每次重复时也有延时

ta.setStartOffset(1000);

不过实际显示效果是,会先移动到动画的起始位置,等延时时间过了以后再开始动画

 动画[1]TweenAnimation 设置

start()

startNow()

setStartTime()

3个函数其实都是调用的setStartTime()方法

动画[1]TweenAnimation 设置

动画[1]TweenAnimation 设置

动画[1]TweenAnimation 设置

它并没有真正/立即开始动画,只是设置了状态位,需要我们自己触发重绘

当下次重绘的时候,判断当前时间超出了startTime,才会设置mStarted=true,并且将当前时间+duration设置为结束时间,开始动画。

通过如下方式来使用(功能同View.startAnimation()

public void translate(View view) {
    TranslateAnimation ta=
new TranslateAnimation(
           Animation.
ABSOLUTE, 0,
           
Animation.RELATIVE_TO_SELF, 0f,
           
Animation.RELATIVE_TO_PARENT, 0f,
           
Animation.RELATIVE_TO_PARENT, 0.5f);

   
ta.setDuration(2000);
   
ta.setRepeatCount(-1);
   
ta.setRepeatMode(Animation.REVERSE);
   
ta.setInterpolator(new LinearInterpolator());

   
// ta.start();
    // ta.startNow();
   
ta.setStartTime(AnimationUtils.currentAnimationTimeMillis());//3个方法本质是一样的

   
iv.setAnimation(ta);
    // iv.invalidate();
    // invalidate()
高低版本差异不一定会触发父ViewGroup派发
    //
TweenAnimanion是在父ViewGroup dispatchChild()时将Matrix应用到子View的画布上的//所以这个地方不能直接用invalidate()
   
((View)iv.getParent()).invalidate();
   
// iv.requestLayout();
    //
当然用requestLayout()是可以的
}

 

cancel()

停止动画

 

setAnimationListener()

可以给动画添加监听,也是在注册观察者

可以设置onAnimationStart()onAnimationEnd()onAnimationRepeat()时的回调

ta.setAnimationListener(new Animation.AnimationListener() {
   
@Override
   
public void onAnimationStart(Animation animation) {
       Log.e(
"shadowfaxghh", "onAnimationStart");
   
}

   
@Override
   
public void onAnimationEnd(Animation animation) {
       Log.e(
"shadowfaxghh", "onAnimationEnd");
   
}

   
@Override
   
public void onAnimationRepeat(Animation animation) {
       Log.e(
"shadowfaxghh", "onAnimationRepeat");
   
}
})
;

 

 

相关文章:

  • 2022-12-23
  • 2021-08-28
  • 2022-12-23
  • 2021-11-15
  • 2021-11-07
  • 2021-12-18
  • 2021-04-12
  • 2021-09-07
猜你喜欢
  • 2021-05-17
  • 2021-07-27
  • 2021-05-25
  • 2021-07-24
  • 2022-12-23
  • 2022-01-01
  • 2022-12-23
相关资源
相似解决方案