AlphaAnimation不会淡入/淡出

时间:2013-10-28 03:40:23

标签: java android animation android-animation

我可以问一下是否可以创建一个没有淡入/淡出的alpha动画? 所以最终,它只会开启和关闭。

到目前为止

我的代码片段:

imPreview.setImageDrawable(imgColorDotPreview);
Animation animationFlashing = new AlphaAnimation(1, 0); // Change alpha from fully visible to invisible
animationFlashing.setDuration(5000);
animationFlashing.setRepeatCount(Animation.INFINITE); // Repeat animation infinitely
animationFlashing.setRepeatMode(Animation.REVERSE);
imPreview.setAnimation(animationFlashing);
startAnimation();

我正在考虑另一种方式,即不使用AlphaAnimation,只是使用计时器直接将图像的alpha设置为0和1。但后来我需要无限制地做到这一点。

非常感谢任何帮助和建议!谢谢你们!

2 个答案:

答案 0 :(得分:2)

您可以设置视图可见性:

view.setVisibility(View.VISIBLE);
view.setVisibility(View.INVISIBLE);

答案 1 :(得分:0)

好吧,我终于使用AlphaAnimation解决了我自己的问题。

我使用了setOnAnimationListener并在onRepeat()中更改了图像的Alpha。

imPreview.setImageDrawable(imgColorDotPreviewFlashing);
final Animation animationFlashing = new AlphaAnimation(1f,1f);
animationFlashing.setDuration(250); // duration - quarter a second
animationFlashing.setRepeatCount(Animation.INFINITE); // Repeat animation infinitely
animationFlashing.setRepeatMode(Animation.REVERSE);
animationFlashing.setAnimationListener(new AnimationListener(){
    @Override
    public void onAnimationEnd(Animation animation) {
        if(animation == animationFlashing){
        imPreview.setImageAlpha(255);
        }
    }
    @Override
    public void onAnimationRepeat(Animation animation) {
        if(animation == animationFlashing){
            if(imPreview.getImageAlpha()==0) imPreview.setImageAlpha(255);
            else imPreview.setImageAlpha(0);
        }
    }
    @Override
    public void onAnimationStart(Animation animation) {
        if(animation == animationFlashing){
            imPreview.setImageAlpha(255);
        }
    }
});                          
imPreview.setAnimation(animationFlashing);
startAnimation();