3

Android のアニメーションに問題があります。私はanimation_char.xmlを持っています:

<set xmlns:android="http://schemas.android.com/apk/res/android">
<alpha
    android:duration="300"
    android:fromAlpha="0.0"
    android:interpolator="@android:anim/accelerate_interpolator"
    android:toAlpha="1.0"/>
</set>

それは問題ありませんが、私の MainActivity では、アニメーションを 1 つずつ開始したいと考えています。だから私はそれをより簡単にする方法を作成し、ImageViewを変更するだけです

public void animation(ImageView imageView){
    animation = AnimationUtils.loadAnimation(getApplicationContext(),R.anim.animation_char);
    imageView.startAnimation(animation);
}

連続したアニメーションを作成するには、AnimatorSet を使用しようとしています。しかし、私が読んだように、AnimatorSet はアニメーションではなくアニメーターで動作します。私の質問は、アニメーターにアニメーションをロードする方法はありますか?? または、やりたいことを達成するために別の方法を使用する必要がありますか? 前もって感謝します!

編集 方法を変更し、今これを試していますが、問題はすべての画像が同時に表示されることです。アニメーション間に遅延を追加するにはどうすればよいですか?

public void animation() {
    animation= AnimationUtils.loadAnimation(getApplicationContext(),R.anim.animation_char);

            w.startAnimation(animation);
            a.startAnimation(animation);
            r.startAnimation(animation);     
}
4

3 に答える 3

0

私はこれをここに置きます多分それは誰かを助ける...

私はこのようなことをしました。次々と落ちていきたい3枚の画像があります。

note1 = findViewById(R.id.note1);
note1.setVisibility(View.INVISIBLE);
note2 = findViewById(R.id.note2);
note2.setVisibility(View.INVISIBLE);
note3 = findViewById(R.id.note3);
note3.setVisibility(View.INVISIBLE);

最初に表示されないように可視性を設定する

そして、3つのアニメーションを作成します

Animation slideDown = AnimationUtils.loadAnimation(this, R.anim.slide_down);
        note1.startAnimation(slideDown);

final Animation slideDown2 = AnimationUtils.loadAnimation(SplashScreen.this, R.anim.slide_down);
    
final Animation slideDown3 = AnimationUtils.loadAnimation(SplashScreen.this, R.anim.slide_down);

次のステップは、@Divers が追加したイベント リスナーを追加することです。

 slideDown.setAnimationListener(new Animation.AnimationListener() {
            @Override
            public void onAnimationStart(Animation animation) {

            }

            @Override
            public void onAnimationEnd(Animation animation) {
                note1.setVisibility(View.VISIBLE);
                note2.startAnimation(slideDown2);
                slideDown2.setAnimationListener(new Animation.AnimationListener() {

                    @Override
                    public void onAnimationStart(Animation animation) {

                    }

                    @Override
                    public void onAnimationEnd(Animation animation) {
                        note3.startAnimation(slideDown3);
                        note2.setVisibility(View.VISIBLE);
                        slideDown3.setAnimationListener(new Animation.AnimationListener() {
                            @Override
                            public void onAnimationStart(Animation animation) {

                            }

                            @Override
                            public void onAnimationEnd(Animation animation) {
                                note3.setVisibility(View.VISIBLE);
                            }

                            @Override
                            public void onAnimationRepeat(Animation animation) {

                            }
                        });
                    }

                    @Override
                    public void onAnimationRepeat(Animation animation) {

                    }
                });
            }

            @Override
            public void onAnimationRepeat(Animation animation) {

            }
        });

それだけです

私のアニメーションxmlは次のようなものです

<?xml version="1.0" encoding="utf-8"?>
<set xmlns:android="http://schemas.android.com/apk/res/android">

    <translate
        android:duration="800"
        android:fromXDelta="0%"
        android:fromYDelta="-50%p"
        />

    <alpha
        android:duration="500"
        android:fromAlpha="0.1"
        android:toAlpha="1.0"
        />
</set>
于 2021-04-21T22:51:01.243 に答える