2012-09-10 16 views
10

Qualcuno conosce le animazioni Android? Voglio creare qualcosa di simile al seguente:Come creare animazioni di spostamento/ridimensionamento in Android?

  • Ho una grande immagine al centro dello schermo del mio dispositivo;
  • questa immagine diventa piccola (per animazione) e va all'angolo dello schermo del mio dispositivo;

La sua una cosa del genere in questa sequenza sotto:

enter image description here

Eventuali suggerimenti sarebbe molto apprezzato! Grazie in anticipo!

risposta

8

Utilizzare ViewPropertyAnimator, con metodi come scaleXBy() e translateYBy(). Ottienichiamando animate() su un View, su API Livello 11+. Se stai supportando i dispositivi più vecchi, NineOldAndroids offre un backport quasi simile a quello di lavoro.

Si potrebbe anche desiderare di leggere:

+0

Grazie a CommonsWare. Surelly, questo è di grande aiuto! – mthama

7

Ho una classe con la rotazione e il movimento simultaneo. È costoso ma funziona su tutte le versioni API.

public class ResizeMoveAnimation extends Animation { 
    View view; 
    int fromLeft; 
    int fromTop; 
    int fromRight; 
    int fromBottom; 
    int toLeft; 
    int toTop; 
    int toRight; 
    int toBottom; 

    public ResizeMoveAnimation(View v, int toLeft, int toTop, int toRight, int toBottom) { 
     this.view = v; 
     this.toLeft = toLeft; 
     this.toTop = toTop; 
     this.toRight = toRight; 
     this.toBottom = toBottom; 

     fromLeft = v.getLeft(); 
     fromTop = v.getTop(); 
     fromRight = v.getRight(); 
     fromBottom = v.getBottom(); 

     setDuration(500); 
    } 

    @Override 
    protected void applyTransformation(float interpolatedTime, Transformation t) { 

     float left = fromLeft + (toLeft - fromLeft) * interpolatedTime; 
     float top = fromTop + (toTop - fromTop) * interpolatedTime; 
     float right = fromRight + (toRight - fromRight) * interpolatedTime; 
     float bottom = fromBottom + (toBottom - fromBottom) * interpolatedTime; 

     RelativeLayout.LayoutParams p = (LayoutParams) view.getLayoutParams(); 
     p.leftMargin = (int) left; 
     p.topMargin = (int) top; 
     p.width = (int) ((right - left) + 1); 
     p.height = (int) ((bottom - top) + 1); 

     view.requestLayout(); 
    } 
} 
+0

yip ... funziona bene – Houston

+0

Questo funziona brillantemente! Grazie! – instanceof

+0

Come chiamiamo questa animazione di ridimensionamento con la vista come menzionato – shobhan

Problemi correlati