【发布时间】:2011-03-31 23:39:54
【问题描述】:
我是 Android 开发的新手,我对制作动态壁纸很感兴趣。我正在考虑循环一组图片而不是绘制动画。这是一种可能的方法吗?如果可能,这是一种合适或理想的方法,它会占用内存吗?由于碎片,我需要不同分辨率的图像吗?(数百种不同的设备)
提前致谢:)
【问题讨论】:
标签: android image live-wallpaper
我是 Android 开发的新手,我对制作动态壁纸很感兴趣。我正在考虑循环一组图片而不是绘制动画。这是一种可能的方法吗?如果可能,这是一种合适或理想的方法,它会占用内存吗?由于碎片,我需要不同分辨率的图像吗?(数百种不同的设备)
提前致谢:)
【问题讨论】:
标签: android image live-wallpaper
当然,应该很简单。
壁纸引擎的主要部分当然是绘图。您需要手动处理绘图,没有简单的方法来循环图像......您需要对其进行编码。您将不得不持续监控已经过去的时间,并据此调整显示的图像。您将获得一个要绘制的 Canvas 对象,这一切都是在运行时在代码中完成的。
Wallpaper 引擎类有一个名为 onSurfaceChanged 的事件,它为您提供将要绘制到的 Surface 的宽度和高度。每次屏幕尺寸发生变化时都会调用它(例如,如果手机进入横向模式)。您需要有代码来处理所有设备类型的宽度或高度的任意组合。您需要决定是否要拉伸、居中、平铺或裁剪(或两者的组合)源图像以适应任何特定的屏幕尺寸。我会建议缩放以适应,以便图像比屏幕更高或更宽,并在完成后将图像垂直或水平居中(裁剪额外的位)。我个人只使用一种源大小并调整它的大小以适应。如果需要,您可以选择使用多个源文件,我认为这是推荐的方法,但这有点令人困惑。
我会从创建一个动态壁纸开始,它只是在屏幕上绘制一些基本的东西,比如一个形状。然后找出如何显示自定义图像并从那里获取它。
祝你好运
【讨论】:
如果采用帧方法制作动画,您将需要非常注意内存 - 可能不可能 为全帧制作动画 - 更实用在背景上移动精灵。见,例如:http://davidjhinson.wordpress.com/2010/05/19/scarce-commodities-google-android-memory-and-bitmaps/
【讨论】:
如果你有一个 png 帧动画,它设置在某个 x 和 y 位置,并且位于背景图像的某个位置,那么两者都必须重新缩放
【讨论】: