2014-12-04 6 views
10

Ich versuche einen unendlichen pulsierenden Effekt in einem ImageView zu erzeugen. Aber wie ist es möglich, den Offset zu halten?Wiederholungsimpuls Animation

<set xmlns:android="http://schemas.android.com/apk/res/android" 
android:shareInterpolator="false"> 
<scale 
    android:duration="700" 
    android:fromXScale="1" 
    android:fromYScale="1" 
    android:pivotX="50%" 
    android:pivotY="50%" 
    android:toXScale="0.5" 
    android:toYScale="0.5"/> 
<scale 
    android:duration="700" 
    android:fromXScale="1" 
    android:fromYScale="1" 
    android:pivotX="50%" 
    android:pivotY="50%" 
    android:startOffset="700" 
    android:toXScale="2" 
    android:toYScale="2"/> 
</set> 

Antwort

42

Dadurch wird Ihre (Bild-) Ansicht wiederholt auf die Größe 1,2 und zurück pulsieren.

ImageView iv = (ImageView) findViewById(R.id.my_imageview); 

ObjectAnimator scaleDown = ObjectAnimator.ofPropertyValuesHolder(
        iv, 
        PropertyValuesHolder.ofFloat("scaleX", 1.2f), 
        PropertyValuesHolder.ofFloat("scaleY", 1.2f)); 
scaleDown.setDuration(310); 

scaleDown.setRepeatCount(ObjectAnimator.INFINITE); 
scaleDown.setRepeatMode(ObjectAnimator.REVERSE); 

scaleDown.start(); 
+1

Um diese Bewegung natürlicher zu machen remommend ich Interpolator wie diese hinzu: scaleDown.setInterpolator (neu FastOutSlowInInterpolator()); –

+0

Hat überhaupt nicht funktioniert ... – santafebound

0

Sie können in Ihrem Set startOffset Werte für die einzelnen Animationen gesetzt.

0

Wenn Sie eine unendliche Animation erstellen möchten, besteht die beste Möglichkeit darin, eine benutzerdefinierte Ansicht zu erstellen und Ihre Animation in onDraw zu erstellen. Zum Beispiel: How to animate a path on canvas - android

Eigentlich können Sie auch Animation mit SurfaceView tun.