ImageView动画以半圆移动(Android)

时间:2018-11-26 22:14:43

标签: android android-animation

我试图学习一些有关动画的知识,因此决定让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);

因此,我决定接受一个新的挑战。图像从左向右移动后,我想通过从右向左向后弯曲到其起始位置(基本上是一个完整的半圆)来尝试使图像返回到起始位置。但是,一旦图像到达位置180处的x轴末端,我就会卡住。

在阅读了有关动画的不同方法之后,我选择尝试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将左右运动和向后拱起运动链接在一起以创建一个完整的动画...

任何人都可以给我一些有关如何实现我所描述的内容的指导吗?

0 个答案:

没有答案