`
zsg88
  • 浏览: 25384 次
  • 性别: Icon_minigender_1
  • 来自: 北京
文章分类
社区版块
存档分类
最新评论

樱花漂落的动态壁纸

 
阅读更多

 一个樱花飘落的动态壁的例子学习动态壁纸开发。 图片来源于樱花动态壁纸.apk,   源码见底部

 

樱花飘落1樱花漂落2樱花飘落3

 

动态墙纸的是一个比较特殊的APK。

Android动态墙纸的本质是一个“Service”,这个Service通过AndroidManifest.xml文件中Service的intent-filter的action能够被主界面Launcher加载。

<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="net.fenghuo.wallpaper.sakura"
android:versionCode="1"
android:versionName="1.0" >

<uses-sdk android:minSdkVersion="7" />

<application
android:icon="@drawable/ic_launcher"
android:label="@string/app_name" >

<service android:name="net.fenghuo.wallpaper.sakura.WallpaperService"
android:label="@string/app_name"
android:permission="android.permission.BIND_WALLPAPER" >
<intent-filter>
<action android:name="android.service.wallpaper.WallpaperService"/>
</intent-filter>
<meta-data android:name="android.service.wallpaper" android:resource="@xml/wallpaper"/>
</service>
<activity android:name="WallpaperSettingsActivity" android:label="设置" android:exported="true"/>
</application>

</manifest>

Launcher和动态墙纸的进程可以通过框架里的WallpaperManager进行进程间通信罢了,用户在Launcher桌面滑动、点击屏幕时有的动态墙纸能产生交互效果。

下面给大家大概的步骤创建一个的Live Wallpaper。

1. 首先我使用Eclipse创建一个标准的Android工程无需创建Acitivity。

2. 加入动态壁纸的设置界面,我们在/res/文件夹中新建一个名为xml的文件夹,新建一个utf8编码的xml文件,名为wallpaper.xml,内容如下:

<?xml version="1.0" encoding="UTF-8"?>
<wallpaper xmlns:android="http://schemas.android.com/apk/res/android"
android:thumbnail="@drawable/icon" android:description="@string/description"
android:settingsActivity="net.fenghuo.wallpaper.sakura.WallpaperSettingsActivity" />

其中thumbnail指定的是在系统动态壁纸选择列表里显示的图标,description则是文字说明.settingsActivity指定是是点击设置按钮调用的Activity


3.实现继承了WallpaerService的类了。只需要重写WallpaperServiced的onCreateEngine方法。

在这个方法里只需返回一个Engine的子类对象就可以了。所以写动态壁纸程序的主要工作量就是实现Engine的子类。

该类的作用就是让你去实现动态壁纸的具体代码。一般要重写的方法的功能。

  public void onCreate(SurfaceHolder surfaceHolder){...}

  public void onDestroy(){...}

  public void onVisibilityChanged(boolean visible){
    if(visible){//可见
     ...
    }else{ ////不可见
     ...
    }
  }
该方法作用是当前动态壁纸可见时要画图。重写这个方法一般如以上格式所示。


  public void onSurfaceCreated(SurfaceHolder holder) {
    ...
  }
该方法是应用程序第一次创建时要调用。可在这个方法里调用父类对应方法。该方法执行完毕后系统会立即调用onSurfaceChanged方法。若在这里调用父类对应方法,那么就在onSurfaceChanged中实现主要功能。

  public void onSurfaceChanged(SurfaceHolder holder, int format, int width, int height){
   ...

  }
该方法有两个用处。1.若动态壁纸要随着横屏竖屏而切换可在这里写。2.想和用户交互的话,比如用户滑动屏幕时,点击屏幕时等。3.注意:onSurfaceCreated调用之后会立即调用该方法。

4.在manifest中注册一个service。

<service android:name="net.fenghuo.wallpaper.sakura.WallpaperService"
android:label="@string/app_name"
android:permission="android.permission.BIND_WALLPAPER" >
<intent-filter>
<action android:name="android.service.wallpaper.WallpaperService"/>
</intent-filter>
<meta-data android:name="android.service.wallpaper" android:resource="@xml/wallpaper"/>
</service>

  在这个servier中要指定你继承WallpaperService类的路径,指定1中设置的xml,设置广播,设置允许权限等。比如:

  通过android:name="net.fenghuo.wallpaper.sakura.WallpaperService"指定继承WallpaperService的类 ,

  通过android:permission="android.permission.BIND_WALLPAPER">允许动态壁纸权限。

  这一种还必须设置一个<intent-filter>,用来监听Android系统发出的动态壁纸的广播。

  具体信息则通过<meta-data android:name="android.service.wallpaper" android:resource="@xml/wallpaper"/> .

 

 源代码如下。   

 

  • 大小: 19.2 KB
  • 大小: 19.8 KB
  • 大小: 23.3 KB
分享到:
评论
5 楼 flycatdeng 2013-11-13  
先添加动态壁纸,将动态壁纸设置为你的壁纸,紧接着又添加动态壁纸,还是设置为你的壁纸,那么第一次会有动画,而第二次及以后就不再有动画!这是一个bug,我看看怎么解决,希望楼主看到我所描述的问题之后也解决一下!
4 楼 spring804847326 2013-03-31  
 
3 楼 gybin 2012-12-10  
看起来挺好的。
2 楼 kenvinsnow 2012-09-03  
请问楼主怎么把这个改成普通的app啊,不用来作动态壁纸
1 楼 greenboy1 2012-05-29  
楼主 强啊 我先下载看看 若有不懂向楼主请教

相关推荐

    Android 樱花漂落的动态壁纸.zip

    1. **1_120916113056_1.png**:这可能是一个示例图片,用于展示樱花飘落壁纸的效果。它可能被用作壁纸的一部分或作为设计参考。 2. **源码说明.txt**:这是一个文本文件,很可能包含了关于动态壁纸源代码的详细解释...

    Android应用源码完美的樱花凋零动态壁纸项目

    可能有一个主Activity用于展示壁纸设置界面,用户可以在这里调整壁纸的参数,如樱花飘落的速度、数量等。 2. **Service**:动态壁纸通常需要在后台运行,即使用户不在应用界面时也能保持动态效果。因此,项目可能...

    android樱花表动态壁纸源码

    【Android 樱花表动态壁纸源码】是一款专为Android平台设计的动态壁纸应用,其核心亮点在于它能够展示出栩栩如生的樱花飘落效果,为用户的手机桌面增添一份独特的美感。这款源码对于Android开发者,尤其是对动态壁纸...

    Android代码-樱花漂落的动态壁纸.zip

    "樱花漂落的动态壁纸"是一款专为Android设备设计的个性化壁纸应用,它将美丽的樱花飘落景象搬到用户的手机或平板电脑屏幕上,为用户营造出宁静而浪漫的氛围。 首先,我们要了解动态壁纸的实现原理。在Android系统中...

    桌面飘落樱花

    "桌面飘落樱花"是一款为个人电脑桌面设计的动态壁纸软件,它能够在你的屏幕上模拟樱花飘落的效果,为你的工作环境增添一丝浪漫和宁静的气息。这款应用的主要特点是其美观度和自定义设置,使得用户可以根据自己的喜好...

    【两款桌面美化的小工具】桌面樱花飘落工具

    标题中的“桌面樱花飘落工具”指的是两款能够为个人电脑桌面增添动态效果的应用程序,让樱花在屏幕上缓缓飘落,以此提升桌面的视觉美感。这种工具通常基于图形用户界面(GUI)开发,允许用户自定义樱花飘落的效果,...

    【andrio开源源码4】Android 樱花漂落的动态壁纸

    本教程将基于【andrio开源源码4】,深入解析如何开发一款樱花飘落的动态壁纸应用。 一、Android动态壁纸基础 动态壁纸是Android系统提供的一种服务,通过实现`WallpaperService`类,我们可以创建自己的动态壁纸。`...

    新建360压缩 ZIP 文件_樱花飘落_

    (我是小学生)" 这段描述指出压缩包中的内容可能是一个设计为壁纸的文件,特别适合展示粉色樱花飘落的美丽场景,并且具有无限循环的效果。这表明文件可能是动态的,比如GIF动图或者HTML5页面,能够连续播放樱花飘落...

    Android应用源码完美的樱花凋零动态壁纸项目.zip

    8. **触摸事件处理**: 用户可能能够与壁纸互动,比如点击屏幕触发樱花飘落。这需要在壁纸服务中添加触摸事件监听器。 9. **生命周期管理**: WallpaperService有自己的生命周期,开发者需要确保在适当的时间执行初始...

    Android源码——樱花漂落的动态壁纸.7z

    "Android源码——樱花漂落的动态壁纸.7z"是一个项目,提供了实现樱花飘落效果的Android动态壁纸源代码。通过分析这个项目,我们可以学习到以下几个重要的Android开发知识点: 1. **自定义动态壁纸服务**:在Android...

    Android 樱花漂落的动态壁纸.rar

    "Android 樱花漂落的动态壁纸"是一个具体的项目,旨在为用户提供一个浪漫而美丽的樱花飘落的场景作为手机桌面背景。这个项目涉及到Android开发中的多个技术点,包括OpenGL ES、自定义View、动画处理以及资源管理等。...

    Android樱花漂落的动态壁纸.zip

    这款壁纸以其精致细腻的樱花飘落效果,为用户的手机桌面增添了独特的视觉体验,让手机屏幕仿佛变为春日里的樱花盛开之地。 在Android平台上,动态壁纸是一种能够使用户界面更加生动有趣的特殊类型壁纸。它们不仅...

    Android源码——樱花漂落的动态壁纸.zip

    而"Android 樱花漂落的动态壁纸"很可能是一个包含Java或Kotlin源代码的文件,这些代码实现了樱花飘落的动态效果。 在Android中,动态壁纸的实现通常涉及到以下知识点: 1. **服务(Service)**:Android动态壁纸...

    Android源码——樱花漂落的动态壁纸.rar

    "Android源码——樱花漂落的动态壁纸"项目,便是这种体验的一个实例,它展示了如何利用Android SDK来创建一个自定义的动态壁纸应用,让用户可以在自己的手机屏幕上欣赏到樱花飘落的美丽景象。 首先,我们要理解...

Global site tag (gtag.js) - Google Analytics