很容易找到很多文章讨论初学者动态壁纸的实现,这些文章涉及涉及Surfaces等的主要问题。
但是动态壁纸的专业发展怎么样?以正确的方式构建代码的最佳实践是什么,以确保良好的性能,低功耗(以节省电池电量)并最适合不同的设备?
如果可能的话,一些涵盖这些问题的代码示例会很棒。
答案 0 :(得分:13)
耗电量...
1)到目前为止,最重要的是你的壁纸在看不到时会自动关闭。多维数据集示例正确处理此问题,删除onDestroy(),onSurfaceDestroyed()和onVisibilityChanged()中的可运行回调(当可见== false时)。
2)除此之外,功率消耗的最大决定因素是你的帧速率。一个24 fps的动画将比仅以1 fps更新的时钟消耗更多的果汁以使其扫秒针。除了教育用户之外,没有办法解决这个问题,因此期望是合理的。无论是app还是动态壁纸,动作游戏都会杀死你的电池。
...性能
绘制到画布具有简单的优点,但对于非常复杂的壁纸,您将需要使用OpenGL。有GLWallpaperService和AndEngine。股票壁纸被装配使用RenderScript(您可能会发现在Android源代码树中查找此代码非常有用 - 比SDK中的多维数据集示例复杂得多)。并且有一些关于扩展libGDX以处理壁纸的讨论。
最适合...
好吧,它就像Android的其他部分一样:您需要根据可扩展的比例设计您的作品,查询设备并进行相应调整。对于简单的壁纸,通常足以在onSurfaceChanged()中缩放您的图稿,在这里您可以获得宽度和高度作为参数。在某些情况下,您可能需要检查完整的DisplayMetrics。