Oldalak

2012. december 15., szombat

Élő háttérkép (live wallpaper demo) létrehozása

Élő háttérkép alkalmazás létrehozásának lépései:



    
    
    
        
         
            
                
            
            
        
        
    



Az alkalmazás manifest állományában az élő háttérkép alkalmazáshoz meg kell adni az élő háttérkép jogosultságot android:permission="android.permission.BIND_WALLPAPER", illetve a market felé az élő háttérkép alkalmazást jelezni kell
 
node -ban. A service node-ban az android:name=".OwnWallpaper" rész tartalmazza annak az osztálynak a nevét, ami megvalósítja az élő háttérkép osztályt. Az élő háttérkép alkalmazáshoz létre kell hozni egy XML állományt is, aminek az alábbi módon kell kinéznie (erre a manifest állományban is hivatkozni kell android:resource="@xml/own"):

Az own.xml állományt a /res/xml/own.xml útvonalon kell létrehozni




















Az OwnWallpaper osztály pedig az alábbiak szerint kell megcsinálni:

package hu.globomax.wallpaperdemo;

import java.util.Date;

import android.graphics.Canvas;
import android.graphics.Paint;
import android.service.wallpaper.WallpaperService;
import android.view.MotionEvent;
import android.view.SurfaceHolder;

public class OwnWallpaper extends WallpaperService {

 @Override
 public Engine onCreateEngine() {
  
  return new CubeEngine();
 }

 class CubeEngine extends Engine {
  private final Paint mPaint = new Paint();
  private float mTouchX = 0;
  private float mTouchY = 0;
  
  CubeEngine() {
   final Paint paint = mPaint;
   paint.setColor(0xffffffff);
   paint.setTextSize(25);
  }

  @Override
  public void onCreate(SurfaceHolder surfaceHolder) {
   super.onCreate(surfaceHolder);
   // Érintés eseményre kezelés jelzése
   setTouchEventsEnabled(true);
  }

  @Override
  public void onTouchEvent(MotionEvent event) {
   super.onTouchEvent(event);

   if (event.getAction() == MotionEvent.ACTION_UP) {
    mTouchX = -1;
    mTouchY = -1;
   } else {
    mTouchX = event.getX();
    mTouchY = event.getY();
   }
   drawFrame();
  }

  @SuppressWarnings("deprecation")
  void drawFrame() {
   final SurfaceHolder holder = getSurfaceHolder();
   Canvas c = null;
   try {
    c = holder.lockCanvas();
    if (c != null) {
     c.save();
     c.drawColor(0xff000000);
     c.drawText(new Date(System.currentTimeMillis())
       .toLocaleString(), mTouchX, mTouchY, mPaint);
     c.restore();
    }
   } finally {
    if (c != null)
     holder.unlockCanvasAndPost(c);
   }
  }
 }
}

Az így elkészült alkalmazás pedig az alábbiak szerint viselkedik:


Fontos eseménykezelő metódusok:
onCreateEngine()

  • WallpaperService.Engine létrehozása
A létrehozott Engine fontosabb eseménykezelő metódusai:
onVisibilityChanged():
  • ha háttérbe kerül az alkalmazás
onOffsetChanged()
  • a home screen-ek közötti váltáskor üt be
onTouchEvent():
  • érintéskor bekövetkező eseménykezelő
onCommand():
  • más alkalmazás által küldött üzenetek érkezésekor üt be

Nincsenek megjegyzések:

Megjegyzés küldése