2017-09-02 8 views
0

私はValueAnimatorを試していますが、複数のプロパティを設定することはできません。アニメーションを使用して表示するパディングを設定する方法は?

ValueAnimator animate = ValueAnimator.ofInt(leftO, left, topO, top, rightO, right, bottomO, bottom); 
    animate.setDuration(250); 
    animate.addUpdateListener(new ValueAnimator.AnimatorUpdateListener() { 
     @Override 
     public void onAnimationUpdate(ValueAnimator valueAnimator) { 
      greenTarget.setPadding(valueAnimator.getAnimatedValue(), ? ? ?); 
     } 
    }); 
    animate.start(); 

これはどのようにするのですか?たぶん代わりにObjectAnimatorを使用していますか?もしそうなら、そこにパディングを設定する方法は?

答えて

0
ValueAnimator animator = ValueAnimator.ofInt(view.getPaddingRight(), _20dp); 
animator.addUpdateListener(new ValueAnimator.AnimatorUpdateListener() 
{ 
    @Override 
    public void onAnimationUpdate(ValueAnimator valueAnimator){ 
    view.setPadding(_6dp, _6dp, (Integer) 
    valueAnimator.getAnimatedValue(), 0); 
    } 
}); 
animator.setDuration(200); 
animator.start(); 
+0

一度に4つのパディングを更新する必要があります。ここでは1つだけ更新しています。 – Tryam

+0

setPadding(left、top、right、bottom) –

+0

リスナーで行う場合は、間違っています。 'getAnimatedValue()'のように計算された値だけを使うことができるからです。左、上などの最終的な値は使用できません。 – Tryam

0

あなたはスタート間のアニメーションは属性値(値は例えば、XMLで定義されている)と、(例えば、プログラムで定義された)の値を変更できるようにTransitionManagerを使用しようとすることができます。

あなたのXMLのルートレイアウトを必要とする、私はのLinearLayout例えば、アニメーション化するためにここにmViewGroupとビューの直接の親のレイアウトタイプを、それを命名:

TransitionManager.beginDelayedTransition(mViewGroup, new ChangeBound()); 

LinearLayout.LayoutParams params = (LinearLayout.LayoutParams) greenTarget.getLayoutParams(); 
params.setPadding(left, top, right, bottom); 
greenTarget.setLayoutParams(params); 

・ホープ、このことができます。

関連する問題