Android编程之动态壁纸实例分析

2019-12-10 19:49:42王旭

 

当动态壁纸的可见性发生变化时触发此方法,举例说在桌面上时,动态壁纸的visibility为true,当你运行某个程序的时候动态壁纸的visibility变为false,这里很好理解

引用

复制代码 public Bundle onCommand(String action, int x, int y, int z, Bundle extras, boolean resultRequested)

 

可以监听点击事件,点击时触发此方法,action为 android.wallpaper.tap,x记录了横坐标,y记录了纵坐标,z的作用未知,可能是为3d桌面预留下的? 没有试验过,z一般为0 
还有一些重要的生命周期方法,和activity类似,就不多说了。

当你要将一个app定义为动态壁纸时,首先需要在AndroidManifest.xml中进行指定,前面提到过,动态壁纸是从 android 2.1 开始支持,所以需要添加

引用

复制代码 <uses-sdk android:minSdkVersion="7" />

 

由于还要对系统说明这是一个动态壁纸,我们还要加入 

复制代码 <uses-feature android:name="android.softwate.live_wallpaper"/>
除此之外,由于我们运行了service,所以同样需要对service进行配置 
引用

 

<service android:name="LiveWallService" android:label="My_live _wallpaper" 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>

比较重要的部分首先是权限android:permission="android.permission.BIND_WALLPAPER" 
其次service需要响应action 

复制代码 android:name="android.service.wallpaper.WallpaperService
再就是配置文件了 
复制代码 <meta-data android:name="android.service.wallpaper" android:resource="@xml/livepaper"/>

 

接下来接收配置文件。首先在res文件夹下建立一个xml目录,和写appwidget一样。