ImageView随着FlingAnimation消失

时间:2019-11-24 17:44:37

标签: android animation

我正在尝试使用翻转动画(https://developer.android.com/guide/topics/graphics/fling-animation)使图像在屏幕上移动。该活动使用约束布局,并且只有两个视图在其上-按钮和imageview。当球开始沿y轴移动时,它最终消失。这是显示问题https://gyazo.com/cc822247117485beb8d0aa8316072b00

的GIF

移动球的代码:

//Button code
public void start(View v) {

    FlingAnimation fling = new FlingAnimation(ball, DynamicAnimation.SCROLL_Y);
    fling.setMinValue(0)
            .setFriction(1.1f)
            .setStartVelocity(1000);


    fling.addUpdateListener(new DynamicAnimation.OnAnimationUpdateListener() {
        @Override
        public void onAnimationUpdate(DynamicAnimation animation, float value, float velocity) {
            ball.setX(ball.getX() + 4);
        }
    });

    fling.addEndListener(new DynamicAnimation.OnAnimationEndListener() {
        @Override
        public void onAnimationEnd(DynamicAnimation animation, boolean canceled, float value, float velocity) {
            Toast t = Toast.makeText(getApplication(), "ended", Toast.LENGTH_SHORT);
            t.show();
        }
    });

    fling.start();


}

1 个答案:

答案 0 :(得分:0)

这确实有点令人困惑,但是原因是DynamicAnimation.SCROLL_Y只是在其位置的边界内滚动视图,因此最终消失了。如果您将编写如下内容,则可以看到此内容:

fling.addEndListener(new DynamicAnimation.OnAnimationEndListener() {
    @Override
    public void onAnimationEnd(DynamicAnimation animation, boolean canceled, float value, float velocity) {
        Toast t = Toast.makeText(getApplication(), "ended", Toast.LENGTH_SHORT);
        t.show();
        v.setScrollY(0);
    }
});

您将看到视图弹出回到原始位置。

解决方案非常简单:请勿使用DynamicAnimation.SCROLL_Y,而应使用:DynamicAnimation.Y