Android View.onDraw () a toujours un canevas propre
Je suis en train de dessiner une animation. Pour ce faire j'ai Vue étendue et remplacé le onDraw() la méthode. Ce que je m'attends, c'est que chaque fois onDraw() est appelée la toile serait dans l'état que je l'ai laissé et j'ai pu choisir d'effacer ou tout simplement dessiner sur des parties de celui-ci (C'est la façon dont cela a fonctionné quand j'ai utilisé une SurfaceView) mais à chaque fois que la toile revient déjà effacé. Est-il une manière que je ne peux pas l'avoir effacé? Ou peut-être économiser de l'état précédent en une image Bitmap, donc je peux juste attirer l'image Bitmap, puis tirer sur le haut du tableau?
source d'informationauteur CaseyB | 2010-03-11
Vous devez vous connecter pour publier un commentaire.
Je ne sais pas si il existe un moyen ou pas. Mais pour mes vues personnalisées soit je redessine tout chaque fois onDraw() est appelée, ou de dessiner une image bitmap, puis dessiner l'image de la toile (comme vous le suggérez dans votre question).
Voici comment je le fais
vous devriez avoir un regard ici pour voir la différence entre l'affichage de base et surfaceView. Une surfaceView a une couche particulière pour le dessin, qui, je suppose, garde la trace de ce que vous avez dessiné avant. Maintenant, si vous voulez vraiment le faire sur une Vue de base, vous pourriez essayer de mettre chaque élément que vous dessinez dans un tableau, comme l'exemple de détaillée de recouvrement pour la mapview.
Il doit travailler de presque de la même manière
Vos attentes ne sont pas foc w/réalité 🙂 La toile ne sera pas la façon dont vous l'avez laissé, mais il vide à la place. Vous pouvez créer une liste de tableaux d'objets à tirer (toile.drawCircle(), toile.drawBitmap (), etc.), faites de même si la liste de tableaux dans le OnDraw(). Je suis nouveau sur le graphique de programmation, mais j'ai utilisé ce sur une petite échelle. Peut-être il ya une bien meilleure façon.