2011-06-22 20 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/

祝你好運!