1

我刚开始写动态壁纸。

我想做的是从我的资源中将背景设置为位图。我将在此之上绘制我的动画。

最有效的方法是什么?有没有办法将背景设置为动态壁纸中的位图?每次绘制动画之前,我是否只需要将位图绘制到画布中(这似乎效率极低)?

谢谢,

周杰伦

4

1 回答 1

1

这就是我发现的。

来自 eclipse 图形文档:

注意:每次从 SurfaceHolder 检索 Canvas 时,都会保留 Canvas 的先前状态。为了正确地为您的图形设置动画,您必须重新绘制整个表面。例如,您可以通过使用 drawColor() 填充颜色或使用 drawBitmap() 设置背景图像来清除 Canvas 的先前状态。否则,您将看到您之前执行的绘图的痕迹

所以我使用的代码如下:

在 onCreate() mBitmapBase = BitmapFactory.decodeResource(getResources(), R.drawable.bidBackground);

in onSurfaceChanged() // 调整背景位图的大小,使其有效绘制 mBitmapBackground = Bitmap.createScaledBitmap(mBitmapBackground, xMax, yMax, true);

并在 Run() 中尝试 { canvas = sHolder.lockCanvas(); if (canvas != null) canvas.drawBitmap(mBitmapBackground, 0, 0, null);

据我所知,这是尽可能高效的。虽然如果有人能纠正我这个问题,我很想听听。

于 2011-02-26T14:55:17.763 回答