2011-06-22 28 views
1

所以我刚刚开始学习如何在eclipse中创建动态壁纸,并且我无法在随机时间之后获得一条随机移动屏幕的简单线条,有点像流星。我想我的停止和启动是错误的也是......我想设置一个长度限制行... 我使用的CubeLiveWallpaper为模板如何通过android动态壁纸随机移动一条线?

/* 
    * 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); 
    } 
+0

我可以让线出现在屏幕上,但我希望它随机拍摄屏幕 – MJ93

回答

1

这是一个相当开放式题。我会尽力给你一些指示。 :-)

首先,对于我们在Google的好朋友的所有应有的尊重,Cube示例并不总是呈现“最佳实践”。最值得注意的是,你应该“永远不要”在你的墙纸中使用硬编码的常量......总是使用一定比例的屏幕尺寸。在大多数情况下,将onSurfaceChanged()的宽度和高度变量保存到类变量中是“足够好”的。我的观点是,你应该使用诸如“mScreenWidth/4”之类的东西来代替你的设备宽度的四分之一(不管是小巧的手机还是巨大的平板电脑),而不是“100”。

获取随机编号,你可以使用http://developer.android.com/reference/java/util/Random.html

至于动画本身,那么,你可以通过随机使用重新安排在postDelayed可运行()延迟随机化率。

现在,您可能想知道“棘手”的部分......绘制线条本身。 :-)我建议从一些非常简单的事情开始,并增加复杂性,因为你眼球的东西。比方说,你fr'instance生成随机起点和终点,让你最后一举将

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

想必,你将要画一条直线,这意味着保持恒定的坡度。您可以设置一个浮点“百分比”变量,初始化为零,并且每次通过可运行时,都会随机增加一个变量,以便在每次通过时指示您希望绘制的线条的“百分比”。因此,在您运行的每个呼叫看起来像

c.drawLine(startX, startY, startX + percentage * deltaX, startY + percentage * deltaX * slope, mPaint); 

(其中DELTAX = STOPX - STARTX)

显然,你想停下来,当你打了100%。

这真的只是一个开始。您可以根据需要使用动画(缓动等),例如使用类似以下的库:http://code.google.com/p/java-universal-tween-engine/

另一个选项取决于您尝试实现的效果,与AndEngine等游戏引擎一起工作。再次,相当沉重的责任。 :-) http://code.google.com/p/andenginelivewallpaperextensionexample/source/browse/

祝你好运!