链接到我之前的Moving Circle on Live Wallpaper问题。我每次都用新位图移动一个圆圈,在新位置上绘制圆圈,即(x,y)。但是在我看来这不是一个很好的方法,所以我认为是否可以删除在动态壁纸画布上绘制的圆圈/位图?
如果是,那么请分享一些代码/链接。
答案 0 :(得分:0)
如果您遇到性能问题,请在代码的此处......
BitmapFactory.Options options = new BitmapFactory.Options();
options.inPurgeable = true;
bitmap = BitmapFactory.decodeResource(getResources(),
R.drawable.aquarium, options);
...你每帧都在解码一个位图。这很昂贵,应该避免。
而是在位图中读取一次,然后使用它在每一帧中绘制到画布。
同样,你应该尝试不在draw循环中实例化任何东西。你在那里创造的一切都必须是垃圾收集,这将减慢事情。任何对象都试图在绘制循环之外实例化。所以你可以做的另一件事就是在构造函数中执行此操作:
Paint paint = new Paint();