亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb

首頁 > 系統 > Android > 正文

Android編程之動態壁紙實例分析

2020-04-11 11:14:00
字體:
來源:轉載
供稿:網友

本文實例講述了Android編程之動態壁紙。分享給大家供大家參考,具體如下:

從android 2.1版本起引入了動態壁紙的概念,熟悉android的人一定不會陌生。這里解釋一個動態壁紙是怎么形成又是怎么工作的。

首先動態桌面的動態體現出這個組件是實時變化的,也就是說有一個后臺在不停的刷新這個組件。聯想到后臺組件首先想到的就是service,從代碼角度看,果然如此。每一個動態桌面都繼承自WallpaperService,其中必須實現的抽象方法onCreateEngine,返回一個Engine對象,實際上所有的繪圖與刷新都是由engine完成,service正是提供engine的部分。

打個比方說,在我們設置一個動態壁紙時有預覽,這時啟動了一個預覽的engine來繪制與刷新,當我們設置了壁紙以后又啟動了一個填充整個桌面的engine在實時的繪制與刷新。所以動態壁紙的重點在engine里,這里等下提及。

現在著手創建一個動態壁紙。

第一步創建我們的WallpaperService類,同樣在其中創建engine類,engine是WallpaperService的內部類。其中engine中關鍵的方法有

引用

復制代碼 代碼如下:
onCreate(SurfaceHolder surfaceHolder)

有了surfaceholder我們可以獲得canvas對象,有了canvas我們就可以繪圖

引用

復制代碼 代碼如下:
onOffsetsChanged(float xOffset, float yOffset, float xOffsetStep,float yOffsetStep, int xPixelOffset, int yPixelOffset)

屏幕滑動的時候觸發此方法

xOffset可以用來判斷屏幕序號 百分比的形式,舉例說如果你手機上有5個分屏,第一屏這里是0.000,第二屏是0.2000 第三屏是0.4000以此類推
xOffsetStep從字面意義就能理解是步進 同樣和你的分屏數有關 如果你的分屏數為5 則每次步進xOffsetStep都是0.20000
xPixelOffset就是實際上像素的移動距離,也就是說移動了多少像素,奇怪的是這里左右移動像素點的offset都為負數

引用

復制代碼 代碼如下:
public void onVisibilityChanged(boolean visible)

當動態壁紙的可見性發生變化時觸發此方法,舉例說在桌面上時,動態壁紙的visibility為true,當你運行某個程序的時候動態壁紙的visibility變為false,這里很好理解

引用

復制代碼 代碼如下:
public Bundle onCommand(String action, int x, int y, int z, Bundle extras, boolean resultRequested)

可以監聽點擊事件,點擊時觸發此方法,action為 android.wallpaper.tap,x記錄了橫坐標,y記錄了縱坐標,z的作用未知,可能是為3d桌面預留下的? 沒有試驗過,z一般為0
還有一些重要的生命周期方法,和activity類似,就不多說了。

當你要將一個app定義為動態壁紙時,首先需要在AndroidManifest.xml中進行指定,前面提到過,動態壁紙是從 android 2.1 開始支持,所以需要添加

引用

復制代碼 代碼如下:
<uses-sdk android:minSdkVersion="7" />

由于還要對系統說明這是一個動態壁紙,我們還要加入

復制代碼 代碼如下:
<uses-feature android:name="android.softwate.live_wallpaper"/>

除此之外,由于我們運行了service,所以同樣需要對service進行配置
引用

<service android:name="LiveWallService" android:label="My_live _wallpaper" 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/livepaper"/> </service>

比較重要的部分首先是權限android:permission="android.permission.BIND_WALLPAPER"
其次service需要響應action

復制代碼 代碼如下:
android:name="android.service.wallpaper.WallpaperService

再就是配置文件了
復制代碼 代碼如下:
<meta-data android:name="android.service.wallpaper" android:resource="@xml/livepaper"/>

接下來接收配置文件。首先在res文件夾下建立一個xml目錄,和寫appwidget一樣。
在目錄下我們創建一個xml文件

<?xml version="1.0" encoding="utf-8"?> <wallpaper xmlns:android="http://schemas.android.com/apk/res/android"  android:settingsActivity="LiveWallPreference"  android:thumbnail="@drawable/ic_launcher"  android:description="@string/wallpaper_description"  /> 

wallpaper 是系統要求這么寫的,帶上命名空間。

引用

復制代碼 代碼如下:
android:settingsActivity="LiveWallPreference"

指定配置動態壁紙的PreferenceActivity,這個PreferenceActivity同樣需要在AndroidManifest.xml中注冊,不過和一般的activity一樣。當我們點擊動態壁紙的設置按鈕時,導向這個activity。不可缺少,否則點擊設置會報錯。

引用

android:thumbnail="@drawable/ic_launcher" android:description="@string/wallpaper_description" 

第一個圖標對應動態壁紙列表中的圖標,第二條description則是圖標右邊你創建的動態壁紙的名字。

至此動態壁紙的框架就算完成了。接下來只需要在wallpaperservice類中加入刷新機制,加入動態內容,一個動態桌面就完成了。

希望本文所述對大家Android程序設計有所幫助。

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
青青草原成人在线视频| 欧美午夜视频一区二区| 欧美激情精品久久久久久| 91在线观看免费| 在线观看久久久久久| 国产精品电影观看| 国产亚洲欧美日韩一区二区| 国产区精品在线观看| 日韩高清av一区二区三区| 国产一区二区丝袜高跟鞋图片| 97香蕉超级碰碰久久免费软件| 亚洲欧美日韩综合| 97人人爽人人喊人人模波多| 亚洲成人网av| 国产精品免费在线免费| 狠狠色狠狠色综合日日小说| 伊人一区二区三区久久精品| 亚洲国产精彩中文乱码av| 午夜精品蜜臀一区二区三区免费| 日韩国产在线看| 91精品视频在线播放| 成人福利视频网| 91免费在线视频网站| 98精品国产高清在线xxxx天堂| 亚洲国产精久久久久久| 一区二区三区四区视频| 91视频九色网站| 91免费观看网站| 久久久久久久久久久久av| 97香蕉超级碰碰久久免费的优势| 亚洲国产欧美一区二区三区同亚洲| 国产精品大片wwwwww| 国产日韩换脸av一区在线观看| 国产主播喷水一区二区| 欧美性色19p| 国产精品av免费在线观看| 亚洲国产精品成人一区二区| 操人视频在线观看欧美| 欧美日韩精品在线视频| 精品视频偷偷看在线观看| 最近2019中文字幕第三页视频| 国产拍精品一二三| 国产精品久久久久久久久久久不卡| 国产成人精品久久| www.久久撸.com| 亚洲精品国产拍免费91在线| 精品中文字幕久久久久久| 亚洲一区二区三区在线免费观看| 国产精品视频地址| 久久精品中文字幕| 一区二区国产精品视频| 亚洲午夜性刺激影院| 亚洲第一区第一页| 久久久久久亚洲精品中文字幕| 亚洲成年人在线播放| 欧美日韩中文在线观看| 亚洲激情免费观看| 国产精品永久免费| 九九久久综合网站| 91精品91久久久久久| 国产日韩精品视频| 国产精品久久97| 亚洲性夜色噜噜噜7777| 国产成人一区二区| 欧美贵妇videos办公室| 欧美日韩一区二区三区| 97精品国产97久久久久久| 日韩成人在线视频| 丝袜亚洲欧美日韩综合| 精品国产31久久久久久| 欧美性色19p| 国内揄拍国内精品少妇国语| 中文字幕亚洲一区二区三区| 国产精品6699| 尤物九九久久国产精品的特点| 久久久精品久久久久| 国产成人综合精品在线| 夜夜躁日日躁狠狠久久88av| 综合网中文字幕| 久久成年人视频| 精品成人av一区| 91理论片午午论夜理片久久| 一区二区三区久久精品| 91地址最新发布| 美女av一区二区| 国产成人精品一区二区| 日韩国产在线看| 久久亚洲电影天堂| 92福利视频午夜1000合集在线观看| 日韩在线观看免费av| 在线成人激情黄色| 欧美亚洲伦理www| 欧美性理论片在线观看片免费| 久久99国产精品自在自在app| 久久久av网站| 伊人久久久久久久久久久久久| 久久久久久国产精品| 欧美日韩午夜视频在线观看| 久久久久久国产精品久久| 91亚洲精品久久久久久久久久久久| 久久激情视频免费观看| 另类色图亚洲色图| 午夜精品免费视频| 国产精品久久综合av爱欲tv| 91老司机在线| 日韩欧美在线第一页| 久久夜色精品国产欧美乱| 国内精品一区二区三区四区| 国语自产精品视频在免费| 亚洲偷熟乱区亚洲香蕉av| 欧美成人一区在线| 26uuu日韩精品一区二区| 狠狠综合久久av一区二区小说| 欧洲s码亚洲m码精品一区| 在线播放日韩精品| 国产自产女人91一区在线观看| 国产日韩欧美夫妻视频在线观看| 精品网站999www| 国产精品视频大全| 毛片精品免费在线观看| 亚洲一区美女视频在线观看免费| 亚洲国产精品yw在线观看| 久久影院中文字幕| 日韩电影免费观看在线观看| 欧美国产日韩一区二区在线观看| 成人自拍性视频| 成人在线国产精品| 92国产精品视频| 亚洲日本中文字幕免费在线不卡| 中文字幕成人在线| 欧美午夜久久久| 日本久久中文字幕| 2019中文字幕全在线观看| 奇米四色中文综合久久| 欧美另类极品videosbest最新版本| 亚洲欧美另类在线观看| 亚洲码在线观看| 深夜福利亚洲导航| 久久久精品亚洲| 91亚洲精品久久久久久久久久久久| 国产美女精彩久久| 91亚洲精品在线观看| 久久久综合免费视频| 成人深夜直播免费观看| 国产精品久久久久一区二区| 亚洲欧美综合精品久久成人| 国产亚洲激情视频在线| 国产精品一区二区久久| 69**夜色精品国产69乱| 福利一区视频在线观看| 91高潮精品免费porn| 最近2019免费中文字幕视频三| 91久久久久久久久| 永久免费精品影视网站| 国产精品99免视看9| 国产欧美精品xxxx另类| 久久精视频免费在线久久完整在线看| 538国产精品一区二区免费视频| 日韩av资源在线播放| 国产精品国语对白| 国产午夜一区二区| 亚洲国产精品资源| 日本一区二区三区在线播放| 国产亚洲精品久久|