6
votes

Comment faire une pause pendant 5 secondes avant de dessiner la prochaine chose sur Android?

Disons que je veux dessiner une ligne, puis attendez cinq secondes, puis dessinez une autre ligne. J'ai une méthode comme celle-ci: xxx

Comment faire une pause?


2 commentaires

J'ai posé une question similaire, vérifiez-la.


Donc, vous devriez donner le lien à votre question !!!


4 Réponses :


-1
votes

Utiliser thread.sleep (5000) , cela devrait le faire.


5 commentaires

Cela semble attendre cinq secondes, puis attirer les deux lignes.


Probablement et dans tous les cas, vous ne devriez jamais tarder dans votre ONDRAW (). Rendrait votre application à lagon.


@ Source.RAR Où et comment ferais-je cela, alors?


@Deev, je pensais qu'il était signifié que tout le dessin est exécuté dans un fil séparé.


@Thebeatlemaniac Tous les dessins sont effectués sur le fil de l'interface utilisateur et Afaik, mettant un retard comme celui qui ne fera rien. L'écran ne se mettra à jour avant que la fonction ONDRAW revienne.



1
votes

Eh bien ... vous pouvez définir un drapeau (qui serait dans une autre méthode) et dans votre ONDRAW () en fonction de la valeur de ce drapeau dessinant cette ligne.

I.e. Peut-être que quelque chose comme (bien que je ne sois pas sûr de savoir pourquoi vous auriez besoin d'une pause) xxx


0 commentaires

2
votes

N'attendez pas la méthode onDraw, elle s'appelle dans le fil de l'interface utilisateur et vous le bloquerez. Utilisez des drapeaux pour manipuler quelle ligne sera dessinée xxx

que d'utiliser dans votre code comme celui-ci xxx


0 commentaires

6
votes

Vous pouvez utiliser un compte à rebours similaire à celui-ci:

public void onDraw(Canvas canvas) {
        int w = canvas.getWidth();
        int h = canvas.getHeight();
        canvas.drawLine(w/2, 0, w/2, h-1, paint);
        // PAUSE FIVE SECONDS
        new CountDownTimer(5000,1000){

            @Override
            public void onTick(long miliseconds){}

            @Override
            public void onFinish(){
               //after 5 seconds draw the second line
               canvas.drawLine(0, h/2, w-1, h/2, paint);
            }
        }.start();

    }


2 commentaires

Cela nécessite que je modifie H, w et toile aux variables finales. Quand je le fais et que je l'exécute, seule la première ligne est dessinée.


Je pense que vous avez manqué de commencer le comtedownter: !!! Essayez d'afficher un logcat MSG dans la méthode Onfinish () et voyez s'il est exécuté ou non