2015-09-29 11 views
19

Android'de Özellik Animasyonlarını kullanarak görünüm yüksekliğini nasıl artırırsınız?Android özellik animasyonu: Görünüm yüksekliğini nasıl artırırım?

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

The translationY, gerçekte görünümü yükseltmiyor, yüksekliği artırmaz. Görünümün yüksekliğini nasıl artırabilirim?

cevap

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

skalası, yüksekliğini her iki yönde artırır. yüksekliği bir yöne artırmak istiyorum. –

+0

yerine "ValueAnimator" yerine –

+0

evet, cevabınızdan önce yaptığım şey: - p, ama kabul edeceğim. –

3

kişinin size kod satırları kaydedebileceğiniz, ViewPropertyAnimator kullanabilirsiniz: tüm gereken

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

, dokümantasyon ve ViewPropertyAnimator için mevcut tüm yöntemleri mutlaka kontrol edin.

+0

AccelerateDecelerateInterpolator örnek oluşturma – RTF

+0

@ RTF üzerinde kapatma parantezleri unutmayın, teşekkürler. –