首先我們要把一張自己喜歡的圖片放到sdcard中,具體我們可以在eclipse中用滑鼠點擊匯入,比較方便,也可以在命令列中運行:
C:\Documents and Settings\Administrator>adb push "C:\Documents and Settings\Administrator\My Documents\My Pictures\zzmm320x480.png" /sdcard/zzmm320x480.png
匯入成功後需要擷取這個圖片,代碼如下:
package com.android.test; import java.io.File; import java.io.IOException; import android.app.Activity; import android.app.WallpaperManager; import android.graphics.Bitmap; import android.graphics.BitmapFactory; import android.os.Bundle; import android.os.Environment; import android.widget.Toast; public class WallPaperActivity extends Activity { public static final String FILE_NAME = "MM-320x480.png"; @Override protected void onCreate (Bundle savedInstanceState) { super.onCreate(savedInstanceState); Bitmap wall = getWallPaper(); setWallPaper(wall); } //從sdcard中擷取圖片 private Bitmap getWallPaper() { //拿到sdcard的根目錄的路徑 File root = Environment.getExternalStorageDirectory(); //拿到sdcard中指定的圖片 File wall = new File(root, FILE_NAME); //拿到圖片的絕對路徑 String path = wall.getAbsolutePath(); System.out.println("path = " + path); //根據圖片的絕對路徑擷取圖片 return BitmapFactory.decodeFile(path); } //將擷取的圖片設定為牆紙 private void setWallPaper(Bitmap wall) { //擷取一個牆紙管理器的對象 WallpaperManager wManager = WallpaperManager.getInstance(this); try { //將對應的圖片設定為牆紙 wManager.setBitmap(wall); } catch (IOException e) { String msg = "設定案頭背景異常:" + e.getLocalizedMessage(); System.out.println("設定案頭背景異常:" + msg); Toast.makeText(this, msg, Toast.LENGTH_LONG).show(); e.printStackTrace(); } } }
主要是擷取sdcard的路徑,然後從sdcard中找到那個檔案,擷取那個檔案的路徑,然後從BitmapFactory中構建這張圖片。
擷取圖片之後,需要將圖片設定為牆紙。
只需要從牆紙管理器中擷取一個對象,然後調用wManager.setBitmap(wall)就ok了
其實設定牆紙很簡單,有木有
哦,對了,別忘記了在manif.xml檔案中加入可以設定牆紙的許可權:
<uses-permission android:name="android.permission.SET_WALLPAPER"></uses-permission>