要在半圆中移动的ImageView动画(Android)

要在半圆中移动的ImageView动画(Android),android,android-animation,Android,Android Animation,我正在尝试学习一点有关动画的知识,因此决定使用ImageView从左到右浏览屏幕,这是我通过以下方法实现的: TranslateAnimation mAnimation = new TranslateAnimation(0, 180, 0, 0); mAnimation.setDuration(1000); mAnimation.setFillAfter(true); mAnimation.setRepeatCount(-1

我正在尝试学习一点有关动画的知识,因此决定使用
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();
但是,我无法获得正确的定位。我有一个半圆(好),但是,它像向后的C一样移动图像,而不是从左到右的直线,然后拱起回到它的起始位置(坏)

我不确定是否应该使用
AnimatorSet
将左右移动和拱背移动链接在一起,以创建一个完整的动画


有谁能给我一些关于如何实现我所描述的目标的指导吗

这对我来说应该很容易MotionLayout@TimCastelijns谢谢你的建议,以后我会考虑使用约束布局。然而,我想知道是否有一种基于不必使用约束布局的解决方案。