2015-09-29 46 views
19

如何使用Android中的屬性動畫增加視圖高度?Android屬性動畫:如何增加視圖高度?

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

translationY實際移動視圖不會增加高度。我怎樣才能增加視圖的高度?

回答

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

規模增加雙方的高度。我想增加一個方向的高度。 –

+0

使用'ValueAnimator'代替 –

+0

是的,這就是我在你的答案之前所做的:-p,但我會接受它。謝謝 –

3

您可以使用ViewPropertyAnimator,它可以爲您節省一些代碼行:

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

,應該是你所需要的,一定要查看文檔和ViewPropertyAnimator所有可用的方法。

+0

不要忘記創建AccelerateDecelerateInterpolator實例的右括號 – RTF

+0

@ RTF謝謝,已完成。 –