2010-10-11 56 views
37

我一直在这方面挣扎了好几天,最后只是决定问。这很简单,我必须错过一些非常基本的东西。Android - 使用Alpha褪色动画闪烁图像

我有一个定义了图像的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); 
    } 
} 

两个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> 
+0

安置自己的XML代码。 – Wroclai 2010-10-11 13:52:50

+1

嗨查理,爱你的表演人。 :)我编辑原始文章,添加到两个XML文件(fade_in.xml和fade_out.xml) – Keith 2010-10-11 14:46:10

回答

27

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

+0

仍然是同样的问题。屏幕出现,但没有动画。 – Keith 2010-10-11 15:32:40

+0

为什么你的第一个参数为null而不是这个:nimationUtils.loadAnimation(null,...? – methodin 2010-10-11 17:05:32

+0

这是又一次迭代,我已经经历了很多次,包括另一个完整的重写动画图像。原来我规定“这个“ – Keith 2010-10-11 23:28:38

85

的最好办法吐温褪色:

ImageView myImageView = (ImageView) findViewById(R.id.imageView2); 
Animation myFadeInAnimation = AnimationUtils.loadAnimation(Splash.this, R.anim.tween); 
myImageView.startAnimation(myFadeInAnimation); 
在RES /动画/创建tween.xml吐温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> 
+3

它为我工作!我已经从Alpha中保留为0.2,以便视图不会完全消失。感谢Buchs,为此+1。 – Shraddha 2012-12-19 05:18:35

+0

对我来说,它只能重复一次:进出。然后它什么都不做。 – brainmurphy1 2013-09-11 01:31:45

+2

@ brainmurphy1也许你忘了'android:repeatCount =“infinite”'。重复计数必须是正值或无限。 – 2013-09-19 19:02:56

12

您可以使用下面的奥飞动漫,设置闪烁效果的意见机器人。

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); 
+0

如何更改此方法的持续时间? – Hamid 2016-07-23 16:03:53

+1

在blinkanimation.setDuration(您的持续时间)中更改它; @Hamid – KarthikKPN 2016-07-25 13:22:43

+0

LinearInterpolator是默认的一个,不需要明确设置它 – YTerle 2017-03-24 08:15:41