[ERLEDIGT] RotateAnimation verzögerungsfrei

znieh99

znieh99

Fortgeschrittenes Mitglied
12
Hallo Forum,
ich möchte ein ImageView mehrmals rotieren lassen. Dabei tritt nach jeder vollen Umdrehung eine sichtbare Verzögerung auf. Wie kann ich das verhindern?
lg Heinz
Code:
        ImageView iv = (ImageView) this.findViewById(R.id.pause);
        final RotateAnimation rotate = new RotateAnimation(0, 360,
                Animation.RELATIVE_TO_SELF, 0.5f, Animation.RELATIVE_TO_SELF, 0.5f);
        rotate.setDuration(1000);
        rotate.setRepeatCount(Animation.INFINITE);
        rotate.setFillAfter(true);
        iv.setAnimation(rotate);
 
Hallo,

habe hier mal was zum Thema gefunden, vielleicht hilft dir das schon weiter. Füge mal folgende Zeile in dein Animations-XML File ein.
Code:
android:interpolator="@android:anim/linear_interpolator"
Hoffe es hilft :)

Alternativ kannst du mal noch versuchen, beim Übergeben der Parameter deiner RotateAnimation die 360 (gehe mal davon aus dass das die Grad-Bezeichnung ist) in 359 umzuschreiben, da 360 Grad und 0 Grad prinzipiell in dem Fall das gleiche sein sollten und das eventuell die Verzögerung verursacht. Aber nur ne Vermutung, hab ich gerade noch beim Recherchieren gefunden. :)
 
Zuletzt bearbeitet:
lordzwieback schrieb:
habe hier mal was zum Thema gefunden, vielleicht hilft dir das schon weiter. Füge mal folgende Zeile in dein Animations-XML File ein.
Hallo Lord,
ich habe keinen Animations-XML File, ich mache die Animation im Code,
lg heinz
 
Okay, dann versuch mal das mit dem Übergabeparameter (360 -> 359). Siehe mein Nachtrag von meiner ersten Antwort.
 
lordzwieback schrieb:
Okay, dann versuch mal das mit dem Übergabeparameter (360 -> 359). Siehe mein Nachtrag von meiner ersten Antwort.
Hat leider auch keine Auswirkung,
lg heinz
 
Hallo Heinz ,

versuche mal bitte deine Animation mittels XML zu lösen .

Ich bin mir nicht ganz Sicher , aber ich meine irgendwo mal gelesen zu haben , dass es bei reinem Code
Resourcenprobleme geben soll.

Und eine Rotation verlangt der Engine ziemlich viel Resourcen ab
 
swa00 schrieb:
versuche mal bitte deine Animation mittels XML zu lösen .
Hallo Stefan,
ich werde das versuchen,
lg heinz
 
@swa00
ich habe das nun mit XML gemacht und das Ergebnis ist das Gleiche. Nach einer Umdrehung wird kurz gestoppt und dann beginnt die nächste Umdrehung. Damit ist es keine kontinuierliche Rotation.
lg Heinz
Neuer Code:
anim.rotate
Code:
<?xml version="1.0" encoding="utf-8"?>
<set xmlns:android="http://schemas.android.com/apk/res/android">

    <!-- Parameter für Rotation -->
    <rotate android:fromDegrees="0"
    android:toDegrees="360"
    android:pivotX="50%"
    android:pivotY="50%"
    android:duration="1000"
    android:repeatMode="restart"
    android:repeatCount="infinite"
    android:interpolator="@android:anim/linear_interpolator"/>
     
</set>
Java
Code:
       ImageView iv = (ImageView) this.findViewById(R.id.pause);
        final Animation anim = AnimationUtils.loadAnimation(this, R.anim.rotate);
        iv.startAnimation(anim);
 
Moin Heinz ,

und das passiert dir auch bei einem ganz kleinen Bitmap ??
 
Also ist jetzt auch wieder nur eine Vermutung von mir, habe das selbst noch nicht gemacht. Hier hast du auch wieder fromDegrees = 0 und toDegrees = 360. Ändere mal toDegrees auf 359.

Ich will dir damit nicht auf den Keks gehen, aber kannst es ja nochmal versuchen. :)
 
  • Danke
Reaktionen: znieh99
swa00 schrieb:
und das passiert dir auch bei einem ganz kleinen Bitmap ??
das Bitmap ist 50x50.
Ich habe ein Bitmap mit 10x10 als xxhdpi getestet. Das läuft rund ist aber nur mit einer Lupe sichtbar. Das selbe Bitmap als hdpi hat bereits die Verzögerung.
lg heinz
 
Du hast eindeutig ein Resourcenproblem - woher auch immer
Obwohl bei 50 x 50 sehr ungewöhnlich .

Und das Ganze auch auf verschiedenen Devices ??

Da Rotation einer der rechen intensivsten Animationen ist, kannst du die letzte Möglichkeit
probieren , indem du alles per Canvas realisierst. Das ist dann rechnerich ein anderes Verfahren.


P.S Animation ist sehr stark device und Resourcen abhängig , man sollte diese grundsätzlich sehr
sparsam verwenden um eine bestmögliche Kompatibilität zu erreichen.
Blinki blinki bunti mag zwar nett aussehen , kann aber wiederum ganz schnell einen Dislike bringen , weil alles
unflüssig läuft.
 
Zuletzt bearbeitet:
  • Danke
Reaktionen: znieh99, Nick Knight und lordzwieback
lordzwieback schrieb:
Ich will dir damit nicht auf den Keks gehen, aber kannst es ja nochmal versuchen.
du gehst mir nicht auf den Keks, ich habe das auch in beiden Varianten versucht, ohne Ergebnis. Habe nur vergessen es zurückzumelden,
lg heinz
[doublepost=1490348762,1490348296][/doublepost]
swa00 schrieb:
Und das Ganze auch auf verschiedenen Devices ??
Zum besseren Verständnis, ich teste das zur Zeit nur am PC mit Emulator.
lg heinz
 
  • Danke
Reaktionen: lordzwieback
Zum besseren Verständnis, ich teste das zur Zeit nur am PC mit Emulator.

Dann solltest du mal ein gutes Device versuchen.

Wir Gurus arbeiten eh so gut wie gar nicht mit dem Emulator.

Der hat Defizite ohne Ende , ist unstabil, unflexibel und nur absolute Notlösung.
Ausserdem macht er unter Win10 grosse Probleme und bei WIn7 nicht unter 16GB RAM vernünftig zu verwenden
 
Also ich hab es mal so gelöst ;)
Code:
<?xml version="1.0" encoding="utf-8"?>
<rotate xmlns:android="http://schemas.android.com/apk/res/android"
    android:duration="2000"
    android:pivotX="50%"
    android:pivotY="50%"
    android:toDegrees="1080" />
Also ich lasse das ganze direkt um die gesamte Gradzahl rotieren.

Hab das ganze auf verschiedenen Geräten probiert ohne Probleme festzustellen.
Nexus 7 (2012), Samsung Galaxy Nexus, Note 4, S3, Nexus 6 (soweit ich mich erinnre)
 
Zuletzt bearbeitet:
  • Danke
Reaktionen: Kardroid, znieh99, lordzwieback und eine weitere Person
@DagobertDokate

Vielleicht solltest du ihm noch bitte mittteilen, welches Bitmap du verwendest , damit er erahnen kann,
dass sein Problem eigentlich wo anders sein müsste

[Hat sich erledigt :) ]
 
Zuletzt bearbeitet:
DagobertDokate schrieb:
Also ich lasse das ganze direkt um die gesamte Gradzahl rotieren lassen.
Hallo Dagobert,
das ist die Lösung!!! Jetzt läuft es rund.
Danke auch an alle Beteiligten,
lg heinz
 
  • Danke
Reaktionen: lordzwieback und swa00
@znieh99

Du kannst - wenn du lust hast - daraus oben ein Codeschnipsel machen - ist immer hilfreich
 
  • Danke
Reaktionen: lordzwieback
swa00 schrieb:
Du kannst - wenn du lust hast - daraus oben ein Codeschnipsel machen - ist immer hilfreich
Was meinst du damit?
 
Er meint, dass du dein Animations-XML und den Code um die Animation zu starten hier posten kannst mit einer kleinen Erklärung, damit jemand, der das vielleicht mal machen möchte direkt ein Beispiel parat hat.
Im Unterforum selbst findest du auch nochmal eine Erklärung, was dort gepostet werden soll: Was soll in diesen Bereich?

Kleines Beispiel von mir: Splash Screen (Willkommensbildschirm) für App erstellen

Ist natürlich kein Muss. :)
 

Ähnliche Themen

say_hello
  • say_hello
Antworten
1
Aufrufe
882
swa00
swa00
H
Antworten
2
Aufrufe
1.080
haner
H
say_hello
Antworten
2
Aufrufe
950
swa00
swa00
Zurück
Oben Unten