我想制作一个简单的活动,在屏幕的一侧有一个船只和一个按钮。按下按钮后,我希望船向上移动X距离。此值X由运行时定义的值计算。
我读过的关于动画和图像翻译的其他堆栈溢出帖子谈论了如何使用TranslationAnimation对象和其他类似的类在屏幕上移动图像,但我尝试过的所有内容都需要给出文字值或最终变量。
我需要帮助让我的图像在动态变量的屏幕上移动。这可能吗?
答案 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
。