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