Android_动态壁纸介绍
Android的動態(tài)壁紙主要用到三個類:
android.app.WallpaperManager:這個類主要用于獲取系統(tǒng)壁紙的信息。再寫動態(tài)壁紙的時候用不到。
android.service.wallpaper.WallpaperService:這個類作為服務(wù)在運行,同時負(fù)責(zé)產(chǎn)生一個Engine。
同時,在此類中有一個必須繼承的方法為:nCreateEngine。WallpaperService的onCreateEngine這個方法比較特殊,虛擬機沒有在WallpaperService里的onCreate方法里調(diào)用,更不用你自己在其它Activity里用startService或者bindService來啟動它是在程序運行之后,由你在桌面上點擊menu->Wallpaper->Live?Wallpapers->確定->你的項目名稱。這個時候虛擬機調(diào)用就會onCreateEngine方法。
還有就是這個Service是什么時候啟動的呢?看Manifest.xml文件就可以看出,在組件<service>里有一個<action?android:name="android.service.wallpaper.WallpaperService"?/>這表明當(dāng)你設(shè)置動態(tài)壁紙時這個Service才啟動。
android.service.wallpaper.WallpaperService.Engine:這個類是WallpaperService的內(nèi)部類,負(fù)責(zé)動態(tài)壁紙的各個方面。
介紹這個類里的幾個函數(shù)
onOffsetsChanged():
這個一般在幾個屏幕滑動的時候調(diào)用?而且?當(dāng)你拖動A屏幕向B屏幕過度時?會隨著B屏幕的顯示面積的變大或者變小一直調(diào)用這個方法
onVisibilityChanged()
這個是屏幕顯示或者不顯示的時候調(diào)用的?必須完全覆蓋屏幕才會調(diào)用
onCommand()
可以給壁紙發(fā)送一些命令?讓其執(zhí)行
onTouchEvent()
處理壁紙的點擊時間的
setTouchEventsEnabled(true)
作用是使壁紙能響應(yīng)touch?event,默認(rèn)是false?
Engine的生命周期與大多數(shù)Android應(yīng)用程序組件,比如activity類似,都是從onCreate()開始,在銷毀時調(diào)用onDestory()方法。不同的是WallpaperService會提供一個surface用來繪制壁紙,所以在生命周期中多一個onSurfaceCreated與onSurfaceDestroyed的過程。下面是一個最簡生命周期:
這是AndroidManifest.xml文件中的一個配置信息,這個地方很重要。
????
<applicationandroid:icon="@drawable/ic_launcher"android:label="@string/app_name" ><serviceandroid:label="@string/app_name"android:name=".TimeWall"android:permission="android.permission.BIND_WALLPAPER" ><intent-filter ><action android:name="android.service.wallpaper.WallpaperService" /></intent-filter><meta-dataandroid:name="android.service.wallpaper"android:resource="@xml/alive_wall" /></service></application>?
<service>?定義了一個,將運行在背景上并且對事件有響應(yīng)的Android服務(wù)。android:permission="android.permission.BIND_WALLPAPER"?意思是任何程 ? ? 序調(diào)用我們的服務(wù)都需要有一個指定的權(quán)限。Android的Home程序已經(jīng)具備了該權(quán)限,所以它會工作得很好。
?
< intent-?lter >這個標(biāo)簽告訴Android它是個什么樣的服務(wù)。
< meta-data>標(biāo)簽讓它知道在哪能找到關(guān)于wallpaper的額外信息。android:resource被設(shè)為"@xml/wallpaper"(名字任意,但得對應(yīng)上),這個值最好設(shè)置在res/xml/wallpaper.xml ? ? 文件
現(xiàn)附上源代碼,里面有詳細(xì)解釋供大家參考!?(下載地址復(fù)制到地址欄里有效,單純的點擊不會跳到鏈接)
csdn零分下載:http://download.csdn.net/detail/zqiang_55/4604044
大家感覺文章不錯,就幫忙頂下應(yīng)用:http://www.talkphone.cn/Down/Soft/Detail/49172_0.html轉(zhuǎn)載于:https://www.cnblogs.com/wuyida/archive/2011/12/15/6300653.html
總結(jié)
以上是生活随笔為你收集整理的Android_动态壁纸介绍的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: Oracle 客户端 使用 expdp/
- 下一篇: [zz]mysql 和 mongo db