2017-07-27 16 views
0

默认情况下,我有一个ImageViewalpha=0。所以它在另一个图像上作为不可见的叠加层。如何制作闪烁的图像动画?

单击时,我想创建一个动画,显示200ms的叠加图像,然后再次隐藏它。

下面的工作一般,但只有一次!为什么?

final ImageView flash = (ImageView) view.findViewById(R.id.flash); 

flash.animate() 
     .alpha(255) //make visible 
     .setDuration(200) 
     .setListener(new AnimatorListenerAdapter() { 
      @Override 
      public void onAnimationEnd(Animator animation) { 
       super.onAnimationEnd(animation); 
       flash.setImageAlpha(0); //hide again 
      } 
     }); 

回答

3

你设置2个不同的α值,第一个是视图的α,但是当你结束动画您设置的ImageView类的α为0,因此,如果您再次启动动画,查看阿尔法是1.0f,但图像阿尔法将是0,你什么都看不到。 将其更改为

flash.animate() 
     .alpha(1.f) 
     .setDuration(200) 
     .setListener(new AnimatorListenerAdapter() { 
      @Override 
      public void onAnimationEnd(Animator animation) { 
       super.onAnimationEnd(animation); 
       flash.setAlpha(0.f); 
      } 
     }); 

View(因此ImageView)有一个方法setAlpha(float)ImageView还增加了另一种方法setAlpha(int),它被废弃了,因为它的地狱混乱,现在它被改名为setImageAlpha(int)。该动画将致电ViewsetAlpha(float)

+1

这确实很混乱。但作品! – membersound

+1

我希望在编写Android xD时,这是唯一令人困惑的事情 – lelloman