1. 创建一个类集成 WallpaperService
public class MyWallpaperService extends WallpaperService {
@Override
public Engine onCreateEngine() {
return new MyEngine();
}
class MyEngine extends Engine {
public void onSurfaceCreated(SurfaceHolder holder) {
Canvas canvas = holder.lockCanvas(null);
//在这里画图,方法和SurfaceView中一样,想画什么就化什么
canvas.draw.....
holder.unlockCanvasAndPost(canvas);
}
}
}
2. 在 AndroidManifest.xml 文件中注册
<!-- 上面的WallpaperService -->
<service
android:name="com.sagereal.zq.MyWallpaperService"
android:label="@string/app_name"
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/wallpaper" /> <!-- 下面的wallpaper.xml配置文件 -->
</service>
3. 创建添加 res/xml/wallpaper.xml 文件
<wallpaper xmlns:android="http://schemas.android.com/apk/res/android"
android:thumbnail="@drawable/ic_launcher"
android:description="@string/description" />//动态壁纸列表中的动态壁纸名称
4. 如何过滤出所有动态壁纸的apk
public static final String SERVICE_INTERFACE = "android.service.wallpaper.WallpaperService";
List<ResolveInfo> list = mPackageManager.queryIntentServices(new Intent(WallpaperService.SERVICE_INTERFACE), PackageManager.GET_META_DATA);
可以参考 Android 仿火萤视频桌面 神奇的LiveWallPaper