Animation selber programmieren?

  • Antworten:3
Thomas L.
  • Forum-Beiträge: 58

24.03.2012, 11:54:27 via Website

Hallo zusammen,
ich hänge wieder an meinem Tacho den ich programmieren wollte.
Ich hab jetzt eigentlich alles hinbekommen, bin aber noch nicht so ganz zufrieden.
Ich habe eine eigene View geschrieben, in der der Tacho dargestellt wird. Der Hintergrund des Tachos wird in die View gezeichnet, und in der onDraw() Methode wird die entsprechend gedrehte Nadel darübergelegt.
Nun ist es aber so, dass ich die darzustellende Geschwindigkeit nur einmal pro Sekunde aktualisieren will. Wenn man in dieser Sekunde stark beschleunigt oder bremst, führt das dazu, dass die Tachonadel "springt" (also von 100km/h auf z.B. 50km/h).
Nun will ich also immer, wenn die Geschwindigkeit aktualisiert wird, die Nadel zu ihrem Punkt via Animation drehen lassen, so dass eine flüssige Bewegung der Nadel entsteht.
Eine RotationAnimation fällt erstmal aus, da diese auf die gesamte View angewandt wird, also sich mein gesamter Tacho dreht.

Meine Frage:
Kann man performant eine eigene Animation programmieren, oder sollte man lieber eine SurfaceView über die TachoView legen, in der dann die Nadel allein dargestellt wird?

Selbst programmieren würd ich die Animation in etwa so, dass ein neuer Thread ca. 30mal pro Sekunde, den Anstellwinkel der Nadel neu berechnet und die onDraw() Methode neu aufruft.
Belastet das die CPU zu stark?
Wieviele Threads darf man denn in etwa pro App laufen lassen, ohne dass die Performance der App spürbar einbricht?

Vielen Dank schonmal für jeden Tip.

Antworten
Pider Parker
  • Forum-Beiträge: 11

27.08.2012, 09:40:37 via Website

Hi

bist du mit deinem Tacho vorangekommen?
Will auch einen Tacho bzw. Drehzahlmesser animieren.
Stehe aber erst noch ganz am Anfang. Versuchte schon einige Sachen wie onDraw(). Nur will das ganze bei mir nicht funktionieren.

Wenn es dir nix ausmacht. Postet du am besten deinen Code ;)

Antworten
Maximilian O
  • Forum-Beiträge: 990

27.08.2012, 15:29:03 via Website

Hi,
ihr müsst dazu einen Thread starten, in diesem läuft eine while() Schleife ab, in welcher immer die onDraw Methode aufgerufen wird. Eine feste FPS ist immer Mist, also nicht "30 Mal pro Sekunde". Durch die Schleife ist es auf jedem Gerät so schnell wie es geht.

Liebe Grüße Maximilian

Vergiss nie wieder Geburtstage, oder viel schlimmer, deinen Hochzeitstag - Birthdays Download

Antworten
André
  • Forum-Beiträge: 77

27.08.2012, 15:38:28 via Website

Maximilian O
ihr müsst dazu einen Thread starten, in diesem läuft eine while() Schleife ab, in welcher immer die onDraw Methode aufgerufen wird. Eine feste FPS ist immer Mist, also nicht "30 Mal pro Sekunde". Durch die Schleife ist es auf jedem Gerät so schnell wie es geht.

Das würde ich so nicht unterschreiben. Bei der Entwicklung für mobile Geräte finde ich es wichtig, auch auf den Energieverbrauch zu achten, und der ist unnötig hoch wenn du mit 100 FPS malst. Eine einstellbare oder auf 30 festgelegte Obergrenze finde ich deutlich besser.

Wolfgang S.

Antworten