2014-04-15 56 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分钟前 –