2016-08-30 4 views
0

Ich versuche eine Animation zu erstellen, um automatisch in meiner Scrollansicht zu scrollen.ObjektAnimator Dauer nicht respektiert

LinearLayout linearLayout = (LinearLayout) scrollView.getChildAt(0); 
// linearLayout.getHeight() == 540 
animScroll = ObjectAnimator.ofInt(scrollView, "scrollY", linearLayout.getHeight()); 

// animationDurationLong == 154000 
animScroll.setDuration(animationDurationLong); 
animScroll.setInterpolator(new LinearInterpolator()); 

animScroll.start(); 

Meine Animation perfekt funktioniert, blättere ich von der Spitze meines Scroll Inhalts auf den Boden, aber ich tue es in 96 Sekunden statt der 154 in einem festgelegten Zeitraum Sekunden.

Weiß jemand warum? Ich überprüfe Entwicklereinstellungen meines Telefons, an zwei Geräten versucht, immer noch das gleiche Problem.

+0

der letzte param von 'ofInt' falsch ist, müssen Sie:' Inhalt Höhe - Behälter height' – pskink

+0

Sie haben Recht, Danke pskink. Kannst du die Antwort posten, damit ich deine Antwort bestätige? – Aximem

Antwort

1

Ihr Ziel "scrollY" wahrscheinlich falsch ist (die letzte param von ofInt), müssen Sie etwas wie folgt aus:

height_of_content - height_of_container 
+0

Danke pskink, in meinem Beispiel habe ich: animScroll = ObjectAnimator.ofInt (scrollView, "scrollY", linearLayout.getHeight() - scrollView.getHeight()); Es funktioniert jetzt ! – Aximem

+0

jetzt endet die Animation nicht zu früh ... natürlich sei vorbereitet, wenn es <0 ist ;-) – pskink

Verwandte Themen