在动画中使用5-6个线程是个好主意吗?

时间:2011-12-05 09:14:49

标签: android

我使用5-6个线程一次显示一个动画。我正在使用翻译动画以及帧动画。这是一个好主意吗?最好的方法是什么?我的代码如下。

Handler handler1 = new Handler();        
handler1.postDelayed(new Runnable() {
  public void run() {
    Animation animation = new TranslateAnimation(0 ,0 ,0 ,100 );
    animation.setDuration(800);
    ImageView rimg2 = (ImageView) findViewById(R.id.rainfall);
    animation.setRepeatCount(-1);
    rimg2.startAnimation(animation);

    Animation animation1 = new TranslateAnimation(-290, 290,0, -150);
    animation1.setDuration(35000);
    ImageView rimg = (ImageView) findViewById(R.id.cloud1);
    rimg.setVisibility(View.VISIBLE);
    animation1.setRepeatCount(-1);
    rimg.startAnimation(animation1);
  } 
},0);

Handler handler2 = new Handler();
handler2.postDelayed(new Runnable() {
  public void run() {
    Animation animation = new TranslateAnimation(0 ,0 ,0 ,100 );
    animation.setDuration(800);
    ImageView rimg3 = (ImageView) findViewById(R.id.drops);
    animation.setRepeatCount(-1);
    rimg3.startAnimation(animation);
    rimg3.setVisibility(View.VISIBLE);
  }
},1000);

Handler handler3 = new Handler();
handler3.postDelayed(new Runnable() {
  public void run() {
    Animation animation = new TranslateAnimation(0 ,0 ,-250 ,10 );
    animation.setDuration(800);
    ImageView rimg2 = (ImageView) findViewById(R.id.rainfall1);
    animation.setRepeatCount(-1);
    rimg2.startAnimation(animation);
    rimg2.setVisibility(View.VISIBLE);
    }
},5000);

Handler handler4 = new Handler();
handler4.postDelayed(new Runnable() {
  public void run() {
    Animation animation = new TranslateAnimation(0 ,0 ,-150 ,10 );
    animation.setDuration(800);
    ImageView rimg3 = (ImageView) findViewById(R.id.drops1);
    animation.setRepeatCount(-1);
    rimg3.startAnimation(animation);
    rimg3.setVisibility(View.VISIBLE);
    }
},10000);

Handler handler5 = new Handler();
handler5.postDelayed(new Runnable() {
  public void run() {
    Animation animation1 = new TranslateAnimation(-290, 290,0, -150);
    animation1.setDuration(35000);
    ImageView rimg = (ImageView) findViewById(R.id.cloud2);
    rimg.setVisibility(View.VISIBLE);
    animation1.setRepeatCount(-1);
    rimg.startAnimation(animation1);
  }
},15000);

1 个答案:

答案 0 :(得分:1)

除非您的代码示例中没有显示原因,否则您无需发布Runnables来运行这些动画。您可以从主UI线程启动动画。有关更多详细信息,请查看此处的文档:

http://developer.android.com/guide/topics/graphics/view-animation.html

在这里

http://developer.android.com/reference/android/view/animation/Animation.html

如果要错开动画开始时间,也可以设置StartOffset。

如果您想在动画结束时执行某些操作,可以使用Animation.setAnimationListener