动态壁纸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.csdn.net/detail/pzhtpf/4266265