package com.jone.app.ui.wallpaper; import android.app.WallpaperManager; import android.content.Context; import android.graphics.Bitmap; import android.graphics.BitmapFactory; import android.graphics.Canvas; import android.graphics.Paint; import android.service.wallpaper.WallpaperService; import android.view.SurfaceHolder; import com.jone.app.R; import java.io.IOException; /** * Created by jone_admin on 14-1-20. */ public class BgWallpaperService extends WallpaperService{ @Override public Engine onCreateEngine() { return new MyEngine(); } private static void setWallpaper(Context context, int resourceId){ //设置壁纸为应用bg,需加权限"android.permission.SET_WALLPAPER" WallpaperManager wallpaperManager = WallpaperManager.getInstance(context); try { wallpaperManager.setResource(resourceId); } catch (IOException e) { e.printStackTrace(); } } private class MyEngine extends Engine{ private Bitmap bgBitmap; private final Paint paint = new Paint(); // 创建画笔 @Override public void onCreate(SurfaceHolder surfaceHolder) { super.onCreate(surfaceHolder); paint.setAntiAlias(true);// 打开抗锯齿 initImg(); } /** * 该方法是应用程序第一次创建时要调用。可在这个方法里调用父类对应方法。 * 该方法执行完毕后系统会立即调用onSurfaceChanged方法 */ @Override public void onSurfaceCreated(SurfaceHolder holder) { // TODO Auto-generated method stub super.onSurfaceCreated(holder); draw(holder); } @Override public void onDestroy() { super.onDestroy(); if(bgBitmap != null && !bgBitmap.isRecycled()){ bgBitmap.recycle(); bgBitmap = null; } System.gc(); } public void initImg() { bgBitmap = BitmapFactory.decodeResource(getResources(), R.drawable.bg02); } private void draw(SurfaceHolder holder){ Canvas canvas = holder.lockCanvas(null); if (canvas != null) { canvas.drawBitmap(bgBitmap, 0, 0, null); } holder.unlockCanvasAndPost(canvas); } } }