2011-01-06 9 views
0

Ich versuche eine Animation zu erstellen, die einen Textview nach links schieben und wieder von rechts einschieben wird. Im Wesentlichen wäre dies der gleiche Texteffekt, der in der Stoppuhr & Timer-App verwendet wird (sportstracklive ist der Entwickler).Android animation startOffset lässt die Zielansicht blinken und animiert nicht

Ich kann eines dieser Animationssätze ausschließlich der anderen verwenden und es funktioniert gut, tut genau das, was ich will. Aber sobald ich versuche, sie zusammen zu verwenden, blinkt das TextView nur ungefähr 1 Sekunde lang über dem Kurs. Das Entfernen von StartOffset funktioniert wie erwartet. Beide Animationssätze laufen gleichzeitig.

Hier ist der XML:

<?xml version="1.0" encoding="utf-8"?> 
<set xmlns:android="http://schemas.android.com/apk/res/android"> 
    <translate 
     android:fromXDelta="0%" 
     android:toXDelta="-25%" 
     android:fromYDelta="0%" 
     android:toYDelta="0%" 
     android:duration="@android:integer/config_shortAnimTime" 
    /> 
    <alpha 
     android:interpolator="@android:anim/decelerate_interpolator" 
     android:fromAlpha="1.0" 
     android:toAlpha="0.0" 
     android:duration="@android:integer/config_shortAnimTime" 
    /> 
    <set> 
     <translate 
      android:fromXDelta="25%" 
      android:toXDelta="0%" 
      android:fromYDelta="0%" 
      android:toYDelta="0%" 
      android:startOffset="@android:integer/config_shortAnimTime" 
      android:duration="@android:integer/config_shortAnimTime" 
     /> 
     <alpha 
      android:interpolator="@android:anim/decelerate_interpolator" 
      android:fromAlpha="0.0" 
      android:toAlpha="1.0" 
      android:startOffset="@android:integer/config_shortAnimTime" 
      android:duration="@android:integer/config_shortAnimTime" 
     /> 
    </set> 
</set> 

Und hier ist der lange Java-Code, der es läuft:

AnimationSet mSlideRightToLeft = 
     (AnimationSet) AnimationUtils.loadAnimation(this, R.anim.slide_right_to_left); 
    mMyTextView.startAnimation(mSlideRightToLeft); 
+0

Nur neugierig: Warum haben Sie den zweiten Teil der Animation in einem Tag? Ich habe eine ähnliche Animation zu dem, was Sie versuchen zu erreichen, aber hatte nicht den zweiten Teil der Animation in einem anderen Tag – justinl

Antwort

2

Justinl Kommentar korrekt ist. Ich hatte das gleiche Problem vor ein paar Monaten. Entferne die gesetzten Tags um die anderen Animationen und behalte die startOffsets bei.

Weiter, um die Animation Satz in Ihrem Code entfernen und einfach eine normale Last Animation:

Animation a = AnimationUtils.loadAnimation(this, R.anim.slide_right_to_left); 
mMyTextView.startAnimation(a); 

Edit: Ja, es sieht aus wie Android einfach nicht dieses Setup mag, wenn es mehr Animationen gleichzeitig Zeit. Ich denke, Sie müssen möglicherweise separate Dateien für jeden Satz von Animationen erstellen und diese dann über ein AnimationSet in Ihrem Programm konfigurieren.

+0

gut zu wissen :) – justinl

+0

Sowohl die zusätzliche Tag und die Verwendung von AnimationSet kam von wreckless Experimentieren. Ich habe es noch einmal versucht, nochmals zu überprüfen und zu bestätigen, aber Ihre hier erwähnte Methode hat die gleichen Ergebnisse. Vielleicht ein bisschen schneller als ein Blinzeln, aber trotzdem das Blinzeln. –

+0

Das macht Sinn, danke für den Schnitt. Ich werde das ausprobieren und Sie wissen lassen, wie es läuft. –

Verwandte Themen