Android 我在这段代码中反复定义了动画。难道没有更简单的方法吗?

Android 我在这段代码中反复定义了动画。难道没有更简单的方法吗?,android,animation,Android,Animation,我在这段代码中反复定义了动画。难道没有更简单的方法吗?代码按照我想要的方式工作,但我想简化我的编码。你能帮我吗。我应该如何遵循一种方法。 我做了一个我在这个标题中做不到的代码,但是它写得更短了 resimyukle(); hediye=getDrawable(R.drawable.hediye); final ImageView[] imajlar={img1,img2,img3,img4,img5,img6,img7,img8};

我在这段代码中反复定义了动画。难道没有更简单的方法吗?代码按照我想要的方式工作,但我想简化我的编码。你能帮我吗。我应该如何遵循一种方法。 我做了一个我在这个标题中做不到的代码,但是它写得更短了

resimyukle();

            hediye=getDrawable(R.drawable.hediye);
            final ImageView[] imajlar={img1,img2,img3,img4,img5,img6,img7,img8};

                  Animation fadein=AnimationUtils.loadAnimation(getApplicationContext(),R.anim.fadein);
                  imajlar[0].setBackground(hediye);
                  imajlar[0].startAnimation(fadein);

                  Animation res=AnimationUtils.loadAnimation(getApplicationContext(),R.anim.fadein);
                  Animation res1=AnimationUtils.loadAnimation(getApplicationContext(),R.anim.fadein);
                  Animation res2=AnimationUtils.loadAnimation(getApplicationContext(),R.anim.fadein);
                  Animation res3=AnimationUtils.loadAnimation(getApplicationContext(),R.anim.fadein);
                  Animation res4=AnimationUtils.loadAnimation(getApplicationContext(),R.anim.fadein);
                  Animation res5=AnimationUtils.loadAnimation(getApplicationContext(),R.anim.fadein);
                  Animation res6=AnimationUtils.loadAnimation(getApplicationContext(),R.anim.fadein);


                  anima(fadein,res,imajlar[1]);
                  anima(res,res1,imajlar[2]);
                  anima(res1,res2,imajlar[3]);
                  anima(res2,res3,imajlar[4]);
                  anima(res3,res4,imajlar[5]);
                  anima(res4,res5,imajlar[6]);
                  anima(res5,res6,imajlar[7]);
}


public void anima(final Animation aa, final Animation bb, final ImageView img)
{


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

        }

        @Override
        public void onAnimationEnd(Animation animation) {

            animation.cancel();
            img.setBackground(hediye);
            img.startAnimation(bb);
        }

        @Override
        public void onAnimationRepeat(Animation animation) {

        }
    });

}

动画看起来是一样的。只要创建一个执行代码的方法,并在需要时调用该方法。我知道它,但当我这样做时,所有操作都同时开始和结束,因此您可能需要一些方法。一种方法执行动画,另一种方法执行等待。等待的方法可能需要很长时间,然后你可以动态地改变它等待的方式……记住干燥原理。寻找相同的东西,并找出发生变化的部分。主要问题是,当我使用动画对象后再次调用它时,它会重复上一个动画。我还没有解决这个问题。你不认为房间又是荒谬的吗?主要的问题是,当我使用动画对象后再次调用它时,它会重复上一个动画。我还没有解决这个问题。你不觉得这个房间又荒唐了吗?所有的动画一起播放。我不要这个。我为他工作:-(这就是为什么我添加了
aa.setStartOffset(id*500);
。你尝试过这个吗?所有动画对象都一起播放。我不想要这个。我为他工作:-(
hediye=getDrawable(R.drawable.hediye);
final ImageView[] imajlar={img1,img2,img3,img4,img5,img6,img7,img8};
Animation res=AnimationUtils.loadAnimation(getApplicationContext(),R.anim.fadein);
for (int i = 0; i < imajlar.size; i++) {
  anima(res, imajlar[i], i);
}
public void anima(Animation aa, ImageView img, int id)
{
    aa.setStartOffset(id * 500);
    aa.setDuration(1000);
    img.startAnimation(aa);
    img.setBackground(hediye);
}