【发布时间】:2011-02-24 21:50:34
【问题描述】:
我刚开始写动态壁纸。
我想做的是从我的资源中将背景设置为位图。我将在此基础上绘制我的动画。
最有效的方法是什么?有没有办法将背景设置为动态壁纸中的位图?我是否只需要在每次绘制动画之前将位图绘制到画布中(这似乎效率极低)?
谢谢,
杰
【问题讨论】:
-
动态壁纸?添加一些标签。
标签: bitmap live-wallpaper
我刚开始写动态壁纸。
我想做的是从我的资源中将背景设置为位图。我将在此基础上绘制我的动画。
最有效的方法是什么?有没有办法将背景设置为动态壁纸中的位图?我是否只需要在每次绘制动画之前将位图绘制到画布中(这似乎效率极低)?
谢谢,
杰
【问题讨论】:
标签: bitmap live-wallpaper
这是我发现的。
来自 eclipse 图形文档:
注意:每次从 SurfaceHolder 检索 Canvas 时,都会保留 Canvas 的先前状态。为了正确地为您的图形设置动画,您必须重新绘制整个表面。例如,您可以通过使用 drawColor() 填充颜色或使用 drawBitmap() 设置背景图像来清除 Canvas 的先前状态。否则,您会看到之前绘制的痕迹
所以我使用的代码如下:
在 onCreate() mBitmapBase = BitmapFactory.decodeResource(getResources(), R.drawable.bidBackground);
在 onSurfaceChanged() // 调整背景位图的大小,以便有效地绘制 mBitmapBackground = Bitmap.createScaledBitmap(mBitmapBackground, xMax, yMax, true);
在 Run() 中 尝试 { 画布 = sHolder.lockCanvas(); 如果(画布!= null) canvas.drawBitmap(mBitmapBackground, 0, 0, null);
据我所知,这是尽可能高效的。虽然如果有人能纠正我这个问题,我很乐意听到。
【讨论】: