日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

android经典动态壁纸,android中自定义动态壁纸

發布時間:2023/12/20 编程问答 16 豆豆
生活随笔 收集整理的這篇文章主要介紹了 android经典动态壁纸,android中自定义动态壁纸 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

在android中我們一般設置靜態壁紙,使用WallpaperManager可以輕松達到目的,但是使用WallpaperManager是不能夠設置動態壁紙的,為此android提供了一個WallpaperService專門用來設置動態壁紙,那么我們就用幾個簡單的步驟來說明一下如何簡單的定義一個動態壁紙。

1.新建一個資源文件wallpaper.xml

首先在xml目錄下面新建一個wallpaper.xml的資源描述文件.

android:description="@string/wallpaper_name"

android:thumbnail="@mipmap/ic_launcher_round" />

這個xml的標簽必須是wallpaper,description用于對當前壁紙的描述,可選。thumbnail用于表示當前壁紙的縮略圖,一般在launcher或者設置中設置動態壁紙的時候會顯示。

2.繼承WallpaperService類

public class MyWallpaperService extends WallpaperService {

@Override

public Engine onCreateEngine() {

return new MyEngine();

}

private class MyEngine extends Engine {

@Override

public void onCreate(SurfaceHolder surfaceHolder) {

super.onCreate(surfaceHolder);

}

@Override

public void onSurfaceCreated(SurfaceHolder holder) {

super.onSurfaceCreated(holder);

Canvas canvas = holder.lockCanvas();

Paint p = new Paint(Paint.ANTI_ALIAS_FLAG);

p.setStrokeWidth(10);

p.setColor(Color.BLUE);

canvas.drawLine(0, 0, 100, 100, p);

holder.unlockCanvasAndPost(canvas);

}

@Override

public void onVisibilityChanged(boolean visible) {

super.onVisibilityChanged(visible);

}

@Override

public void onSurfaceDestroyed(SurfaceHolder holder) {

super.onSurfaceDestroyed(holder);

}

@Override

public void onDestroy() {

super.onDestroy();

}

}

}

WallpaperService這個類沒有太多的接口功能供我們調用,最重要的方法是onCreateEngine,我們必須在這個方法中返回一個壁紙的引擎,我們所有的繪制任務都需要在這個引擎中完成。返回的Engine對象是WallpaperService的一個內部類,在這個方法中有大量的回調方法用來幫助我們完成我們的繪制邏輯,最重要的方法包括onSurfaceCreated、onVisibilityChanged、onSurfaceDestroyed等,這些回調方法的功能還是很好理解的,在這里我們在壁紙層的surface創建之后繪制一個直線,無須贅述。

3.聲明androidmanifest.xml

WallpaperService也是一個service,所以也需要在清單文件中聲明,這里聲明需要注意permission和meta-data的聲明,格式比較固定,所以也不用多說了。

package="com.coolspan.livewallpaper">

android:allowBackup="true"

android:icon="@mipmap/ic_launcher"

android:label="@string/app_name"

android:roundIcon="@mipmap/ic_launcher_round"

android:supportsRtl="true"

android:theme="@style/AppTheme">

android:name=".service.LiveWallpaperService"

android:enabled="true"

android:label="@string/wallpaper_name"

android:permission="android.permission.BIND_WALLPAPER">

android:name="android.service.wallpaper"

android:resource="@xml/my_wallpaper" />

4.啟動

一般這樣就可以在launcher或者設置中啟動了,這里我們使用一個Activity來啟動到設置的界面

Intent localIntent = new Intent();

localIntent.setAction(WallpaperManager.ACTION_CHANGE_LIVE_WALLPAPER);//android.service.wallpaper.CHANGE_LIVE_WALLPAPER

localIntent.putExtra(WallpaperManager.EXTRA_LIVE_WALLPAPER_COMPONENT

, new ComponentName(this.getApplicationContext().getPackageName()

, MyWallpaperService.class.getCanonicalName()));

this.startActivity(localIntent);

設置完成之后,桌面就顯示了~

總結

以上是生活随笔為你收集整理的android经典动态壁纸,android中自定义动态壁纸的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。