Java 无淡入/淡出的Alpha动画

Java 无淡入/淡出的Alpha动画,java,android,animation,android-animation,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);

我可以问一下,是否有可能在不淡入/淡出的情况下创建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。但我需要无限地创造它


非常感谢您的帮助和建议!谢谢大家

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

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

好吧,我终于用AlphaAnimation解决了这个问题

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


如果我理解正确,您只需要将imageview的可见性设置为Gone/Visible,那么根本不需要更改alpha@SaeidFarivar但是如何使它每0.5秒可见和不可见?它需要连续可见和不可见。那么如何使它每0.5秒可见和不可见一次呢?它需要持续可见和不可见。你不能休眠主线程,因为这会导致ANR。你需要运行一个计时器任务或另一个线程,在需要时更新UI线程。这就是为什么我尝试使用alphaanimation来获得开/关效果。但它在两者之间使用淡入淡出。我猜没有办法用alphaanimation完成吗?我想最好的办法是使用
timer.scheduleAtFixedRate(new TimerTask(),0500)这将每隔指定的时间运行一个任务(切换可见性)。感谢您的建议!虽然我的实现有问题,但我还是尝试了,因为我需要经常重新启动计时器。也许我的实现是错误的。。。但不管怎样,我通过一个变通办法解决了它!:)谢谢
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();