单击按钮更改图像视图的alpha

时间:2014-06-27 13:48:47

标签: android animation alpha

我正在开发一个Android项目。

在这个项目中,我有一个ImageView和一个按钮。当用户点击按钮时,我希望ImageView的alpha值从1变为0.5,然后立即从0.5变为1.

我写了以下代码:

public void animate(ImageView imageView)
{
    int animDuration = 50;
    int timeBetween = 2;

    AlphaAnimation animation1 = new AlphaAnimation(1, (float) 0.5);
    animation1.setInterpolator(new AccelerateInterpolator());
    animation1.setDuration(animDuration);

    AlphaAnimation animation2 = new AlphaAnimation((float) 0.5, 1);
    animation2.setInterpolator(new AccelerateInterpolator());
    animation2.setStartOffset(animDuration + timeBetween);
    animation2.setDuration(animDuration);

    AnimationSet animation = new AnimationSet(true);
    animation.addAnimation(animation1);
    animation.addAnimation(animation2);
    animation.setRepeatCount(1);

    imageView.setAnimation(animation);
}

当用户点击它时,我将ImageView传递给此函数。

但它没有正常工作,没有任何改变。有什么问题?

2 个答案:

答案 0 :(得分:1)

View.setAnimation()文档(强调我的):

  

设置要为此视图播放的下一个动画。 如果您想立即播放动画,请改用startAnimation(android.view.animation.Animation)。此方法允许对开始时间和失效进行细粒度控制,但您必须确保1)动画具有开始时间设置,以及2)当动画应该开始时,视图的父级(控制其子级上的动画)将无效。

虽然您已为animation2设置了起始偏移量,但您没有为AnimationSet本身设置开始时间,因此View无法知道何时开始动画。

如果您想立即启动动画,请改用startAnimation()。如果您希望动画在特定时间开始,请在动画集上调用setStartTime()setStartOffset()

答案 1 :(得分:0)

您可以尝试使用此动画代码:

<set xmlns:android="http://schemas.android.com/apk/res/android" >
<alpha
        android:duration="1000"
        android:fromAlpha="1"
        android:interpolator="@android:anim/accelerate_interpolator"
        android:toAlpha="0.5"
        android:repeatMode="reverse" 
        android:repeatCount="1"/>
</set>

并在您的活动中设置此动画,如下所示:

anim = AnimationUtils.loadAnimation(getApplicationContext(), R.anim.animatealpha); 
image.startAnimation(anim);

这里animatealpha是包含上述动画的xml的名称。 希望这会有所帮助。