本文的示例apk下载地址:http://download.csdn.net/detail/dk8705/4673550
-----------------------------------------------------------------------------------------------------------------------
以下代码中展现了livewallpaper的一些框架;draw绘画的部分没有给出;
(1)继承自WallpaperService;
(2)复写@Override
public Engine onCreateEngine() {
return new WallpaperEngine(getResources());
}
(3)实现自动义的WallpaperEngine();
(4)在自定义class WallpaperEngine 的以下几个函数中进行画面显示处理;
@Override
public void onSurfaceCreated(SurfaceHolder holder) {
vc = new Vector<MyArc>();
ran = new Random();//备注1
super.onSurfaceCreated(holder);
}
@Override
public void onSurfaceDestroyed(SurfaceHolder holder) {
super.onSurfaceDestroyed(holder);
visible = false;
handler.removeCallbacks(drawThread);
}
@Override
public void onVisibilityChanged(boolean visible) {
this.visible = visible;
if (visible) {
Log.i("wallpaper", "visible");
drawFrameBoll();
} else {
Log.i("wallpaper", "invisible");
handler.removeCallbacks(drawThread);
}
}
(5)manifest XML中的设置参考如下:
<service
android:label="@string/app_name"
android:name=".LiveWallpaper"
android:permission="android.permission.BIND_WALLPAPER" >
<intent-filter >
<action android:name="android.service.wallpaper.WallpaperService" />
</intent-filter>
<meta-data
android:name="android.service.wallpaper"
android:resource="@xml/livewallpaper" />
</service>
(6)如果需要处理壁纸随左右滑屏进行画面移动:
复写onOffsetsChanged,从中获取x方向的偏移量,传入你的处理函数中;
// 实现随屏幕移动;// @Override
// public void onOffsetsChanged(float xOffset, float yOffset, float
// xStep,
// float yStep, int xPixels, int yPixels) {
// mOffset = xOffset;
// xoffset = xPixels;
// Log.i("wallpaper1", "1-->mOffset= " + mOffset);
// Log.i("wallpaper1", "2-->xPixels= " + xPixels + " yPixels= "
// + yPixels);