Frage

Ich programmiere einige benutzerdefinierte Steuerelemente in Java und verwende Animation für Übergänge/Verblassen/Bewegungen.

Ich mache das, dass ich einen neuen Thread starte und Anpassungen an Variablen vornehme und die Dinge mithilfe von Anpassungen angepasst werden paint() Methode.

Beispiel:

Meine Frage ist nun, sagen wir zum Beispiel, dass ich eine Verblasung implementiert habe. Ich würde die Alpha -Variable nach erhöhen byte x //between 0-255 und malen ein Rechteck wo alphaLevel += x, Zum Beispiel (in Pseudo-Code):

byte increment = 40;

for (byte i = 0; i < 255; i += increment)
{
    _parentClass.setAlphaLevel (i);
    _parentClass.repaint();
    Thread.sleep (10);    
}

_parentClass.setAlphaLevel (255);

Was ich wissen möchte ist, was am niedrigsten ist und was am höchsten ist, in den ich den Schlaf einstellen sollte, damit die Animation nicht abgehackt aussieht? Hat es etwas Toto mit den Aktualisierungsraten des Zielgeräts oder irgendetwas, das mit den menschlichen Augen todo ist? Gleiche Frage erneut mit Schritt. Gibt es eine Website, die mir gute Zahlen gibt, die ich kopieren kann?

Der Grund, warum ich frage, besteht darin, die Effizienz zu maximieren, da es auf einem batteriebetriebenen Gerät ausgeführt wird, sodass mehr CPU -Zeit = weniger Batterie. Worauf würdest du es setzen?

Vielen Dank.

War es hilfreich?

Lösung

Die Technik, die Sie suchen, heißt "Doppelpufferung".

Ich habe leider keine Zeit, Ihnen ein Beispiel zu zeigen, aber das ist es, was Sie untersuchen müssen.

Andere Tipps

Ich würde persönlich vorschlagen, die zu untersuchen Trident Animationsbibliothek, Selbst wenn Sie es in einem mobilen Kontext verwenden (wie es aus der Frage, die Sie sind), scheint die Bibliothek nur etwa 100.000 zu sein.

Ich bin mir nicht sicher, wie gut es für Ihre Situation geeignet ist, aber es ist einen Versuch wert.

Und auf einem nitpicky Punkt ... die byte Der Datentyp in Java ist nicht nicht signiert, daher beträgt der Bereich tatsächlich -128 bis 127.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top