动态壁纸Live Wallpaper架构
组件类 | 说明 |
WallpaperService | 实现动态壁纸的服务程序 |
WallpaperService.Engine | 描绘动态壁纸的引擎 |
PreferenceActivity | 动态壁纸的参数设置窗体 |
动态壁纸Live Wallpaper应用程序必须实现动态壁纸的服务程序WallpaperService和描绘动态壁纸的引擎WallpaperService.Engine,当你需要设置动态壁纸的参数来改变动画的属性时,必须提供设置参数的窗体。此时才需要实现动态壁纸的参数设置窗体PreferenceActivity。
咱们先来说一次简单的步骤:
(1)建一个类继承WallpaperService,比如说为LiveWallpaper.java
(2)然后在AndrodManifest.XML文件的<service>标签内定义动态壁纸的服务程序LiveWallpaper.java和动态壁纸的资源来源“/res/XML/liveWallpaper.XML”
(3)还需要增加一个<Activity>标签来设置动态壁纸参数设置程序HelloLiveWallpaperSetting.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/liveWallpaper.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>
这是一个我自己编写的简单动态壁纸效果图: