2012-10-04 13 views
21

Tak więc miałem problemy z animacją, zwłaszcza gdy dwie animacje występują natychmiast lub w prawo, gdy aktywność się ładuje. Rozumiem, że to prawdopodobnie problem z zasobami i wiele rzeczy dzieje się w głównym wątku powodującym, że animacje się zacinają.Animacja Androida zmniejsza liczbę zacięć/niepewność/opóźnienie

Znalazłem kilka ciekawych propozycji:
1. Nitki (ThreadPoolExecutor)
tutaj:How do I make my animation smoother Android
2. setDrawingCacheEnabled (true)
tutaj:How does Android's setDrawingCacheEnabled() work?
3. ViewGroup: animationCache = true
Tutaj: http://www.curious-creature.org/2010/12/02/android-graphics-animations-and-tips-tricks/

Jednak nie udało mi się znaleźć żadnego rodzaju przykładów wdrożenia tych rzeczy. Jakieś pomysły?

+0

AsyncTasks są również łatwym sposobem wdrożenia wątki tła. Jeśli wykonujesz wiele obliczeń w głównym wątku, zdecydowanie musisz zaimplementować wątek lub asynktas, główny wątek jest tutaj dla interfejsu użytkownika, a nie dla podnoszenia ciężkiego. – Teovald

+0

Tak, wiem, szukam więcej przykładów animacji używanych w wątkach/AsyncTasks – Rawr

Odpowiedz

8

mam zmniejszyć ilość jąkania na moich animacji, wykonując następujące zasady wymienione w kolejności ich znaczenia przy zmniejszaniu zacinać:

  1. Nie zainicjowania animacji w onCreate, onStart lub onResume.
  2. Inicjowanie animacji zdarzeń użytkownika, takich jak onClick i wyłączanie zdarzeń dotyku do zakończenia animacji.
  3. Nie zainicjować więcej niż 2 animacje równocześnie
+0

jak możemy "unieść interakcję użytkownika do czasu zakończenia animacji?" –

+0

po uruchomieniu animacji ustaw zmienną, np. AnimStart = 1, i sprawdź tę zmienną, gdy zamierzasz obsługiwać naciśnięcia przycisków itp. Na przykład, jeśli przenosisz warstwę, nie chcesz, aby użytkownicy naciskali przycisk podczas warstwa zmienia położenie. Ustaw zmienną i usuń ją po zakończeniu animacji. – Rawr

+0

Jaki byłby najlepszy sposób, aby to osiągnąć? A co, jeśli potrzebuję animować podczas ładowania aktywności? – Si8