在动态壁纸中绘制和删除Canvas上的圆/位图

时间:2012-03-20 12:45:08

标签: android live-wallpaper

链接到我之前的Moving Circle on Live Wallpaper问题。我每次都用新位图移动一个圆圈,在新位置上绘制圆圈,即(x,y)。但是在我看来这不是一个很好的方法,所以我认为是否可以删除在动态壁纸画布上绘制的圆圈/位图?

如果是,那么请分享一些代码/链接。

1 个答案:

答案 0 :(得分:0)

如果您遇到性能问题,请在代码的此处......

BitmapFactory.Options options = new BitmapFactory.Options();
            options.inPurgeable = true;
            bitmap = BitmapFactory.decodeResource(getResources(),
                    R.drawable.aquarium, options);

...你每帧都在解码一个位图。这很昂贵,应该避免。

而是在位图中读取一次,然后使用它在每一帧中绘制到画布。

同样,你应该尝试不在draw循环中实例化任何东西。你在那里创造的一切都必须是垃圾收集,这将减慢事情。任何对象都试图在绘制循环之外实例化。所以你可以做的另一件事就是在构造函数中执行此操作:

Paint paint = new Paint();