Thursday, August 19, 2010

Rysowanie po ekranie

Środowisko postawione, więc można zacząć przyglądać się bliżej jak działa Android, a dokładniej w jaki sposób można się dobrać do ekranu.

Rysować (czy też malować) można na dwa sposoby.
  1. Wrzucić rysowanie obiektów do metody onDraw() danego widoku (View). W momencie, kiedy system wykryje potrzebę odmalowania ekranu (np. gdy główne okno dostanie focusa), przejdzie przez cała hierarchie widoków wywołując metody onDraw. Jest to idealne rozwiązanie np. dla rysowania kontrolek, które nie zmieniają zbyt często swojego stanu.
  2. Bezpośrednie malowanie na płótnie (Canvas) z określoną częstotliwością. Od wersji 1 różni się tym, że sami wymuszamy niejako wywołanie funkcji onDraw().
Z racji tego, że w planie mam zbudowanie super wydajnego frameworka ;) zwycięzcą jest oczywiście podejście drugie.

Żeby nie było tak prosto, w sposobie 2 również mamy dwa podejścia. Pierwsze to rysowanie w wątku Activity (coś w rodzaju okna aplikacji) np. poprzez założenie timera i wołanie np. co 40ms (aby mieć płynną animację potrzebujemy co najmniej 25 klatek na sekundę) metody invalidate. Drugie podejście to wykorzystanie SurfaceView i renderowanie sceny gry tyle razy na sekundę na ile pozwala urządzenie w specjalnie do tego celu utworzonym wątku. Póki co nie decyduję się jeszcze na konkretne rozwiązanie (myślę jednak, że wykorzystanie drugiego wątku będzie efektywniejsze).

No comments:

Post a Comment