Android制作按钮不断淡入淡出

时间:2016-03-19 03:07:46

标签: java android

我正试图让一个按钮不断淡入淡出,我似乎无法弄明白。

在OnCreate中:

Button playbtn =(Button) findViewById(R.id.playbutton);
Animation myFadeInAnimation = AnimationUtils.loadAnimation(MainActivity.this, R.anim.tween);
playbtn.startAnimation(myFadeInAnimation);

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:duration="1000"
        android:repeatMode="reverse"
        android:repeatCount="infinite" />
</set>

感谢您的帮助。

2 个答案:

答案 0 :(得分:3)

你可以这样做:

private void fadeIn() {
    ObjectAnimator objectAnimator = ObjectAnimator.ofFloat(mButton, "alpha", 0f, 1f);
    objectAnimator.setDuration(500L);
    objectAnimator.addListener(new AnimatorListenerAdapter() {
        @Override
        public void onAnimationEnd(Animator animation) {
            fadeOut();
        }
    });
    objectAnimator.start();
}

private void fadeOut() {
    ObjectAnimator objectAnimator = ObjectAnimator.ofFloat(mButton, "alpha", 1f, 0f);
    objectAnimator.setDuration(500L);
    objectAnimator.addListener(new AnimatorListenerAdapter() {
        @Override
        public void onAnimationEnd(Animator animation) {
            fadeIn();
        }
    });
    objectAnimator.start();
}

您可以通过跟踪状态(淡入,淡出)将两种方法合并为一种方法来改进。您还应该添加一个取消动画的功能(您可以从这些功能中返回动画师,然后在其上调用取消)。

编辑:要取消,你可以这样做 - 创建一个包含你当前动画师的成员变量,然后就可以取消它:

private ObjectAnimator objectAnimator;

private void fadeOut() {
    objectAnimator = ObjectAnimator.ofFloat(mButton, "alpha", 1f, 0f);
    objectAnimator.setDuration(500L);
    objectAnimator.addListener(new AnimatorListenerAdapter() {
        @Override
        public void onAnimationEnd(Animator animation) {
            fadeIn();
        }
    });
    objectAnimator.start();
}

private void cancelAnimator() {
    if (objectAnimator != null) {
        objectAnimator.cancel();
        objectAnimator = null;
    }
}

答案 1 :(得分:0)

您的代码对我来说非常适合..

您也可以在java使用

中连续淡入淡出按钮
myFadeInAnimation .setRepeatCount(Animation.INFINITE); 

希望这会对你有所帮助

相关问题