2014-12-04 13 views
10

Sto provando a creare un effetto pulsante infinito in un ImageView. Ma come è possibile mantenere l'offset?Ripetizione impulso Animazione

<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> 

risposta

42

In questo modo la vista (immagine) pulserà fino a 1,2 le sue dimensioni e indietro, ripetutamente.

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

Per rendere questo movimento più naturale mi remommend aggiungendo interpolatore come questo: scaleDown.setInterpolator (nuova FastOutSlowInInterpolator()); –

+0

Non ha funzionato affatto ... – santafebound

0

È possibile impostare i valori per ogni startOffset animazioni in vostro apparecchio.

0

Se si desidera creare un'animazione infinita, il modo migliore sarebbe creare una vista personalizzata e in onDraw creare l'animazione. Ad esempio: How to animate a path on canvas - android

In realtà si può anche fare animazione con SurfaceView.