如何在Android屏幕上移动图像

时间:2012-01-01 22:33:35

标签: android animation

如何在屏幕上移动图像android?

伙计们,我正在为我的课程创建MoleMash游戏,我真的需要帮助!我想尝试在不同的随机坐标中移动屏幕上的图像(鼹鼠),以便用户可以触摸它以获得分数。我创建了我制作图像视图的背景。我有痣,它是另一个图像视图吗?还是图像按钮?

如何将其移动到屏幕的不同部分以供用户交互?

非常感谢你的帮助!

3 个答案:

答案 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) {

        }
    });
}