Java 无淡入/淡出的Alpha动画
我可以问一下,是否有可能在不淡入/淡出的情况下创建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);
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();