动态壁纸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>
这是一个我自己编写的简单动态壁纸效果图:
想了解具体实现细节的同学,可以下载本文工程。
下载地址:http://download.youkuaiyun.com/detail/pzhtpf/4266265