最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

Android編程之動態(tài)壁紙實例分析

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

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

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

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

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

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

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

引用

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

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

引用

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

屏幕滑動的時候觸發(fā)此方法

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

引用

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

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

引用

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

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

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

引用

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

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

復(fù)制代碼 代碼如下:
<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>

比較重要的部分首先是權(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文件夾下建立一個xml目錄,和寫appwidget一樣。
在目錄下我們創(chuàng)建一個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"

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

引用

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

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

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

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

相關(guān)文章

  • 關(guān)于Android中drawable必知的一些規(guī)則

    關(guān)于Android中drawable必知的一些規(guī)則

    drawable這個東西相信大家天天都在使用,每個Android開發(fā)者都再熟悉不過了,但可能還有一些你所不知道的規(guī)則,那今天我們就來一起探究一下這些規(guī)則。
    2016-08-08
  • android模擬實現(xiàn)航拍遙控

    android模擬實現(xiàn)航拍遙控

    這篇文章主要為大家詳細介紹了android模擬實現(xiàn)航拍遙控,文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2022-08-08
  • Android PopupWindow用法解析

    Android PopupWindow用法解析

    這篇文章主要為大家詳細解析了Android PopupWindow用法,對PopupWindow源碼進行分析,感興趣的小伙伴們可以參考一下
    2016-07-07
  • android實現(xiàn)線程間通信的四種常見方式

    android實現(xiàn)線程間通信的四種常見方式

    線程通信相信大家都不陌生了,但是你知道幾種方法呢,本文主要介紹了android實現(xiàn)線程間通信的四種常見方式,分享給大家,需要的朋友們下面隨著小編來一起學習學習吧
    2021-05-05
  • Android開發(fā)之創(chuàng)建可點擊的Button實現(xiàn)方法

    Android開發(fā)之創(chuàng)建可點擊的Button實現(xiàn)方法

    這篇文章主要介紹了Android創(chuàng)建可點擊的Button實現(xiàn)方法,實例分析了Android創(chuàng)建button按鈕過程中的界面配置,功能實現(xiàn)與相關(guān)注意事項,需要的朋友可以參考下
    2016-03-03
  • 用Kotlin實現(xiàn)Android點擊事件的方法

    用Kotlin實現(xiàn)Android點擊事件的方法

    本篇文章主要介紹了用Kotlin實現(xiàn)Android點擊事件的方法,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2017-06-06
  • Android 程序應(yīng)用的生命周期

    Android 程序應(yīng)用的生命周期

    本篇文章小編為大家介紹,Android 程序應(yīng)用的生命周期。需要的朋友參考下
    2013-04-04
  • Kotlin方法與Lambda表達式實踐使用介紹

    Kotlin方法與Lambda表達式實踐使用介紹

    這篇文章主要介紹了Kotlin方法與Lambda表達式實踐,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧
    2022-09-09
  • Mono for Android 實現(xiàn)高效的導(dǎo)航(Effective Navigation)

    Mono for Android 實現(xiàn)高效的導(dǎo)航(Effective Navigation)

    Android 4.0 系統(tǒng)定義了一系列的高效導(dǎo)航方式 (Effective Navigation), 主要包括標簽、下拉列表、以及向上和返回等, 本文介紹如何用 Mono for Android 實現(xiàn)這些的導(dǎo)航方式
    2012-12-12
  • Android開發(fā)之ViewPager實現(xiàn)滑動切換頁面

    Android開發(fā)之ViewPager實現(xiàn)滑動切換頁面

    這篇文章主要為大家詳細介紹了Android開發(fā)之ViewPager實現(xiàn)滑動切換頁面,文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2022-09-09

最新評論

苍山县| 兰西县| 高碑店市| 南安市| 灵山县| 巴青县| 淅川县| 通道| 弋阳县| 阳城县| 凤冈县| 茂名市| 宝丰县| 易门县| 开鲁县| 北宁市| 垣曲县| 和平县| 韩城市| 无为县| 义马市| 阿坝| 隆回县| 尼木县| 合肥市| 江安县| 象山县| 昌乐县| 北海市| 宁明县| 夹江县| 井研县| 普格县| 库尔勒市| 侯马市| 重庆市| 安庆市| 车险| 桃源县| 永胜县| 乾安县|