簡體   English   中英

Android使按鈕連續淡入淡出

[英]Android making a button fade in and out continuously

我試圖使按鈕連續淡入淡出,但似乎無法弄清楚。

在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>

謝謝你的幫助。

你可以這樣做:

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();
}

您可以通過跟蹤狀態(漸入,漸出)將兩種方法合並為一個方法來進行改進。 您還應該添加一個取消動畫的功能(可以從這些功能返回動畫師,然后對其調用cancel)。

編輯:要取消,您可以執行以下操作-創建一個保存當前動畫師的成員變量,然后可以在其上取消:

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;
    }
}

您的代碼非常適合我。

您也可以在java連續進行按鈕淡入和淡出

myFadeInAnimation .setRepeatCount(Animation.INFINITE); 

希望這對您有幫助

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM