• 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

    <?xml version="1.0" encoding="utf-8"?>
    <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();
    }

    @Override
    public void onDestroy() {
    System.out.println("service onDestory");
    super.onDestroy();
    }

    @Override
    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);
    }

    @Override
    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);
    }

    @Override
    public void onCreate(SurfaceHolder surfaceHolder) {
    System.out.println("onCreate");
    super.onCreate(surfaceHolder);
    //作用是使壁纸能响应touch event,默认是false
    setTouchEventsEnabled(true);
    }

    @Override
    public void onDestroy() {
    System.out.println("onDestroy");
    super.onDestroy();
    handler.removeCallbacks(drawThread);
    }

    @Override
    public void onOffsetsChanged(float xOffset, float yOffset, float xOffsetStep, float yOffsetStep, int xPixelOffset, int yPixelOffset) {
    // TODO Auto-generated method stub
    System.out.println("onoffsetsChanged");
    super.onOffsetsChanged(xOffset, yOffset, xOffsetStep, yOffsetStep, xPixelOffset, yPixelOffset);
    }

    @Override
    public void onVisibilityChanged(boolean visible) {
    System.out.println("onVisibilityChanged");
    mVisible = visible;
    if (visible) {
    //开始
    handler.postDelayed(drawThread, 50);
    } else {
    handler.removeCallbacks(drawThread);
    }
    }

    @Override
    public void onSurfaceChanged(SurfaceHolder holder, int format, int width, int height) {
    System.out.println("onSurfaceChanged");
    // TODO Auto-generated method stub
    super.onSurfaceChanged(holder, format, width, height);
    }

    @Override
    public void onSurfaceCreated(SurfaceHolder holder) {
    System.out.println("onSurfaceCreated");
    super.onSurfaceCreated(holder);
    }

    @Override
    public void onSurfaceDestroyed(SurfaceHolder holder) {
    System.out.println("onSurfaceDestoryed");
    // TODO Auto-generated method stub
    super.onSurfaceDestroyed(holder);
    handler.removeCallbacks(drawThread);
    }

    @Override
    public void onTouchEvent(MotionEvent event) {
    System.out.println("onTouchEvent");
    // TODO Auto-generated method stub
    super.onTouchEvent(event);
    }


    private void drawWallpaper() {

    SurfaceHolder holder = getSurfaceHolder();
    Canvas canvas = holder.lockCanvas();
    drawTime(canvas);
    holder.unlockCanvasAndPost(canvas);

    //循环执行
    handler.postDelayed(drawThread, 50);
    }

    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();
    }
    }

    }

  • 相关阅读:
    c++ cout、cin、endl
    c++ namespace
    找到小镇的法官
    整数反转
    c++stack类的用法
    栈应用:最小栈(第二题)
    栈的压入、弹出序列(第一题)
    c++中vector类的用法
    Android 面试常问七道题
    传感器实现仿微信摇一摇功能
  • 原文地址:https://www.cnblogs.com/sode/p/2318107.html
Copyright © 2020-2023  润新知