【问题标题】:Android - Blinking image using the Alpha fade animationAndroid - 使用 Alpha 渐变动画闪烁图像
【发布时间】:2011-04-23 19:59:32
【问题描述】:

我为此苦苦挣扎了几天,终于决定问一下。它是如此简单,我必须错过一些非常基本的东西。

我有一个定义了图像的 XML 布局页面。我有两个动画 XML 页面,一个用于将 alpha 从 0 更改为 1,另一个从 1 更改为 0 以创建“闪烁”效果。所以 alphaAnimation 是在 XML 中定义的,我只需要调用它。

图像弹出,但没有循环闪烁效果。

public class blinker extends Activity {

   //create name of animation
Animation myFadeInAnimation;
Animation myFadeOutAnimation;

/** Called when the activity is first created. */
@Override
public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.scanning_view);

 //grab the imageview and load the animations
    ImageView myImageView = (ImageView) findViewById(R.id.blinkingView01); 
    Animation myFadeInAnimation = AnimationUtils.loadAnimation(null, R.anim.fade_in);
    Animation myFadeOutAnimation = AnimationUtils.loadAnimation(null, R.anim.fade_out);

//fade it in, and fade it out. 
    myImageView.startAnimation(myFadeInAnimation);
    myImageView.startAnimation(myFadeOutAnimation);
     }
}   

Anim 资源中的两个 XML 动画布局:

<?xml version="1.0" encoding="UTF-8"?> 
<set xmlns:android="http://schemas.android.com/apk/res/android"> 
    <alpha android:fromAlpha="0.0" 
    android:toAlpha="1.0" 
    android:interpolator="@android:anim/accelerate_interpolator"  
    android:duration="50" android:repeatCount="infinite"/> 
 </set> 

还有一个:

 <?xml version="1.0" encoding="UTF-8"?>
 <set xmlns:android="http://schemas.android.com/apk/res/android"> 
    <alpha android:fromAlpha="1.0" android:toAlpha="0.0" 
    android:interpolator="@android:anim/accelerate_interpolator"  
    android:duration="1000" android:repeatCount="infinite"/> 
</set>

【问题讨论】:

  • 嗨查理,爱你的表演者。 :) 我编辑了原始帖子,添加了两个 XML 文件(fade_in.xml 和 fade_out.xml)

标签: android fadein


【解决方案1】:

补间渐变的最佳方法:

ImageView myImageView = (ImageView) findViewById(R.id.imageView2); 
Animation myFadeInAnimation = AnimationUtils.loadAnimation(Splash.this, R.anim.tween);
myImageView.startAnimation(myFadeInAnimation);

在您的 res/anim/ 中创建 tween.xml tween 1s 开始不透明度 0 到 1 并反向无限...

<?xml version="1.0" encoding="utf-8"?>
<set xmlns:android="http://schemas.android.com/apk/res/android">
<alpha
    android:fromAlpha="0.0"
    android:toAlpha="1.0"
    android:duration="1000" 
    android:repeatMode="reverse"
    android:repeatCount="infinite" />
</set>

【讨论】:

  • 它对我有用!我将 fromAlpha 保持为 0.2,以便视图不会完全消失。感谢 Buchs,为此 +1。
  • 对我来说,它只重复一次:进出。然后它什么也不做。
  • @brainmurphy1 也许你忘记了android:repeatCount="infinite"。重复次数必须为正数或无限。
  • 代码运行良好。但我想在计时器上设置这个动画,所以它应该每秒闪烁一次。但由于褪色,它需要更多的时间。我将持续时间从 1000 更改为 500、600 等等。但无法得到准确的时间。你能帮我知道在计时器的情况下持续时间的值是多少吗?
【解决方案2】:

为什么不用android:repeatMode="reverse"

【讨论】:

  • 还是同样的问题。出现屏幕,但没有动画。
  • 为什么你的第一个参数是 null 而不是这个:nimationUtils.loadAnimation(null,... ?
  • 那是又一次迭代,我经历了很多,包括另一次完全重写以动画图像。原来我规定“这个”。
  • 我需要休息一下,让眼睛酸痛。在阅读了 Methodin 的回复后,我实现了两件事,现在我已经开始工作了。非常感谢。
  • Methodin,在屏幕和键盘上花费了太多时间。 :) 当我回到“这个”时,上面的迭代起作用了。我决定不使用 repeatMode="reverse",这样我就可以对淡入和淡出速度进行更精细的控制,因为每个都可以相互独立地设置。例如,快速淡入,慢速淡出。
【解决方案3】:

您可以使用下面的 alpha 动画来为 android 中的视图设置闪烁效果。

blinkanimation= new AlphaAnimation(1, 0); // Change alpha from fully visible to invisible
blinkanimation.setDuration(300); // duration
blinkanimation.setInterpolator(new LinearInterpolator()); // do not alter animation rate
blinkanimation.setRepeatCount(3); // Repeat animation infinitely
blinkanimation.setRepeatMode(Animation.REVERSE);

在此之后将动画添加到您的视图中,例如,

view.setAnimation(blinkanimation); 

view.startAnimation(blinkanimation);

【讨论】:

  • 这个方法如何改变持续时间?
  • 在blinkanimation.setDuration(你的持续时间)中改变它; @Hamid
  • LinearInterpolator 是默认的,不需要显式设置
  • 无限动画没有-1作为重复计数吗?
  • @natinusala 是的。 anim.setRepeatCount(Animation.INFINITE);...(-1);
【解决方案4】:

如果有人决定使用程序化版本:

val anim = AlphaAnimation(1.0f, 0.0f)
anim.duration = 750
anim.fillAfter = true  

// here is repeat settings
anim.repeatMode = AlphaAnimation.REVERSE // ping pong mode
anim.repeatCount = 1 // count of repeats

yourView.startAnimation(anim)

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2012-03-12
    • 2017-03-09
    • 1970-01-01
    • 2018-03-16
    • 1970-01-01
    • 2015-08-10
    • 2015-04-21
    相关资源
    最近更新 更多