简体   繁体   中英

Is it a good idea to use 5-6 threads in an animation?

I am using 5-6 threads for displayng one animation at a time.I am using translate animations as well as frame animations. Is this a good idea? What is the best way to do it? My code is give below.

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

Unless there is a reason not shown in your code sample, you do not need to post Runnables to run these animations. You can start the animations from the main UI thread. For more details, check out the documentation here:

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

and here

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

You can also set the StartOffset if you want to stagger the animation start times.

And if you want to do something when the animation ends, you can use Animation.setAnimationListener

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM