ObjectAnimatorプロパティアニメーションスケール、ViewAnimatorの使い方


需要
デフォルトのViewは徐々に大きくなり、viewが占める空間は徐々に大きくなります
ObjectAnimationで実現できると思っていたのですが、ちょっと無邪気
 
mSender.setVisibility(View.VISIBLE);//     
AnimatorSet animatorSet = new AnimatorSet();//      
ObjectAnimator scaleX = ObjectAnimator.ofFloat(mSender, "scaleX", 0, 1f);  
ObjectAnimator scaleY = ObjectAnimator.ofFloat(mSender, "scaleY", 0, 1f);  
  
animatorSet.setDuration(2000);  
animatorSet.setInterpolator(new DecelerateInterpolator());  
animatorSet.play(scaleX).with(scaleY);//          
animatorSet.start(); 

まずviewを可視に設定し、プロパティアニメーションxyを介して徐々に大きくなる
しかし、ビューが表示されていることに気づいたときに空間が一気に大きくなり(先に空間を占有し)、徐々にビューが大きくなります
-----------------------------------------
改善

mAddSender.setVisibility(View.VISIBLE);
int height = ((LinearLayout) findViewById(R.id.self_receiver_layout)).getHeight();
ValueAnimator scaleY = ValueAnimator.ofInt(0, height); ////            ,   view   GONE          
scaleY.addUpdateListener(new AnimatorUpdateListener() {
@Override
public void onAnimationUpdate(ValueAnimator animation) {
int animatorValue = Integer.valueOf(animation.getAnimatedValue() + "");
LinearLayout.LayoutParams params = (LinearLayout.LayoutParams) mAddSender.getLayoutParams();
params.height = animatorValue;
mAddSender.setLayoutParams(params);
}
});
scaleY.setTarget(mAddSender);
scaleY.setDuration(250);
scaleY.start();

考え方は、ViewAnimatorで徐々に高さの値を変更し、動的に高さの値を設定することです