2

ハートビートのようなアニメーションを作成したいのですが、1 つの画像の ALPHA が 0 から 1 にすばやく変化し、1 から 0 にゆっくりと変化します。それを XML ファイルで定義します。

<?xml version="1.0" encoding="utf-8"?>
<set xmlns:android="http://schemas.android.com/apk/res/android"
    android:ordering="sequentially">
    <objectAnimator
        android:propertyName="alpha"
        android:valueFrom="0"
        android:valueTo="1"
        android:valueType="floatType"
        android:duration="700"/>
    <objectAnimator
        android:propertyName="alpha"
        android:valueFrom="1"
        android:valueTo="0"
        android:valueType="floatType"
        android:duration="1500"/>
</set>

私はJavaコードでそれらを使用しています。

private void cursorHeartBeatAnimation() {
    Animator animator = AnimatorInflater.loadAnimator(this, R.animator.cursor_heartbeat);
    animator.setTarget(this.cursor);
    animator.setStartDelay(1500);
    animator.start();
}

ずっと遊ばせたいのですが、どうすればいいですか?

4

2 に答える 2

0

「set」の「repeatMode」属性を使用します。

<?xml version="1.0" encoding="utf-8"?>
<set xmlns:android="http://schemas.android.com/apk/res/android"
    android:repeatMode="restart"
    android:ordering="sequentially">
    <objectAnimator
        android:propertyName="alpha"
        android:valueFrom="0"
        android:valueTo="1"
        android:valueType="floatType"
        android:duration="700"/>
    <objectAnimator
        android:propertyName="alpha"
        android:valueFrom="1"
        android:valueTo="0"
        android:valueType="floatType"
        android:duration="1500"/>
</set>

または、プログラムでそれを行うことができます:

Animator animator = AnimatorInflater.loadAnimator(this, R.animator.your_animation);
        animator.setTarget(view);
        animator.addListener(new Animator.AnimatorListener() {
            @Override
            public void onAnimationStart(Animator animation) {

            }

            @Override
            public void onAnimationEnd(Animator animation) {
                animation.start();
            }

            @Override
            public void onAnimationCancel(Animator animation) {

            }

            @Override
            public void onAnimationRepeat(Animator animation) {

            }
        });
        animator.start();
于 2016-11-03T14:52:24.673 に答える
-2

setRepeatMode(int) を試す

private void cursorHeartBeatAnimation() {
Animator animator = AnimatorInflater.loadAnimator(this, R.animator.cursor_heartbeat);
animator.setRepeatMode(Animation.INFINITE);
animator.setStartDelay(1500);
animator.start();

}

于 2013-10-24T03:36:52.197 に答える