我正在尝试使用翻转动画(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();
}
答案 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
。