2015-09-29 16 views
19

Come aumentare l'altezza della vista utilizzando le animazioni di proprietà in Android?Animazione delle proprietà Android: come aumentare l'altezza della vista?

ObjectAnimator a = ObjectAnimator.ofFloat(viewToIncreaseHeight, "translationY", -100); 
a.setInterpolator(new AccelerateDecelerateInterpolator()); 
a.setDuration(1000); 
a.start(); 

La traduzioneY sposta effettivamente la vista senza aumentare l'altezza. Come posso aumentare l'altezza della vista?

risposta

53
ValueAnimator anim = ValueAnimator.ofInt(viewToIncreaseHeight.getMeasuredHeight(), -100); 
anim.addUpdateListener(new ValueAnimator.AnimatorUpdateListener() { 
    @Override 
    public void onAnimationUpdate(ValueAnimator valueAnimator) { 
     int val = (Integer) valueAnimator.getAnimatedValue(); 
     ViewGroup.LayoutParams layoutParams = viewToIncreaseHeight.getLayoutParams(); 
     layoutParams.height = val; 
     viewToIncreaseHeight.setLayoutParams(layoutParams); 
    } 
}); 
anim.setDuration(DURATION); 
anim.start(); 
+0

la scala aumenta l'altezza in entrambe le direzioni. Voglio aumentare l'altezza in una direzione. –

+0

usa 'ValueAnimator' invece –

+0

sì, questo è quello che ho appena fatto prima della tua risposta :-p, ma lo accetterò. grazie –

3

È possibile utilizzare ViewPropertyAnimator, che possono risparmiare alcune righe di codice:

yourView.animate().scaleY(-100f).setInterpolator(new AccelerateDecelerateInterpolator()).setDuration(1000); 

che dovrebbe essere tutto ciò che serve, assicuratevi di controllare la documentazione e tutti i metodi disponibili per ViewPropertyAnimator.

+0

Non dimenticare le parentesi di chiusura su quella creazione di istanza di AccelerateDecelerateInterpolator – RTF

+0

@ RTF Grazie, fatto. –

Problemi correlati