Animation Relative Field Variability

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 revive it.

+4
source share
2 answers

You can use ValueAnimator as follows:

 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 is available from Honeycomb, but you have a NineOldAndroids port.

+4
source

Or better yet, use the animation:

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

Or better yet, use the helper library :

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

Source: https://habr.com/ru/post/1492309/


All Articles