我的问题可能很简单。我最近选择了为Android创建动态壁纸(以及一般的Android编码),我缺乏动态壁纸编码背后的基础知识,因为它真的很难找到。
我想创建一个带有2个(或更多)“图层”的动态壁纸。我的两个所谓的层是:
目前我正在一个Canvas中绘制所有内容,如下所示:
Resources res = getResources();
Bitmap image = BitmapFactory.decodeResource(res, R.drawable.image);
Canvas c = null;
try {
c = holder.lockCanvas();
if (c != null) {
c.drawARGB(aa, rr, gg, bb);
c.drawBitmap(image, 0, 0, paint);
}
} finally {
if (c != null) holder.unlockCanvasAndPost(c);
}
它有效,但性能非常糟糕,因为我在每个帧重绘时都会绘制这个相对较大的PNG文件。
我想知道在动态壁纸中显示位图的最佳方法是什么? 以及如何在以后动画它们(基本上只是改变一个开始的位置)而不必每次都重绘它们? 最后,如何在动态壁纸中确定z-index(有多个图层) - 这也可以像在“普通应用程序”中那样用XML完成吗?
答案 0 :(得分:0)
今天我在GitHub上发布了live wallpaper template,它使用了canvas和一个单独的动画线程。如果您刚开始使用动态壁纸,可能需要查看一下。
在您的情况下,您应该只解码一次位图,然后简单地绘制它。每帧重绘位图没有错。如果您想要多个图层,只需按顺序绘制它们,以便最后绘制顶层。