2011-08-25 4 views
2

Juste après une commande d'attente rapide qui fera arrêter mon application, par exemple 10 millisecondes, de sorte que cela ressemble à animer des choses (dans mon cas une balle).Vous cherchez juste une commande d'attente rapide et facile

public class PiranhaDrop extends Activity 
    { 
/** Called when the activity is first created. */ 
@Override 
public void onCreate(Bundle savedInstanceState) 
{ 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.main); 

    FrameLayout main = (FrameLayout) findViewById(R.id.main_view); 
    main.addView(new Drawing(this,0,0,0)); 
    int MyLoop=0; 
    while(MyLoop<100) 
    { 
     main.addView(new Drawing(this,MyLoop,10,10)); 
     synchronized(this){wait(10);} 
     //try{Thread.sleep(WaitTime);} catch (InterruptedException e){} 
     MyLoop=MyLoop+1; 
     main.setOnTouchListener(new View.OnTouchListener() 
     { 
      public boolean onTouch(View v, MotionEvent e) 
      { 
       float x = e.getX(); 
       float y = e.getY(); 
       FrameLayout flView = (FrameLayout) v; 
       flView.addView(new Drawing(getParent(),x,y,25)); 
       return false; 
      } 
     }); 
    } 
} 

}

Comme vous pouvez le voir, juste après la boucle commence, je l'ai essayé quelques petites choses (le WaitTime fait référence à une longue que je me suis débarrassé de, il ne fonctionne pas) - ni dont ont travaillé.

Merci.

Répondre

1

La bonne façon d'attendre est la suivante:

try 
{ 
    Thread.sleep(10); 
} 
catch (Exception e){} 

Cependant, notez que ce sera exécuté sur le thread d'interface utilisateur. Pour 10ms, il n'y a pas vraiment de problème et c'est la manière préférée d'attendre ... Mais pour des périodes plus longues, cela entraînera une mauvaise boîte de dialogue pour vos utilisateurs disant que votre application ne répond pas.

+0

Comme vous l'avez dit - c'est une mauvaise habitude d'appeler sleep() dans le thread UI. Donc, ne le présentez pas comme une solution. –

+0

Je ne suis pas d'accord. Pour 10ms c'est un bon moyen ... Bien que je ne sache pas ce qu'un sommeil de 10ms permettrait d'atteindre – IncrediApp

+0

Pensez que je l'ai eu en utilisant le code d'IncrediApp ci-dessus. L'émulateur dans Eclipse ne l'aime pas beaucoup mais je vais voir si je peux le faire fonctionner correctement. – djmcbell

4

Pas besoin de le faire à la main. Utilisez frame animation (avec une série de bitmaps) ou mieux un tween animation (déplacement/redimensionnement d'une vue existante).

Questions connexes