使用在运行时计算的变量在屏幕上移动图像

时间:2014-11-24 22:11:39

标签: android image animation translation

我想制作一个简单的活动,在屏幕的一侧有一个船只和一个按钮。按下按钮后,我希望船向上移动X距离。此值X由运行时定义的值计算。

我读过的关于动画和图像翻译的其他堆栈溢出帖子谈论了如何使用TranslationAnimation对象和其他类似的类在屏幕上移动图像,但我尝试过的所有内容都需要给出文字值或最终变量。

我需要帮助让我的图像在动态变量的屏幕上移动。这可能吗?

1 个答案:

答案 0 :(得分:0)

不要使用Animation,使用Animator,这是新的做事方式。

你可以“动画化”视图的任何属性(在这种情况下,ImageView保持你的船只)。在这种情况下,您可以设置边距动画以获得所需的效果。您希望将layout_marginTop从某个值设置为0。

View shipView = ...;
ValueAnimator animator = ValueAnimator.ofInt(100, 0);
animator.setDuration(1000);
animator.addUpdateListener(new AnimatorUpdateListener() {

    @Override
    public void onAnimationUpdate(ValueAnimator animation) {
        RelativeLayout.LayoutParams lp = (RelativeLayout.LayoutParams) shipView.getLayoutParams();
        lp.setMargins(0, (Integer) animation.getAnimatedValue(), 0, 0);
        shipView.setLayoutParams(lp);      
    }
});
animator.start();

请注意,这假设您的shipView位于RelativeLayout