组件类 | 说明 |
WallpaperService | 实现动态壁纸的服务程序 |
WallpaperService.Engine | 描绘动态壁纸的引擎 |
PreferenceActivity | 动态壁纸的参数设置窗体 |
动态壁纸 Live Wallpaper 应用程序必须实现动态壁纸的服务程序 WallpaperService 和描绘动态壁纸的引擎 WallpaperService.Engine ,当你需要设置动态壁纸的参数来改变动画的属性时,必须提供设置参数的窗体。此时才需要实现动态壁纸的参数设置窗体 PreferenceActivity 。
咱们先来说一次简单的步骤:
(1) 建一个类继承 WallpaperService ,比如说为 Live Wallpaper.java
(2) 然后在AndrodManifest.XML文件的<service>标签内定义动态壁纸的服务程序 Live Wallpaper.java和动态壁纸的资源来源“/res/XML/ live Wallpaper.XML”
(3) 还需要增加一个<Activity>标签来设置动态壁纸参数设置程序HelloLive WallpaperSetting.java ,当然这个要去继承 PreferenceActivity
AndrodManifest.XML
<?xml version="1.0" encoding="utf-8"?> <manifest xmlns:android="http://schemas.android.com/apk/res/android" package="com.njue.livewallpaper" android:versionCode="1" android:versionName="1.0" > <uses-sdk android:minSdkVersion="7" /> <application android:icon="@drawable/icon" android:label="@string/app_name" > <service android:label="@string/app_name" android:permission="android.permission.BIND_WALLPAPER" android:name=".LiveWallpaper"> <intent-filter> <action android:name="android.service.wallpaper.WallpaperService" /> </intent-filter> <meta-data android:name="android.service.wallpaper" android:resource="@xml/livewallpaper" /> </service> <activity android:name=".LiveWallpaperSettings" android:label="@string/wallpaper_settings" android:theme="@android:style/Theme.Light.WallpaperSettings" android:exported="true"> </activity> </application> </manifest>
/res/XML/ live Wallpaper.XML
<?xml version="1.0" encoding="UTF-8"?> <wallpaper xmlns:android="http://schemas.android.com/apk/res/android" android:thumbnail="@drawable/floewr1" android:description="@string/description" android:settingsActivity="com.njue.livewallpaper.LiveWallpaperSettings" />
参数设置界面的布局代码 settings.xml
<?xml version="1.0" encoding="utf-8"?> <PreferenceScreen xmlns:android="http://schemas.android.com/apk/res/android" android:title="@string/settings"> <ListPreference android:key="@string/leaf1Count" android:title="@string/settings_title" android:summary="@string/settings_summary" android:entries="@array/entries" android:entryValues="@array/values" /> <ListPreference android:key="@string/flower1Count" android:title="@string/settings_title1" android:summary="@string/settings_summary1" android:entries="@array/entries" android:entryValues="@array/values" /> <ListPreference android:key="@string/flower2Count" android:title="@string/settings_title2" android:summary="@string/settings_summary2" android:entries="@array/entries" android:entryValues="@array/values" /> <EditTextPreference android:key="@string/inputText" android:title="输入你喜欢的文字" android:summary="点击输入" android:dialogTitle="输入文字设置" /> <EditTextPreference android:key="@string/wordCount" android:title="一列显示的字符数" android:summary="请输入数字" android:dialogTitle="一列显示的字符数(请输入数字)" android:digits="0123456789" /> <PreferenceCategory android:title="恢复默认设置" > <CheckBoxPreference android:key="@string/reset" android:title="恢复默认设置" android:summaryOn="恢复默认设置" android:summaryOff="恢复默认设置" android:defaultValue="false" ></CheckBoxPreference> </PreferenceCategory> </PreferenceScreen>
这是一个我自己编写的简单动态壁纸效果图: