Android 手机壁纸(动态2)


<span style="font-size:12px;">package com.example.android;


import android.content.Context;
import android.graphics.Canvas;
import android.graphics.Color;
import android.graphics.Paint;
import android.graphics.Paint.Style;
import android.graphics.PorterDuff.Mode;
import android.graphics.RectF;
import android.os.Handler;
import android.service.wallpaper.WallpaperService;
import android.util.Log;
import android.view.MotionEvent;
import android.view.SurfaceHolder;
import android.view.WindowManager;

public class MyWallPaper extends WallpaperService {

	private Engine engine;

	@Override
	public void onCreate() {
		Log.d("ee", "onCreate");
		super.onCreate();
	}

	@Override
	public Engine onCreateEngine() {
		Log.d("ee", "onCreateEngine");
		if (engine != null) {
			engine = null;
		}
		engine = new WallPaperEngine();
		return engine;
	}

	@Override
	public void onDestroy() {
		Log.d("ee", "onDestroy");
		super.onDestroy();
	}

	public class WallPaperEngine extends Engine {

		/**
		 * 画笔
		 */
		private Paint[] mPaint=new Paint[6];
		/**
		 * 壁纸是否可见
		 */
		private boolean isVisably = false;
		/**
		 * 管理线程
		 */
		private Handler mHandler;
		/**
		 * 
		 */
		private SurfaceHolder mSurfaceHolder;
		/**
		 * 
		 */
		private Canvas mCanvas;
		/**
		 * 画笔颜色
		 */
		private int mColorPaint = 1;
		/**
		 * 屏幕宽
		 */
		private int screenWidth;
		/**
		 * 屏幕高
		 */
		private int screenHeight;
		/**
		 * 开启壁纸线程
		 */
		private Runnable mRunnable = new Runnable() {
			@Override
			public void run() {
				drawFram();
			}
		};

		/**
		 * 画壁纸图
		 */
		protected void drawFram() {
			Log.d("ee", "drawFram..");
			mSurfaceHolder = getSurfaceHolder();// 获得SurfaceHolder对象
			mCanvas=null;
			try{//如果不try一下会抛异常unlockCanvasAndPost and IllegalArgumentException
			mCanvas = mSurfaceHolder.lockCanvas();// 获得canvas对象
			mCanvas.drawColor(Color.TRANSPARENT,Mode.CLEAR);//每次重画要清屏
			// 进行绘图操作
			for (int i = 0; i < 6; i++) {
					drawLove(mCanvas,i);
			}

			mHandler.postDelayed(mRunnable, 5000);
			} finally {
				mSurfaceHolder.unlockCanvasAndPost(mCanvas); // 释放canvas锁,并且显示视图
            }
			
		}

		private void drawLove(Canvas mCanvas, int index) {
			/** 画一个心 **/
			int i, j;
			double x, y, r;
			int indexX=(int)(0+Math.random()*(screenWidth-270-0+1));
			int indexY=(int)(0+Math.random()*(screenHeight-270-0+1));
			if (index==0) {
				for (i = 90; i <= 190; i++) {
					for (j = 90; j <= 190; j++) {
						r = Math.PI / 45 * i * (1 - Math.sin(Math.PI / 45 * j)) * 20;
						x = r * Math.cos(Math.PI / 45 * j) * Math.sin(Math.PI / 45 * i) + 320 / 2;
						y = -r * Math.sin(Math.PI / 45 * j) + 400 / 4;
						mCanvas.drawPoint((float) x+indexX, (float) y+indexY, mPaint[index]);
					}
				}
			}else {
				for (i = 0; i <= 90; i++) {
					for (j = 0; j <= 90; j++) {
						r = Math.PI / 45 * i * (1 - Math.sin(Math.PI / 45 * j)) * 20;
						x = r * Math.cos(Math.PI / 45 * j) * Math.sin(Math.PI / 45 * i) + 320 / 2;
						y = -r * Math.sin(Math.PI / 45 * j) + 400 / 4;
						Log.d("ee", x+" -----------  "+y);
						mCanvas.drawPoint((float) x+indexX, (float) y+indexY, mPaint[index]);
					}
				}
			}
			
		}

		public WallPaperEngine() {
			Log.d("ee", "WallPaperEngine..");
			WindowManager wm = (WindowManager)MyWallPaper.this.getSystemService(Context.WINDOW_SERVICE);
			this.screenWidth = wm.getDefaultDisplay().getWidth();//屏幕宽度
			this.screenHeight = wm.getDefaultDisplay().getHeight();//屏幕高度
			// 初始化6只画笔
			for (int i = 0; i < 6; i++) {
				Paint paint=new Paint();
				paint.setTextSize(44);
				paint.setStyle(Style.STROKE);
				paint.setAntiAlias(true);
				paint.setStrokeWidth(4);
				switch (i) {
				case 0:
					paint.setColor(Color.RED);
					break;
				case 1:
					paint.setColor(Color.BLUE);
					break;
				case 2:
					paint.setColor(Color.GREEN);
					break;
				case 3:
					paint.setColor(Color.YELLOW);
					break;
				case 4:
					paint.setColor(Color.argb(255, 255, 181, 216));
					break;
				case 5:
					paint.setColor(Color.argb(255, 0, 255, 255));
					break;

				default:
					paint.setColor(Color.WHITE);
					break;
					
				}
				mPaint[i]=paint;
			}
			mHandler = new Handler();
		}

		@Override
		public void onCreate(SurfaceHolder surfaceHolder) {
			super.onCreate(surfaceHolder);
			Log.d("ee", "onCreate..");
			// 作用是使壁纸能响应touch event,默认是false
			setTouchEventsEnabled(true);
		}
		
		@Override
		public void onOffsetsChanged(float xOffset, float yOffset, float xOffsetStep, float yOffsetStep, int xPixelOffset, int yPixelOffset) {
			super.onOffsetsChanged(xOffset, yOffset, xOffsetStep, yOffsetStep, xPixelOffset, yPixelOffset);
			Log.d("ee", "onOffsetsChanged..");
			drawFram();
		}

		@Override
		public void onVisibilityChanged(boolean visible) {
			super.onVisibilityChanged(visible);
			Log.d("ee", "onVisibilityChanged..");
			isVisably = visible;
			if (visible) {
				// 以实现一秒后调用此Runnable对象,以实现每一秒实现一次的定时器操作
				mHandler.postDelayed(mRunnable, 1000);
			} else {
				// 关闭此定时器
				mHandler.removeCallbacks(mRunnable);
			}
		}

		@Override
		public void onSurfaceDestroyed(SurfaceHolder holder) {
			super.onSurfaceDestroyed(holder);
			
			Log.d("ee", "onSurfaceDestroyed..");
			isVisably=false;
			// 关闭此定时器
			mHandler.removeCallbacks(mRunnable);
		}

		@Override
		public void onTouchEvent(MotionEvent event) {
			super.onTouchEvent(event);
			Log.e("ee", "onTouchEvent.."+event.getAction());
			switch (event.getAction()) {
			case MotionEvent.ACTION_DOWN:
				/** 绘制文字 **/
				mCanvas.drawText("Loving You", event.getX(), event.getY(), mPaint[0]);
				break;

			default:
				break;
			}
		}

		@Override
		public void onDestroy() {
			super.onDestroy();
			Log.d("ee", "onDestroy..");
			// 关闭此定时器
			mHandler.removeCallbacks(mRunnable);
		}

	}

}</span>

壁纸运行装到手机上后,是看不到图标的,只有找到系统设置,设置壁纸中才能看到


       

源码下载

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值