天天看点

android 动态壁纸 2

1. rs/xml/mylivewallpaper.xml

<?xml version="1.0" encoding="utf-8"?>

<wallpaper xmlns:android="http://schemas.android.com/apk/res/android"

android:thumbnail="@drawable/aaa"

/>

2.AndroidManifest.xml

<manifest xmlns:android="http://schemas.android.com/apk/res/android"

package="com.lp.wallpaper">

<uses-sdk android:minSdkVersion="7" />

<uses-feature android:name="android.software.live_wallpaper" />

<application

android:icon="@drawable/icon"

android:label="@string/app_name">

<service

android:label="@string/app_name"

android:name=".MyWallpaper"

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/mylivewallpaper" />

</service>

</application>

</manifest>

3.MyWallpaper.java

package com.lp.wallpaper;

import java.text.SimpleDateFormat;

import java.util.Date;

import android.graphics.Canvas;

import android.graphics.Color;

import android.graphics.Paint;

import android.os.Bundle;

import android.os.Handler;

import android.service.wallpaper.WallpaperService;

import android.view.MotionEvent;

import android.view.SurfaceHolder;

public class MyWallpaper extends WallpaperService{

private Handler handler = new Handler();

@Override

public void onCreate() {

System.out.println("service onCreate");

super.onCreate();

}

public void onDestroy() {

System.out.println("service onDestory");

super.onDestroy();

public Engine onCreateEngine() {

System.out.println("service onCreateEngine");

return new MyEngine();

private class MyEngine extends Engine{

private float x = 200;

private float y = 300;

private Paint mPaint;

private boolean mVisible = false;

private Runnable drawThread = new Runnable() {

public void run() {

drawWallpaper();

};

public MyEngine(){

System.out.println("MyEngine");

mPaint = new Paint();

mPaint.setColor(Color.RED);

mPaint.setAntiAlias(true);

mPaint.setStrokeWidth(4);

mPaint.setStyle(Paint.Style.STROKE);

mPaint.setTextSize(24);

public Bundle onCommand(String action, int x, int y, int z, Bundle extras, boolean resultRequested) {

// TODO Auto-generated method stub

System.out.println("onCommand");

return super.onCommand(action, x, y, z, extras, resultRequested);

public void onCreate(SurfaceHolder surfaceHolder) {

System.out.println("onCreate");

super.onCreate(surfaceHolder);

//作用是使壁纸能响应touch event,默认是false

setTouchEventsEnabled(true);

System.out.println("onDestroy");

handler.removeCallbacks(drawThread);

public void onOffsetsChanged(float xOffset, float yOffset, float xOffsetStep, float yOffsetStep, int xPixelOffset, int yPixelOffset) {

System.out.println("onoffsetsChanged");

super.onOffsetsChanged(xOffset, yOffset, xOffsetStep, yOffsetStep, xPixelOffset, yPixelOffset);

public void onVisibilityChanged(boolean visible) {

System.out.println("onVisibilityChanged");

mVisible = visible;

if (visible) {

//开始

handler.postDelayed(drawThread, 50);

} else {

public void onSurfaceChanged(SurfaceHolder holder, int format, int width, int height) {

System.out.println("onSurfaceChanged");

super.onSurfaceChanged(holder, format, width, height);

public void onSurfaceCreated(SurfaceHolder holder) {

System.out.println("onSurfaceCreated");

super.onSurfaceCreated(holder);

public void onSurfaceDestroyed(SurfaceHolder holder) {

System.out.println("onSurfaceDestoryed");

super.onSurfaceDestroyed(holder);

public void onTouchEvent(MotionEvent event) {

System.out.println("onTouchEvent");

super.onTouchEvent(event);

private void drawWallpaper() {

SurfaceHolder holder = getSurfaceHolder();

Canvas canvas = holder.lockCanvas();

drawTime(canvas);

holder.unlockCanvasAndPost(canvas);

//循环执行

private void drawTime(Canvas canvas) {

Date date = new Date(System.currentTimeMillis());

SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd hh:mm:ss");

String dataStr = sdf.format(date);

canvas.save();

canvas.drawColor(0xff00ff00);

canvas.drawText(dataStr, x, y, mPaint);

canvas.restore();

继续阅读