2017-08-16 93 views
0

我使用的是Translate动画(从here借来的)如下:Android的翻译动画进度回调

TranslateAnimation a = new TranslateAnimation(
Animation.ABSOLUTE,200, Animation.ABSOLUTE,200, 
Animation.ABSOLUTE,200, Animation.ABSOLUTE,200); 
a.setDuration(1000); 
a.setFillAfter(true); 
animationSet.addAnimation(a); 
myView.startAnimation(a); 

有没有可以给我的myView当前位置的任何回调?我想在动画进行过程中根据myView的位置执行操作。

回答

1

不幸的是,但你可以做这样的事情。使用

a.setRepeatCount(200); 

,并设置动画同时

Animation.ABSOLUTE,1 

移动1个像素,然后

a.setAnimationListener(new Animation.AnimationListener() { 
      @Override 
      public void onAnimationStart(Animation animation) { 

      } 

      @Override 
      public void onAnimationEnd(Animation animation) { 

      } 

      @Override 
      public void onAnimationRepeat(Animation animation) { 
       // this will fire after each repetition 
      } 
     }); 
+0

非常感谢的答案:)。虽然这是否意味着这种开销无法避免? – androidnoob

+0

是的,我假设这是因为可能会丢帧,如果手机做了很多繁重的工作。根据您在每次迭代中想要做的事情,可能会有其他解决方案。 –

+0

我明白了,谢谢 – androidnoob