Aller au contenu

rafraichir l'affichage d'une view


danielfr40

Recommended Posts

Dans mes programmes de jeu, j'utilise une view.

Je mémorise le canvas passé en argument de la fonction OnDraw afin de dessiner dans la view sur action de l'utilisateur.

Mais mes modifications ne sont pas affichées, ou alors au bout de 10 secondes, je vois alors que mes modifications ont bien été prises en compte

J'ai vu que la plupart des programmes utilisaient la fonction invalidate pour provoquer la mise à jour de l'affichage de la view, mais cette fonction efface alors une zone de la view, me forçant à la redessiner

Je ne trouve pas de fonction update ou refresh au niveau de l'activité ou de la view qui forcerait son réaffichage sans avoir besoin de la redessiner

merci pour votre aide

Lien vers le commentaire
Partager sur d’autres sites

La modification de l'affichage au travers du Canvas ne devrait se faire que dans la méthode onDraw.

Le principe de base est que, si une action utilisateur implique de modifier l'affichage, tu invalides l'affichage par invalidate(), Android, de ce fait, appelle onDraw, dans laquelle tu rédessines ta vue.

D'autre part, Android peut être amené a appelé onDraw dans d'autres cas (une popup qui masquait une partie de l'affichage, et qui, une fois effacée, nécessite de redessiner la partie sous la popup, par ex.) et tu dois donc être en mesure, dans onDraw, de pouvoir redessiner l'affichage entièrement et de manière cohérente par rapport à l'état de ton application

Dans ton cas, si certaines parties de l'écran sont dessinées en dehors de l'appel à onDraw, un appel à onDraw initié par le système te fera perdre ces modifications visuelles

Lien vers le commentaire
Partager sur d’autres sites

La modification de l'affichage au travers du Canvas ne devrait se faire que dans la méthode onDraw.

Le principe de base est que, si une action utilisateur implique de modifier l'affichage, tu invalides l'affichage par invalidate(), Android, de ce fait, appelle onDraw, dans laquelle tu rédessines ta vue.

D'autre part, Android peut être amené a appelé onDraw dans d'autres cas (une popup qui masquait une partie de l'affichage, et qui, une fois effacée, nécessite de redessiner la partie sous la popup, par ex.) et tu dois donc être en mesure, dans onDraw, de pouvoir redessiner l'affichage entièrement et de manière cohérente par rapport à l'état de ton application

Dans ton cas, si certaines parties de l'écran sont dessinées en dehors de l'appel à onDraw, un appel à onDraw initié par le système te fera perdre ces modifications visuelles

Je vois, c'est bien ce que je craignais. Il va falloir que je gère un cache bitmap et que je le copie dans onDraw

J'ai fais des jeux bi-environnement, pour windows (javase) et téléphone (javame) avec un moteur commun et juste des procédures d'affichage différentes

Je les porte actuellement sous android, bien que je n'ai pas encore de machine android

J'avais trouvé dans ces deux envirronements des objets persistants, les panels sous javase et les tiled/sprites sous javame, dont je ne m'occupais pas du rafraîchissement

Mais il semble qu'il n'y ait pas l'équivallant sous android

Si java se veut portable, c'est quand même dommage qu'on voit tant de divergeances entre les kits de développement, sans parler des os qui ne supportent officiellement aucun interpréteur comme apple ou microsoft mobile

Merci pour votre aide

Lien vers le commentaire
Partager sur d’autres sites

Archivé

Ce sujet est désormais archivé et ne peut plus recevoir de nouvelles réponses.

×
×
  • Créer...