2

我的问题可能很简单。我最近开始为 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-index(具有多个图层)——这也可以像“普通应用程序”那样使用 XML 来完成吗?

4

1 回答 1

0

今天我在 GitHub 上发布了一个动态壁纸模板,它使用了画布和一个单独的动画线程。如果您刚开始使用动态壁纸,您可能想检查一下。

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

于 2013-09-09T15:06:27.497 回答