Live WallPaper 让背景动起来

CS——LiveWallPaper  动态壁纸程序开发(一)

                          首届 Google 暑期大学生博客分享大赛——2010 Android 篇

                                    《Ed Burnette's  Hello,Android  Third Edition》 重点篇章读书学习改编笔记

                           

   

     通常手机屏幕的壁纸就是一张静态的图片,看上去已经挺不错的了,但它不会有变化。

 

      LiveWallPaper 动态壁纸是从Android2.1就开始带有的一个新的特性。它让我们能够将本来毫无生气的静态的手机屏幕背景替换成 从 随着音乐的活力和脉动而跳跃的声线 到 手指抚过能激起阵阵涟漪的静默的池塘。显示当前天气情况、展示幻灯片甚至是表现烟火特效也只是android百变动态壁纸的冰山一角。现在让我们揭开它神秘的面纱。看看这些神奇的应用是如何做到的。

  

                                                                              图一

                        创建我们的CS——LiveWallpaper项目

  在这个例子中,我们将创造一个活生生的墙纸,使用OpenGL显示一个旋转的立方体。最后的程序运行结果就如图一所示。首先创建一个新的android项目,在其的向导wizard中使用这些值:

Project  name:  CS_Livewallpaper
Build  Target:  Android  2.2
Application  name:  Wallpaper
Package  name:  classroom.studio
Min  SDK  Version:  8

    Activity的名字可以先空着。关闭Activity项左边的复选框。如下图二所示。

                                                                                  图二

   创建项目后,我们需要为新项目中的androidmanifest.xml文件中添加新的属性。它看起来就像下面这样。

 

1 <manifest xmlns:android="http://schemas.android.com/apk/res/android"
2 package="classroom.studio"
3 android:versionCode="1"
4 android:versionName="1.0">
5 <application android:label="@string/app_name">
6 <service android:name=".Wallpaper"
7 android:label="@string/service_name"
8 android:permission="android.permission.BIND_WALLPAPER">
9 <intent-filter>
10 <action android:name=
11 "android.service.wallpaper.WallpaperService" />
12 </intent-filter>
13 <meta-data android:name="android.service.wallpaper"
14 android:resource="@xml/wallpaper" />
15 </service>
16 </application>
17 <uses-sdk android:minSdkVersion="8" android:targetSdkVersion="8" />
18 </manifest>
19

 

     <service>这个标签是新的。它定义了一个,将运行在背景上并且对事件有响应的Android服务。 android:permission= attribute的意思是任何程序调用我们的服务都需要有一个指定的权限。 Android的Home程序已经具备了该权限,所以它会工作得很好。

 

      < intent-filter >这个标签告诉Android它是个什么样的服务,并且< meta-data >标签让它知道在哪能找到关于wallpaper的额外信息。 android:resource被设为"@xml/wallpaper"这个值最好改成res/xml/wallpaper.xml 文件。以下便是该xml文件的内容。

 

 

1 <?xml version="1.0" encoding="utf-8"?>
2 <wallpaper xmlns:android="http://schemas.android.com/apk/res/android"
3 android:author="@+string/author"
4 android:description="@string/description"
5 android:thumbnail="@drawable/thumbnail"
6 />

 

   这个 wallpaper的metadata(元数据)指定了这个程序的作者的名字、该程序的介绍以及一个缩略图。所有这些分别存储在string.xml以及drawable文件中。他们将在使用者选择该使用哪个动态壁纸应用的时候以列表的形式显示出来。因此我们还需要创建一个string.xml文件。如下所示。 

 

string.xml
<resources>
<string name="app_name">自转的立方体</string>
<string name="service_name">CS_livewallpaper</string>
<string name="author">ClassroomStudio 教室工作室</string>
<string name="description">来自CS工作室的动态壁纸
</string>
</resources>

   我们可以AVD中看到这个文件实际所起的作用。如下图三所示

                                     

                                                                  图三

 

  同时我们也需要删除掉一个Layout中的文件 res/layout/main.xml。因为我们不会在这个程序中使用它。在我们具体了解了Android的一些服务之后我们将填写Wallpaper类。 

   欲知后事,请看下回 LiveWallPaper 让您的壁纸动起来 连载(二)    

     如果您喜欢这篇文章,请在以下网址上投我一票,多谢支持http://www.google.com/intl/zh-CN/daxue/blog2010/#tab0

    To Be Continue...
 

posted on 2010-08-13 02:40  ClassroomStudio  阅读(9931)  评论(10编辑  收藏  举报

导航