2
나는 다른 방식으로 저글링을하는 4 개의 서클이있는 애니메이션을 만들려고합니다.ValueAnimator가 하나의 요소를 사라지게합니까?
나는이 일을 ValueAnimator을 사용하고 있습니다,하지만 난 AnimatorSet를 두 번 반복 할 때, 하나 개의 요소는 무슨 일
... 사라지고 다시 나타납니다? 누가 알 겠어? 여기
objAnimator = ValueAnimator.ofFloat(0, 1);
objAnimator.setDuration(DURATION);
objAnimator.addUpdateListener(new ValueAnimator.AnimatorUpdateListener() {
@Override
public void onAnimationUpdate(ValueAnimator animation) {
float value = (Float) animation.getAnimatedValue();
elements[2].setTranslationX(lateralDistance * value);
}
});
objAnimatorTwo = ValueAnimator.ofFloat(0, 1);
objAnimatorTwo.setDuration(DURATION);
objAnimatorTwo.addUpdateListener(new ValueAnimator.AnimatorUpdateListener() {
@Override
public void onAnimationUpdate(ValueAnimator animation) {
float value = (Float) animation.getAnimatedValue();
elements[1].setTranslationX(lateralDistance * value);
}
});
objAnimatorThree = ValueAnimator.ofFloat(0, 1);
objAnimatorThree.setDuration(DURATION * 2);
objAnimatorThree.addUpdateListener(new ValueAnimator.AnimatorUpdateListener() {
@Override
public void onAnimationUpdate(ValueAnimator animation) {
float value = (Float) animation.getAnimatedValue();
elements[3].setTranslationX((-lateralDistance * 2) * value);
elements[3].setTranslationY((float)(-100 * Math.sin(value*Math.PI)));
}
});
animatorSet = new AnimatorSet();
animatorSet.play(objAnimator).with(objAnimatorThree)
.before(objAnimatorTwo);
animatorSet.addListener(new Animator.AnimatorListener() {
@Override
public void onAnimationStart(Animator animation) {
}
@Override
public void onAnimationEnd(Animator animation) {
elements[1].layout(elements[1].getLeft() + (int) lateralDistance,
elements[1].getTop(),
elements[1].getRight() + (int) lateralDistance,
elements[1].getBottom());
elements[2].layout(elements[2].getLeft() + (int) lateralDistance,
elements[2].getTop(),
elements[2].getRight() + (int) lateralDistance,
elements[2].getBottom());
elements[3].layout(elements[3].getLeft() + (int)(-lateralDistance * 2),
elements[3].getTop(),
elements[3].getRight() + (int)(-lateralDistance * 2),
elements[3].getBottom());
presetElementArray();
animatorSet.start();
}
@Override
public void onAnimationCancel(Animator animation) {
}
@Override
public void onAnimationRepeat(Animator animation) {
}
});
이 방법 presetElementArray()
private void presetElementArray() {
IndicatorElement temp1 = elements[1];
IndicatorElement temp2 = elements[2];
IndicatorElement temp3 = elements[3];
elements[1] = temp3;
elements[2] = temp1;
elements[3] = temp2;
}
한 사이클이 완료된 후 내가 설정 내가 원을 관리하는 배열 요소를 사용하고 있습니다 : 여기
코드입니다 AnimatorSet의 AnimatorListener에있는 각 요소의 위치입니다. 배열의 요소를 바꿔서 두 번째 사이클에서 다른 anymations를 반복하고 반복합니다. animation slowed and colored
좋아, 이건 ... 문제를 해결하고 나는, 감사를 제안 몇 가지를 사용 보인다. –