Android研究学习动态壁纸

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

猜你喜欢

转载自blog.csdn.net/zhangqi6627/article/details/108082486