[英]Android making a button fade in and out continuously
I am trying to get a button to fade in and out continuously and I cant seem to figure it out. 我试图使按钮连续淡入淡出,但似乎无法弄清楚。
In the OnCreate: 在OnCreate中:
Button playbtn =(Button) findViewById(R.id.playbutton);
Animation myFadeInAnimation = AnimationUtils.loadAnimation(MainActivity.this, R.anim.tween);
playbtn.startAnimation(myFadeInAnimation);
tween xml file: 补间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>
Thanks for your help. 谢谢你的帮助。
You can do this: 你可以这样做:
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();
}
You can improve by consolidating both methods into a single one by keeping track of the state (fading in, fading out). 您可以通过跟踪状态(渐入,渐出)将两种方法合并为一个方法来进行改进。 You should also add a function to cancel the animation (you can return the animator from these functions and then call cancel on it). 您还应该添加一个取消动画的功能(可以从这些功能返回动画师,然后对其调用cancel)。
Edit: to cancel, you can do this - create a member variable that holds your current animator, then simply can cancel on it: 编辑:要取消,您可以执行以下操作-创建一个保存当前动画师的成员变量,然后可以在其上取消:
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;
}
}
Your code works perfectly for me.. 您的代码非常适合我。
also you can do button fade in and out continuously in java
Using 您也可以在java
连续进行按钮淡入和淡出
myFadeInAnimation .setRepeatCount(Animation.INFINITE);
Hope this will helps you 希望这对您有帮助
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.