gpt4 book ai didi

java - Android 单击使用动画的 ImageView 时动态重置 ImageView 位置

转载 作者:太空宇宙 更新时间:2023-11-04 13:00:11 25 4
gpt4 key购买 nike

我最近一直在寻找在动画期间单击图像时动态设置 ImageView 的 x 和 y 位置的方法,但效果不佳。我的 ImageView 以 XML 开头,并具有使 ImageView 落向屏幕底部的动画。

当用户单击它时,我希望 ImageView 现在转到布局的最顶部(屏幕顶部),然后我可以随机选择 x 位置。基本上这样它就可以保持从同一位置开始并落向屏幕底部。如果用户单击 ImageView,它将返回到顶部,以便动画可以再次发生。

我有一个这样的动画:

ViewPropertyAnimator viewPropertyAnimator = myImageView.animate()
.translationY(bottomOfScreen)
.setInterpolator(new AccelerateInterpolator())
.setInterpolator(new BounceInterpolator())
.setDuration(1000);

我在 myImageView 的 onClickListener 中设置了这样的 x 和 y:

myImageView.setOnClickListener(new View.OnClickListener() {
Random randomX = new Random();
myImageView.setX(randomX.nextInt(500 - 0 + 1) + 0);
myImageView.setY(-300);
}

x 似乎可以将 ImageView 放置在我想要的 x 上的任何位置。然而,似乎由于当您单击 ImageView 时发生动画(将 ImageView 移向布局底部),y 始终设置为单击位置。

最佳答案

首先,有些事情在您的代码中没有意义。这一行:

myImageView.setX(randomX.nextInt(500 - 0 + 1) + 0);

令人困惑,可以简化为

 myImageView.setX(randomX.nextInt(500 + 1));

这一行:

myImageView.setY(-300);

表示您将 ImageView 放置在 y 轴 -300 的位置,即超出屏幕。请记住,y = 0 是屏幕的顶部。当你只设置 X 和 setY 时,它看起来也不酷。 View 消失并在其他地方弹出。你为什么不尝试这样的事情:

myImageView.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
Random randomX = new Random();

myImageView.animate()
.translationX(randomX.nextInt(500 + 1))
.translationY(myImageView.getHeight())
.setInterpolator(new AccelerateDecelerateInterpolator())
.setDuration(500)
.setListener(new Animator.AnimatorListener() {
@Override
public void onAnimationStart(Animator animation) {

}

@Override
public void onAnimationEnd(Animator animation) {
myImageView.animate()
.translationY(bottomOfScreen)
.setInterpolator(new AccelerateInterpolator())
.setInterpolator(new BounceInterpolator())
.setDuration(1000);
}

@Override
public void onAnimationCancel(Animator animation) {

}

@Override
public void onAnimationRepeat(Animator animation) {

}
});
}
});

这会将 View 动画回到顶部,并等待动画完成(感谢 AnimatorListener),然后在调用 onAnimationEnd() 时让它再次下降。

关于java - Android 单击使用动画的 ImageView 时动态重置 ImageView 位置,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35007351/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com