静态壁纸
WallpaperManager基本使用步骤
使用权限: <uses-permission android:name="android.permission.SET_WALLPAPER"/>
1、获取对象
public static WallpaperManager getInstance (Context context)
2、进行判断
是否支持
public boolean isWallpaperSupported ()
是否可设置
public boolean isSetWallpaperAllowed ()
3、获取或者设置
setBitmap(Bitmap bitmap):将壁纸设置为bitmap所代表的位图
setResource(int resid):将壁纸设置为resid资源所代表的图片
setStream(InputStream data):将壁纸设置为data数据所代表的图片
getDrawable():获得当前系统壁纸,如果没有设置壁纸,则返回系统默认壁纸
getWallpaperInfo():加入当前壁纸是动态壁纸,返回动态壁纸信息
peekDrawable():获得当前系统壁纸,如果没设置壁纸的话返回null
其它方法
clear():清除壁纸,设置回系统默认的壁纸
getDesiredMinimumHeight():最小壁纸高度
getDesiredMinimumWidth():最小壁纸宽度
动态壁纸
启动动态壁纸
val intent = Intent(WallpaperManager.ACTION_CHANGE_LIVE_WALLPAPER)
intent.putExtra(WallpaperManager.EXTRA_LIVE_WALLPAPER_COMPONENT, ComponentName(this, Test::class.java!!))
startActivity(intent)
Test是WallpaperService的实现类
WallpaperService
name为service, resource为资源,可以使用默认资源如下图:
service具体配置代码
<service android:name=".Test"
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/livepaper" />
</service>
xml资源具体代码
<?xml version="1.0" encoding="utf-8"?>
<wallpaper xmlns:android="http://schemas.android.com/apk/res/android"
android:thumbnail="@mipmap/ic_launcher"
/>
![](https://img.haomeiwen.com/i18306159/5d853c986485d467.png)
关键是返回的 WallpaperService.Engine对象用来绘制壁纸
![](https://img.haomeiwen.com/i18306159/57d93d4add86a25c.png)
WallpaperService.Engine
个人觉得动态壁纸常用几个方法
onSurfaceCreated(SurfaceHolder holder):重写,获取holder用来绘制
onSurfaceDestroyed(SurfaceHolder holder):重写,销毁,取消绘制
onVisibilityChanged(boolean visible): 重写,可见时进行绘制操作,不可见暂停绘制操作
onCreate(SurfaceHolder surfaceHolder) : 重写,设置触摸事件,setTouchEventsEnabled(true)
onTouchEvent(MotionEvent event): 重写,事件处理
onDestroy(): 所有的销毁动作
Engin重点处理,绘制过程,有可能需要事件处理
网友评论