0

请问是否可以在没有淡入/淡出的情况下创建 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。但是我需要无限地做到这一点。

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

4

2 回答 2

2

您可以只设置视图可见性:

view.setVisibility(View.VISIBLE);
view.setVisibility(View.INVISIBLE);
于 2013-10-28T04:35:56.847 回答
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();
于 2013-10-28T07:36:42.663 回答