Анимация ImageView для перемещения в полукруге (Android) - PullRequest
0 голосов
/ 27 ноября 2018

Я пытаюсь немного узнать об анимации и поэтому решил получить ImageView для перехода по экрану слева направо, чего я достиг:

TranslateAnimation mAnimation = new TranslateAnimation(0, 180, 0, 0);
            mAnimation.setDuration(1000);
            mAnimation.setFillAfter(true);
            mAnimation.setRepeatCount(-1); 
            mAnimation.setRepeatMode(Animation.REVERSE);
            myImageView.setAnimation(mAnimation);

Итак, я решилпринять новый вызов.Как только изображение переместилось слева направо, я хотел попытаться вернуть изображение в исходное положение, отогнув его справа налево в исходное положение (в основном, полный полукруг).Однако, как только изображение достигло конца оси X в позиции 180, я застрял.

После прочтения о различных методах анимации я решил попробовать ValueAnimator:

ValueAnimator animator = ValueAnimator.ofFloat(0, 1); // values from 0 to 1
            animator.setDuration(1000); // 1 seconds duration from start to end position
            animator.setRepeatCount(-1);
            animator.setRepeatMode(ValueAnimator.REVERSE);
            animator.addUpdateListener(new ValueAnimator.AnimatorUpdateListener()
            {
                @Override
                public void onAnimationUpdate(ValueAnimator animation) {

                    float value = (Float) (animation.getAnimatedValue());

                    myImageView.setTranslationX((float)(180.0 * Math.sin(value*Math.PI)));
                    myImageView.setTranslationY((float)(80.0 * Math.cos(value*Math.PI)));

                }
            });
            animator.addListener(new AnimatorListenerAdapter()
            {
                @Override
                public void onAnimationEnd(Animator animation)
                {
                    // done
                }
            });
            animator.start();

Однако я не могу определить правильное положение.У меня есть полукруг (хорошо), однако, он перемещает изображение как обратную С, а не прямую линию слева направо, а затем возвращается обратно в исходное положение (плохо).

Яне уверен, стоит ли мне использовать AnimatorSet, чтобы связать движение слева направо и изгиб движения назад, чтобы создать одну целую анимацию ...

Может кто-нибудь дать мне несколько советов о том, как добиться того, что у меня есть?описал?

...