Search code examples
androidandroid-relativelayoutandroid-animation

Animate RelativeLayout margin change


Code:

RelativLayout.LayoutParams params = (RelativLayout.LayoutParams) view1.getLayoutParams();
params.setMargins(50, 0, 0, 0);
view1.setLayoutParams(params);

The above code is working fine, but I want to animate it.


Solution

  • You could use a ValueAnimator like this:

    ValueAnimator varl = ValueAnimator.ofInt(50);
    varl.setDuration(4000);
    varl.addUpdateListener(new AnimatorUpdateListener() {
    
        @Override
        public void onAnimationUpdate(ValueAnimator animation) {
            RelativeLayout.LayoutParams lp = (RelativeLayout.LayoutParams) view1.getLayoutParams();
            lp.setMargins((Integer) animation.getAnimatedValue(), 0, 0, 0);
            view1.setLayoutParams(lp);      
        }
    });
    varl.start();
    

    The ValueAnimator is available from Honeycomb but you have the NineOldAndroids port.