我的问题可能真的很简单。我最近选择了为Android(通常是Android编码)创建动态壁纸,由于缺乏动态壁纸编码,我缺乏基本知识。

我想创建带有2个(或更多)“图层”的动态壁纸。我的两个所谓的层是:


对触摸事件有反应的背景
位图,在最上面


目前,我正在单个画布中绘制所有内容,如下所示:

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索引(具有多个图层)-是否还可以像在“常规应用程序”中那样使用XML来完成?

最佳答案

今天,我在GitHub上发布了live wallpaper template,它使用画布和单独的动画线程。如果您只是从动态壁纸开始,则可能需要检查一下。

对于您的情况,您只应解码一次位图,然后简单地绘制即可。每帧重绘位图都没有错。如果要具有多个图层,只需按顺序绘制它们即可,以便最后绘制顶层。

10-08 03:04