• 周日. 4 月 26th, 2026

物嫩软件资讯网

软件资讯来物嫩

android动态壁纸的制作教程,android – 动态壁纸教程

admin@wunen

5 月 16, 2025

我制作了一个简单的样本动态壁纸,颜色随时间变化.也许你可以用这个作为起点:

package com.cmwmobile.android.samples;

import android.graphics.Canvas;

import android.os.Handler;

import android.service.wallpaper.WallpaperService;

import android.view.SurfaceHolder;

/**

* The SampleLiveWallpaperService class is responsible for showing the

* animation and is an interface to android.

* @author Casper Wakkers – www.cmwmobile.com

*/

public class SampleLiveWallpaperService extends WallpaperService {

private Handler handler = null;

/**

* Inner class representing the actual implementation of the

* Live Wallpaper {@link Engine}.

*/

private class SampleLiveWallpaperEngine extends Engine {

private boolean visible = false;

private int[] colors = {0, 0, 0} ;

/**

* Runnable implementation for the actual work.

*/

private final Runnable runnableSomething = new Runnable() {

/**

* {@inheritDoc}

*/

public void run() {

drawSomething();

}

};

/**

* The drawSomething method is responsible for drawing the animation.

*/

private void drawSomething() {

final SurfaceHolder holder = getSurfaceHolder();

Canvas canvas = null;

try {

canvas = holder.lockCanvas();

if (canvas != null) {

canvas.drawARGB(200, colors[0], colors[1], colors[2]);

}

updateColors(colors);

}

finally {

if (canvas != null) {

holder.unlockCanvasAndPost(canvas);

}

}

// Reschedule the next redraw.

handler.removeCallbacks(runnableSomething);

if (visible) {

// Play around with the delay for an optimal result.

handler.postDelayed(runnableSomething, 25);

}

}

/**

* Method updateColors updates the colors by increasing the value

* per RGB. The values are reset to zero if the maximum value is

* reached.

* @param colors to be updated.

*/

private void updateColors(int[] colors) {

if (colors[0] < 255) {

colors[0]++;

}

else {

if (colors[1] < 255) {

colors[1]++;

}

else {

if (colors[2] < 255) {

colors[2]++;

}

else {

colors[0] = 0;

colors[1] = 0;

colors[2] = 0;

}

}

}

}

/**

* {@inheritDoc}

*/

public void onDestroy() {

super.onDestroy();

handler.removeCallbacks(runnableSomething);

}

/**

* {@inheritDoc}

*/

public void onVisibilityChanged(boolean visible) {

super.onVisibilityChanged(visible);

this.visible = visible;

if (visible) {

drawSomething();

}

else {

handler.removeCallbacks(runnableSomething);

}

}

}

/**

* Constructor. Creates the {@link Handler}.

*/

public SampleLiveWallpaperService() {

handler = new Handler();

}

/**

* {@inheritDoc}

*/

public Engine onCreateEngine() {

return new SampleLiveWallpaperEngine();

}

}

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注