如何使用android Live墙纸在屏幕上随机移动线条?

如何使用android Live墙纸在屏幕上随机移动线条?,android,live-wallpaper,Android,Live Wallpaper,所以我刚刚开始学习如何在eclipse中创建实时墙纸,我很难在一段随机的时间后,让一条简单的线在屏幕上随机移动,有点像流星。我认为我的停止和开始也是错误的。。。我正试图为这条线设定一个长度限制。。。 我正在使用立方体壁纸作为模板 /* * Draw a line */ void drawCube(Canvas c) { c.save(); c.drawColor(0xff000000); drawLine(c);

所以我刚刚开始学习如何在eclipse中创建实时墙纸,我很难在一段随机的时间后,让一条简单的线在屏幕上随机移动,有点像流星。我认为我的停止和开始也是错误的。。。我正试图为这条线设定一个长度限制。。。 我正在使用立方体壁纸作为模板

    /*
     * Draw a line
     */
    void drawCube(Canvas c) {
        c.save();
        c.drawColor(0xff000000);
        drawLine(c);
        c.restore();
    }

    /*
     * Line path
     */
    void drawLine(Canvas c) {

        // Move line across screen randomly


        // 
        float startX = 0;
        float startY = 0;
        float stopX =  100;
        float stopY =  100;

        c.drawLine(startX, startY, stopX, stopY, mPaint);
    }

这是一个非常开放的问题。我会给你一些建议。:-)

首先,请尊重我们在谷歌的好朋友,立方体的例子并不总是“最佳实践”。最值得注意的是,你应该“永远”在你的壁纸中使用硬编码常量…总是使用你屏幕大小的一部分。在大多数情况下,将onSurfaceChanged()中的宽度和高度变量保存为类变量“足够好”。我的观点是,你应该用“mScreenWidth/4”来表示你设备宽度的四分之一,而不是“100”(无论是小巧的手机还是巨大的平板电脑)

要获得随机数,可以使用

至于动画本身,您可以通过在postDelayed()中随机化用于重新安排可运行时间的延迟来随机化速率

到目前为止,您可能想知道“棘手”的部分…画线本身。:-)我建议从非常简单的事情开始,在你关注事物时增加复杂性。比如说,你生成了随机的开始点和结束点,这样你的最后一杆将会是

c.drawLine(startX, startY, stopX, stopY, mPaint);
大概,你会想要画一条直线,这意味着保持一个恒定的斜率。您可以设置一个浮点“percentage”变量,初始化为零,每次通过runnable,将其随机递增,以便在每次通过时,它指示您希望绘制的线条的“percentage”。因此,runnable中的每个调用

c.drawLine(startX, startY, startX + percentage * deltaX, startY + percentage * deltaX * slope, mPaint);
(其中deltaX=stopX-startX)

显然,当你达到100%时,你想停下来

这真的只是一个开始。您可以随心所欲地使用动画(放松等),例如使用以下库:

另一个选择,取决于你想要达到的效果,是使用一个游戏引擎,比如AndEngine。同样,任务相当繁重。:-)


祝你好运

这是一个非常开放的问题。我会给你一些建议。:-)

首先,请尊重我们在谷歌的好朋友,立方体的例子并不总是“最佳实践”。最值得注意的是,你应该“永远”在你的壁纸中使用硬编码常量…总是使用你屏幕大小的一部分。在大多数情况下,将onSurfaceChanged()中的宽度和高度变量保存为类变量“足够好”。我的观点是,你应该用“mScreenWidth/4”来表示你设备宽度的四分之一,而不是“100”(无论是小巧的手机还是巨大的平板电脑)

要获得随机数,可以使用

至于动画本身,您可以通过在postDelayed()中随机化用于重新安排可运行时间的延迟来随机化速率

到目前为止,您可能想知道“棘手”的部分…画线本身。:-)我建议从非常简单的事情开始,在你关注事物时增加复杂性。比如说,你生成了随机的开始点和结束点,这样你的最后一杆将会是

c.drawLine(startX, startY, stopX, stopY, mPaint);
大概,你会想要画一条直线,这意味着保持一个恒定的斜率。您可以设置一个浮点“percentage”变量,初始化为零,每次通过runnable,将其随机递增,以便在每次通过时,它指示您希望绘制的线条的“percentage”。因此,runnable中的每个调用

c.drawLine(startX, startY, startX + percentage * deltaX, startY + percentage * deltaX * slope, mPaint);
(其中deltaX=stopX-startX)

显然,当你达到100%时,你想停下来

这真的只是一个开始。您可以随心所欲地使用动画(放松等),例如使用以下库:

另一个选择,取决于你想要达到的效果,是使用一个游戏引擎,比如AndEngine。同样,任务相当繁重。:-)


祝你好运

我可以让线条出现在屏幕上,但我想让它在屏幕上随机拍摄我可以让线条出现在屏幕上,但我想让它在屏幕上随机拍摄