2014-04-15 98 views
0

我正在嘗試使用matrix.setRotate(45)等向動態壁紙添加不同的動畫,但它沒有奏效。它所做的只是以45度顯示圖片。我以爲它會旋轉到45度?如何添加動畫?

我想補充不同的動畫到幻燈片動態壁紙像旋轉,褪色,翻譯,轉換,縮放等

我甚至嘗試

matrix.setRotate(90);

matrix.setTranslate(100,100);

但圖片顯示很怪異。也許,有任何動畫....

我知道如何將res/anim/animation.xml中的動畫應用到NONE動態壁紙,但我似乎無法找到一種方法來應用此動畫.xml添加到動態壁紙。

是可能和簡單的方法來應用動畫動態壁紙

非常感謝您的幫助提前。

Java代碼:

......

.....

....

private void drawFrame() { 
    // TODO Auto-generated method stub 
    final SurfaceHolder holder = getSurfaceHolder(); 
    Canvas c = null; 
    try { 
     c = holder.lockCanvas(); 
     if (c != null) { 


      drawPirate(c); 
     } 
    } finally { 
     if (c != null) 
      holder.unlockCanvasAndPost(c); 
    } 
    mhandler.removeCallbacks(drawrunnable); 
     if (mVisible) { 
      mhandler.postDelayed(drawrunnable); 
     } 
    } 

private void drawPirate(Canvas c) { 
    // TODO Auto-generated method stub 

    Bitmap icon;    
    Matrix matrix = new Matrix(); 
    matrix.setRotate(45); 

    icon = BitmapFactory.decodeResource(getResources(),pirates[i]); 
    c.drawBitmap(icon, matrix, null); 
    icon.recycle(); 
} 

}

回答

1

我不是熟悉動態壁紙,但希望我能回答一些其他問題。

  1. setRotate不是一個動畫,它旋轉到其設置一次性
  2. 好辦法做到這一點會爲您創造並條機)一個線程(並使其循環中調用drawPirate(C),而每次遞增旋轉值,以便您在setRotate(1),setRotate(2)等處繪製圖像,直到45爲止。您可能需要查看JetBoy android示例代碼以瞭解這種實現。
  3. 在draw方法中分配新事物和decodeResources並不是好習慣。當你多次打電話時,它必須每次都創造新的東西,並且會使事情減慢很多。
+0

感謝您的評論。我不知道setRotate ......不是一個動畫師。現在我明白了。我仍然不知道如何將動畫添加到我的動態壁紙。顯然,沒有人願意幫助你。正如我之前所說的,我可以使用anim/animation.xml將動畫添加到NONE動態壁紙中,而不會出現問題。你能給我鏈接Jetboy的例子嗎?謝謝 –

+0

這是在android的sdk示例中,您可以使用Android SDK管理器通過eclipse下載。 – Whitney

+0

我剛剛去過那裏,但沒有看到名爲「Jetboy」的樣本是否使用了不同的名稱?謝謝 - user3506585 10分鐘前 –