2013-07-19 64 views
4

代码:动画RelativeLayout的利润率变化

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

上面的代码工作正常,但我想制作动画。

回答

4

你可以使用一个ValueAnimator这样的:

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(); 

ValueAnimator可从蜂窝但你有NineOldAndroids端口。

+0

使用动作条福尔摩斯版本 - com.actionbarsherlock.internal.nineoldandroids.animation.ValueAnimator –

1

或者更好的是,使用动画:

Animation animation = new Animation() { 
    @Override 
    protected void applyTransformation(float interpolatedTime, Transformation t) { 
     LayoutParams params = view1.getLayoutParams(); 
     params.leftMargin = (int)(50 * interpolatedTime); 
     view1.setLayoutParams(params); 
    } 
}; 
animation.setDuration(300); 
animation.setInterpolator(new OvershootInterpolator()); 
view1.startAnimation(animation); 

或者更好的是,使用一个辅助library

ViewPropertyObjectAnimator.animate(view1).leftMargin(50).setDuration(300).start();