我刚开始写动态壁纸。
我想做的是从我的资源中将背景设置为位图。我将在此之上绘制我的动画。
最有效的方法是什么?有没有办法将背景设置为动态壁纸中的位图?每次绘制动画之前,我是否只需要将位图绘制到画布中(这似乎效率极低)?
谢谢,
周杰伦
我刚开始写动态壁纸。
我想做的是从我的资源中将背景设置为位图。我将在此之上绘制我的动画。
最有效的方法是什么?有没有办法将背景设置为动态壁纸中的位图?每次绘制动画之前,我是否只需要将位图绘制到画布中(这似乎效率极低)?
谢谢,
周杰伦
这就是我发现的。
来自 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);
据我所知,这是尽可能高效的。虽然如果有人能纠正我这个问题,我很想听听。