如何在屏幕上移动图像android?
伙计们,我正在为我的课程创建MoleMash游戏,我真的需要帮助!我想尝试在不同的随机坐标中移动屏幕上的图像(鼹鼠),以便用户可以触摸它以获得分数。我创建了我制作图像视图的背景。我有痣,它是另一个图像视图吗?还是图像按钮?
如何将其移动到屏幕的不同部分以供用户交互?
非常感谢你的帮助!
答案 0 :(得分:2)
对于游戏开发,您需要学习如何使用canvas和SurfaceView:How can I use the animation framework inside the canvas?
使用onTouch事件监听器,您可以将触摸位置与动画图像的位置进行比较......
答案 1 :(得分:0)
鼹鼠将是一个图像按钮,因此可以点击它,但为了让它移动你必须使用动画。请记住,我也是Android动画的初学者:)。您可能会使用TranslateAnimation并将参数中的x和y设置为随机变量,持续时间可以是在游戏开始后时间/计数器变量达到某个点时。这篇文章提供了有关动画的更多信息:How to move an image from left to right in android。
答案 2 :(得分:0)
试试这段代码,
声明以下变量
private Random random=new Random();
private int screenwidth, screenhgt;
在onCreate()中:
screenwidth= getyourScreenWidth;
screenhgt=getyourscreenheight;
将您的视图传递给此方法(在我的情况下,我为textview设置动画..您传递了imageview)
private void screenRandomAnimator(final TextView textView) {
final AnimatorSet mAnimatorSet = new AnimatorSet();
mAnimatorSet.playTogether(ObjectAnimator.ofFloat(textView, "x", (float) random.nextInt(screenwidth), (float) random.nextInt(screenwidth)),
ObjectAnimator.ofFloat(textView, "y", (float) random.nextInt(screenhgt), (float) random.nextInt(screenhgt)), ObjectAnimator.ofFloat(textView, "rotation", 360)
/* ObjectAnimator.ofFloat(textView, "scaleX", 1, 0.8f, 1, 1.1f, 1), ObjectAnimator.ofFloat(textView, "scaleY", 1, 0.8f, 1, 1.1f, 1)*/);
int Low = 1500;
int High = 2500;
int Result = random.nextInt(High - Low) + Low;
mAnimatorSet.setDuration(Result);
mAnimatorSet.start();
mAnimatorSet.addListener(new Animator.AnimatorListener() {
@Override
public void onAnimationStart(Animator animation) {
}
@Override
public void onAnimationEnd(Animator animation) {
mAnimatorSet.playTogether(ObjectAnimator.ofFloat(textView, "x", textView.getX(), (float) random.nextInt(screenwidth)),
ObjectAnimator.ofFloat(textView, "y", textView.getY(), (float) random.nextInt(screenhgt)));
int Low = 1500;
int High = 2500;
int Result = random.nextInt(High - Low) + Low;
mAnimatorSet.setDuration(Result);
mAnimatorSet.start();
}
@Override
public void onAnimationCancel(Animator animation) {
}
@Override
public void onAnimationRepeat(Animator animation) {
}
});
}