欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

Android編程之動(dòng)態(tài)壁紙實(shí)例分析

 更新時(shí)間:2015年12月03日 12:25:59   作者:wiseideal  
這篇文章主要介紹了Android編程之動(dòng)態(tài)壁紙實(shí)現(xiàn)方法,以實(shí)例形式分析了Android動(dòng)態(tài)壁紙的原理與實(shí)現(xiàn)步驟,具有一定參考借鑒價(jià)值,需要的朋友可以參考下

本文實(shí)例講述了Android編程之動(dòng)態(tài)壁紙。分享給大家供大家參考,具體如下:

從android 2.1版本起引入了動(dòng)態(tài)壁紙的概念,熟悉android的人一定不會(huì)陌生。這里解釋一個(gè)動(dòng)態(tài)壁紙是怎么形成又是怎么工作的。

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

打個(gè)比方說,在我們設(shè)置一個(gè)動(dòng)態(tài)壁紙時(shí)有預(yù)覽,這時(shí)啟動(dòng)了一個(gè)預(yù)覽的engine來繪制與刷新,當(dāng)我們設(shè)置了壁紙以后又啟動(dòng)了一個(gè)填充整個(gè)桌面的engine在實(shí)時(shí)的繪制與刷新。所以動(dòng)態(tài)壁紙的重點(diǎn)在engine里,這里等下提及。

現(xiàn)在著手創(chuàng)建一個(gè)動(dòng)態(tài)壁紙。

第一步創(chuàng)建我們的WallpaperService類,同樣在其中創(chuàng)建engine類,engine是WallpaperService的內(nèi)部類。其中engine中關(guān)鍵的方法有

引用

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

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

引用

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

屏幕滑動(dòng)的時(shí)候觸發(fā)此方法

xOffset可以用來判斷屏幕序號(hào) 百分比的形式,舉例說如果你手機(jī)上有5個(gè)分屏,第一屏這里是0.000,第二屏是0.2000 第三屏是0.4000以此類推
xOffsetStep從字面意義就能理解是步進(jìn) 同樣和你的分屏數(shù)有關(guān) 如果你的分屏數(shù)為5 則每次步進(jìn)xOffsetStep都是0.20000
xPixelOffset就是實(shí)際上像素的移動(dòng)距離,也就是說移動(dòng)了多少像素,奇怪的是這里左右移動(dòng)像素點(diǎn)的offset都為負(fù)數(shù)

引用

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

當(dāng)動(dòng)態(tài)壁紙的可見性發(fā)生變化時(shí)觸發(fā)此方法,舉例說在桌面上時(shí),動(dòng)態(tài)壁紙的visibility為true,當(dāng)你運(yùn)行某個(gè)程序的時(shí)候動(dòng)態(tài)壁紙的visibility變?yōu)閒alse,這里很好理解

引用

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

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

當(dāng)你要將一個(gè)app定義為動(dòng)態(tài)壁紙時(shí),首先需要在AndroidManifest.xml中進(jìn)行指定,前面提到過,動(dòng)態(tài)壁紙是從 android 2.1 開始支持,所以需要添加

引用

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

由于還要對(duì)系統(tǒng)說明這是一個(gè)動(dòng)態(tài)壁紙,我們還要加入

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

除此之外,由于我們運(yùn)行了service,所以同樣需要對(duì)service進(jìn)行配置
引用

<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>

比較重要的部分首先是權(quán)限android:permission="android.permission.BIND_WALLPAPER"
其次service需要響應(yīng)action

復(fù)制代碼 代碼如下:
android:name="android.service.wallpaper.WallpaperService

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

接下來接收配置文件。首先在res文件夾下建立一個(gè)xml目錄,和寫appwidget一樣。
在目錄下我們創(chuàng)建一個(gè)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 是系統(tǒng)要求這么寫的,帶上命名空間。

引用

復(fù)制代碼 代碼如下:
android:settingsActivity="LiveWallPreference"

指定配置動(dòng)態(tài)壁紙的PreferenceActivity,這個(gè)PreferenceActivity同樣需要在AndroidManifest.xml中注冊,不過和一般的activity一樣。當(dāng)我們點(diǎn)擊動(dòng)態(tài)壁紙的設(shè)置按鈕時(shí),導(dǎo)向這個(gè)activity。不可缺少,否則點(diǎn)擊設(shè)置會(huì)報(bào)錯(cuò)。

引用

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

第一個(gè)圖標(biāo)對(duì)應(yīng)動(dòng)態(tài)壁紙列表中的圖標(biāo),第二條description則是圖標(biāo)右邊你創(chuàng)建的動(dòng)態(tài)壁紙的名字。

至此動(dòng)態(tài)壁紙的框架就算完成了。接下來只需要在wallpaperservice類中加入刷新機(jī)制,加入動(dòng)態(tài)內(nèi)容,一個(gè)動(dòng)態(tài)桌面就完成了。

希望本文所述對(duì)大家Android程序設(shè)計(jì)有所幫助。

相關(guān)文章

  • Android SharedPreference存儲(chǔ)文件三步走

    Android SharedPreference存儲(chǔ)文件三步走

    SharedPreferences是安卓平臺(tái)上一個(gè)輕量級(jí)的存儲(chǔ)類,用來保存應(yīng)用的一些常用配置,比如Activity狀態(tài),Activity暫停時(shí),將此activity的狀態(tài)保存到SharedPereferences中;當(dāng)Activity重載,系統(tǒng)回調(diào)方法onSaveInstanceState時(shí),再從SharedPreferences中將值取出
    2023-01-01
  • Flutter實(shí)現(xiàn)漸變色加描邊字體效果

    Flutter實(shí)現(xiàn)漸變色加描邊字體效果

    這篇文章介紹了Flutter實(shí)現(xiàn)漸變色描邊字體效果的方法,對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2021-11-11
  • Android Insets相關(guān)知識(shí)總結(jié)

    Android Insets相關(guān)知識(shí)總結(jié)

    這篇文章主要介紹了Android Insets相關(guān)知識(shí)總結(jié),幫助大家更好的理解和學(xué)習(xí)使用Android,感興趣的朋友可以了解下
    2021-03-03
  • ijkplayer打包支持https的so使用詳解

    ijkplayer打包支持https的so使用詳解

    這篇文章主要為大家介紹了ijkplayer打包支持https的so使用詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2022-11-11
  • Android ListView分頁簡單實(shí)現(xiàn)

    Android ListView分頁簡單實(shí)現(xiàn)

    這篇文章主要介紹了Android ListView分頁簡單實(shí)現(xiàn)的相關(guān)資料,需要的朋友可以參考下
    2017-06-06
  • Android應(yīng)用中炫酷的橫向和環(huán)形進(jìn)度條的實(shí)例分享

    Android應(yīng)用中炫酷的橫向和環(huán)形進(jìn)度條的實(shí)例分享

    這篇文章主要介紹了Android應(yīng)用中炫酷的橫向和圓形進(jìn)度條的實(shí)例分享,文中利用了一些GitHub上的插件進(jìn)行改寫,也是一片很好的二次開發(fā)教學(xué),需要的朋友可以參考下
    2016-04-04
  • Android手機(jī)屏幕同步工具asm.jar

    Android手機(jī)屏幕同步工具asm.jar

    今天小編就為大家分享一篇關(guān)于Android手機(jī)屏幕同步工具asm.jar的文章,小編覺得內(nèi)容挺不錯(cuò)的,現(xiàn)在分享給大家,具有很好的參考價(jià)值,需要的朋友一起跟隨小編來看看吧
    2018-10-10
  • Android編程獲取組件尺寸大小的方法

    Android編程獲取組件尺寸大小的方法

    這篇文章主要介紹了Android編程獲取組件尺寸大小的方法,結(jié)合實(shí)例形式分析了Android繪制組件之前獲取該組件大小的3種常見操作技巧,需要的朋友可以參考下
    2017-03-03
  • Android編程實(shí)現(xiàn)根據(jù)經(jīng)緯度查詢地址并對(duì)獲取的json數(shù)據(jù)進(jìn)行解析的方法

    Android編程實(shí)現(xiàn)根據(jù)經(jīng)緯度查詢地址并對(duì)獲取的json數(shù)據(jù)進(jìn)行解析的方法

    這篇文章主要介紹了Android編程實(shí)現(xiàn)根據(jù)經(jīng)緯度查詢地址并對(duì)獲取的json數(shù)據(jù)進(jìn)行解析的方法,結(jié)合實(shí)例形式分析了Android的經(jīng)緯度地址解析與json格式數(shù)據(jù)操作相關(guān)技巧,需要的朋友可以參考下
    2017-02-02
  • Android編程中全局變量問題分析

    Android編程中全局變量問題分析

    這篇文章主要介紹了Android編程中全局變量,較為詳細(xì)的分析了全局變量的功能并結(jié)合案例形式講述了全局變量所引起的問題及相應(yīng)的解決技巧,需要的朋友可以參考下
    2016-11-11

最新評(píng)論