Android动态壁纸 - 图层&动态壁纸中的XML基础知识

时间:2013-09-09 13:50:26

标签: java android xml android-layout live-wallpaper

我的问题可能很简单。我最近选择了为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完成吗?

1 个答案:

答案 0 :(得分:0)

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

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