2011-07-20 12 views
7

Mam niektóre metody w moim widoku, które modyfikują niektóre kształty, które są rysowane po wywołaniu. W Javie, aby upewnić się, że komponent jest aktualizowany, zadzwoniłbym pod numer repaint(). Czy jest coś, co upewni mnie, że mój widok jest poprawnie zaktualizowany?Jak zaktualizować widoki systemu Android po modyfikacjach?

Czytałem gdzieś, że nazywając invalidate() w metodzie onDraw() by utrzymać wszystko na bieżąco i dlatego nie będzie musiał mieć coś podobnego repaint() w moich metod, które modyfikują że kształty, które są rysowane.

Czy to prawda, czy jest jeszcze coś, co muszę zrobić?

EDIT

Aby dodać przykład metodę nazywam moim zdaniem jest:

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

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

} 

Odpowiedz

16

Wywołanie invalidate() powie pogląd potrzebuje odświeżenia się (wezwanie OnDraw) kiedyś w przyszłość. Jeśli więc zmienisz coś w swoim widoku, np. Grubość linii, po nazwie wywołaj metodę invalidate(). W ten sposób wiesz, że Twój widok zostanie ostatecznie zaktualizowany.

Cały kod rysunkowy powinien zostać zaimplementowany w onDraw(), a inne metody powinny po prostu zmienić stan widoku, który zostanie następnie użyty do narysowania go, po wywołaniu metody invalidate().

+0

jeśli podążę za Tobą poprawnie, powinienem wywołać 'invalidate()' w mojej metodzie 'setLineThickness'? – StartingGroovy

+1

Jeśli chcesz, aby użytkownik Twojego widoku nie przejmował się tym, że musisz go wywoływać, to tak. Wstawiłbym to tam (uczyń to ostatnia linia w metodzie) –

+0

Dziękuję, dam ci spróbować i zobaczę, jak to działa – StartingGroovy

Powiązane problemy