Android animator value

I am trying to animate 3 images one by one using a value animator, but I cannot decide how to call the three handlers at regular intervals. Suppose there are 3 images and im creating three handlers for their animation. But I can bring three images at a time, but not one at a time at regular intervals. Please, help

This is my UpdateListener, which I call from my handler

public void startAnimation_image(final ImageView aniView) { animator = ValueAnimator.ofFloat(0, .8f); animator.setDuration(Constants.ANIM_DURATION); animator.addUpdateListener(new ValueAnimator.AnimatorUpdateListener() { int Low = 10; int High = width-150; int R = (int) ((Math.random() * (High - Low)) + Low); @Override public void onAnimationUpdate(ValueAnimator animation) { float value = ((Float) (animation.getAnimatedValue())).floatValue(); aniView.setTranslationX(R); Log.e("mscale",150*mScale +""); Log.e("value is", value+""); aniView.setTranslationY((mDisplaySize.bottom + (150*mScale))*value); x_point = aniView.getTranslationX(); y_point = aniView.getTranslationY(); } }); animator.addListener(new AnimatorListener() { @Override public void onAnimationStart(Animator arg0) { } @Override public void onAnimationRepeat(Animator arg0) { } @Override public void onAnimationEnd(Animator arg0) { startAnimation(); } @Override public void onAnimationCancel(Animator arg0) { } }); animator.start(); } 

This is one of my handlers.

 @Override public void handleMessage(Message msg) { super.handleMessage(msg); //int viewId = new Random().nextInt(STARS.length); id = getApplicationContext().getResources().getIdentifier(STARS[0], "drawable", getApplicationContext().getPackageName()); inflate = LayoutInflater.from(StarsActivity2.this); img[0].setVisibility(ImageView.VISIBLE); img[0].setImageResource(id); mAllImageViews.add(img[0]); LayoutParams animationLayout = (LayoutParams) img[0].getLayoutParams(); img[0].setLayoutParams(animationLayout); Log.e("mHandler",img[0]+ ""); startAnimation_image(img[0]); } }; 

There are similaarly three handlers and three listener updates .. Please help ...

+6
source share
1 answer

You can delay the animation at offset ms by calling

 animation.setStartOffset(offset); 

So, for three images with a duration of ANIM_DURATION you can use the following values ​​to start them sequentially (perhaps by passing them as the startAnimation_image() parameter)

 // note: this is for illustrative purposes. You should put this in a loop int firstOffset = 0 * ANIM_DURATION; // starts immediately int secondOffset = 1 * ANIM_DURATION; // starts after the first animation is finished int thirdOffset = 2 * ANIM_DURATION; // starts after the second animation is finished // ... and so on. 
+2
source

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


All Articles