2010-10-27 7 views
3

Si je change une source de ImageView à une autre, (et donc de changer l'image) mais que d'autres changements se produisent dans la méthode et ainsi de suite. Comment puis-je forcer à actualiser pour afficher les modifications avant la fin de la méthode? (Attendre que la méthode se termine pour montrer que les images modifiées ne sont pas bonnes du tout)Comment actualiser l'écran avant qu'une méthode ne se termine par un droid?

Répondre

2

There's a Very Similar question that has an excellent answer (and a link to another similar question) right here.

Fondamentalement, sauf si vous créez vous-même un thread, vous exécutez le thread d'interface utilisateur. Invalider/dormir ne fait que mettre en pause le rendu/entrée/etc. Votre redraw() est seulement appelé dans le thread d'interface utilisateur après que votre fonction actuelle se termine. Vous souhaitez séparer les deux ou utiliser une technique de niveau inférieur (postInvalid() dans un autre fil, ou SurfaceView avec repaint() respectivement).

+0

hmmm Je suis encore un peu confus bien que j'ai l'impression d'approcher ce projet dans le mauvais sens -_- Un thread est-ce que la classe Java lancée est correcte? J'ai un énorme playscreen.java qui est lancé lorsque le bouton de lecture est pressé à partir d'un autre écran. Cela contient à la fois l'interface utilisateur et le "moteur de jeu" Donc si j'ai besoin de rafraîchir ... je dois lancer mon "moteur de jeu" dans une autre classe .. qui est aussi lancé quand l'interface utilisateur est lancée et a le postInvalid() à chaque changement d'image ou de texte? Aussi ce qui se passerait avant le postInvalid et comment puis-je lancer les deux depuis le début –

+0

Il semble que votre "moteur de jeu" est en cours d'exécution sur le thread UI. C'est très très mauvais – Falmarri

+0

donc mon moteur de jeu devrait être dans une classe Java différente? Comment puis-je faire fonctionner l'interface utilisateur et la classe du moteur de jeu en même temps? –