2011-07-04 28 views
11

很容易找到许多文章讨论实时动态壁纸的初学者,它解决了涉及曲面等主要问题。Android动态壁纸的做法,性能和电池节省?

但是,动态壁纸的专业发展呢?为确保良好的性能,低功耗(以节省电池电量)和最适合不同的设备?

如果可能的话,覆盖这些问题的一些代码示例会很好。

回答

13

功耗...
1)目前最重要的是,当壁纸不可见时,应该将其自身关闭。多维数据集示例正确处理此问题,从而删除onDestroy(),onSurfaceDestroyed()和onVisibilityChanged()(当可见= false时)的可运行回调。
2)除此之外,功耗的最大决定因素将是您的帧速率。 24 fps的动画将耗费更多的果汁,而不是以1 fps更新的时钟,以使其扫描秒针成为可能。除了教育用户之外,没有办法解决这个问题,所以期望是合理的。无论是应用程序还是动态壁纸,动作游戏都会让你的电池无法工作。

性能...
绘制到画布有简单的好处,但对于非常复杂的壁纸,您将需要使用OpenGL。有GLWallpaperService和AndEngine。股票壁纸使用RenderScript进行操作(您可能会发现在Android源代码树中查找此代码非常有用 - 比SDK中的多维数据集示例复杂得多)。还有一些关于扩展libGDX来处理壁纸的讨论。

Best Fit ...
好吧,就像Android的其他部分一样:您需要根据可扩展比例设计您的作品,查询设备并进行相应调整。对于简单的壁纸,通常足以在onSurfaceChanged()中缩放您的图稿,在此处您将宽度和高度作为参数。在某些情况下,您可能需要检查完整的DisplayMetrics。