2011-07-20 2 views
7

J'ai certaines méthodes dans ma vue qui modifient certaines des formes qui sont dessinées lors de l'appel. En Java, afin de s'assurer que le composant est mis à jour, j'appellerais repaint(). Y at-il quelque chose qui va s'assurer que ma vue est mise à jour correctement?Comment mettre à jour Android Views lors de modifications?

j'avais lu quelque part que l'appel invalidate() dans la méthode onDraw() garderait les choses à ce jour et donc je ne aurais pas besoin d'avoir quelque chose comme repaint() dans mes méthodes qui modifient que les formes qui sont tirés. Est-ce exact, ou y a-t-il autre chose que je dois faire?

EDIT

Pour ajouter dans un exemple, une méthode que j'appelle à mon avis est:

public void setLineThickness(int thickness) { 
    aLineThickness = thickness; 

    if(aLineThicness > 1) 
     //repaint();  - Okay in Java but not in Android 

} 

Répondre

16

Appel invalidate() racontera l'avis, il a besoin de se redessiner (appel onDraw) dans le courant l'avenir. Donc, si vous changez quelque chose dans votre vue, comme l'épaisseur de la ligne, appelez invalidate() après. De cette façon, vous savez que votre vue sera éventuellement mise à jour.

Tout votre code de dessin doit être implémenté dans onDraw() et vos autres méthodes devraient juste changer l'état de votre vue, qui sera ensuite utilisé pour le dessiner, après avoir appelé invalidate().

+0

Si je vous suis correctement, je devrais appeler 'invalidate()' dans ma méthode 'setLineThickness'? – StartingGroovy

+1

Si vous voulez que l'utilisateur de votre vue ne s'inquiète pas de devoir l'appeler, alors oui. Je le mettrais là (faites-en la dernière ligne dans la méthode) –

+0

Merci, je vais essayer et voir comment ça se passe – StartingGroovy

Questions connexes