Welcome to the Android Central Forums Create Your Account or Ask a Question Answers in 5 minutes - no registration required!
Results 1 to 1 of 1
  1. Thread Author  Thread Author    #1  

    Default Android Live Wallpaper help

    Hello,
    below is my live wallpaper code. it doesn't show complete background image (bg) just a part of that image how do i resize it ? Also i need to make it work on all devices and tablets. Please help
    Thanks in advance

    package co.liuwei.livewallpaper;
    import java.util.Random;

    import android.annotation.TargetApi;
    import android.graphics.Bitmap;
    import android.graphics.BitmapFactory;
    import android.graphics.Canvas;
    import android.graphics.Color;
    import android.graphics.Paint;
    import android.graphics.RectF;
    import android.os.Handler;
    import android.service.wallpaper.WallpaperService;
    import android.view.MotionEvent;
    import android.view.SurfaceHolder;

    /**
    * @author liuwei
    * @version 2012-9-10
    */
    @TargetApi(7)
    public class LiveWallpaper extends WallpaperService
    {

    int screenWidth;
    int screenHeight;


    Bitmap bg = null;

    Bitmap bubble = null;
    Bitmap explode = null;

    public Engine onCreateEngine()
    {
    //DisplayMetrics dm = getResources().getDisplayMetrics();
    screenWidth = 480;//dm.widthPixels;
    screenHeight =854;//dm.heightPixels;

    bg = BitmapFactory.decodeResource(getResources(), R.drawable.bg);
    bubble = BitmapFactory.decodeResource(getResources(), R.drawable.bubble_004);
    explode = BitmapFactory.decodeResource(getResources(), R.drawable.explode4);

    return new MyEngine();
    }

    class MyEngine extends Engine
    {

    private boolean mVisible;

    private float mTouchX = -1;
    private float mTouchY = -1;


    Bubble b1 = new Bubble(0, screenHeight);
    Bubble b2 = new Bubble(48, screenHeight+350);
    Bubble b3 = new Bubble(96, screenHeight+200);
    Bubble b4 = new Bubble(144, screenHeight+510);
    Bubble b5 = new Bubble(192, screenHeight+30);
    Bubble b6 = new Bubble(240, screenHeight+390);
    Bubble b7 = new Bubble(288, screenHeight+200);
    Bubble b8 = new Bubble(336, screenHeight+310);
    Bubble b9 = new Bubble(384, screenHeight+90);
    Bubble b10 = new Bubble(432, screenHeight+150);
    Bubble b11 = new Bubble(480, screenHeight+100);


    private Paint mPaint = new Paint();

    Handler mHandler = new Handler();

    private final Runnable drawTarget = new Runnable()
    {
    public void run()
    {

    drawFrame();
    }
    };

    @Override
    public void onCreate(SurfaceHolder surfaceHolder)
    {
    super.onCreate(surfaceHolder);


    mPaint.setTextSize(24);
    mPaint.setColor(Color.RED);
    mPaint.setAntiAlias(true);
    mPaint.setStrokeWidth(2);
    mPaint.setStrokeCap(Paint.Cap.ROUND);
    mPaint.setStyle(Paint.Style.STROKE);

    setTouchEventsEnabled(true);

    }

    @Override
    public void onDestroy()
    {
    super.onDestroy();

    mHandler.removeCallbacks(drawTarget);
    }

    @Override
    public void onVisibilityChanged(boolean visible)
    {
    mVisible = visible;

    if (visible)
    {

    drawFrame();
    }
    else
    {

    mHandler.removeCallbacks(drawTarget);
    }
    }

    public void onOffsetsChanged(float xOffset, float yOffset, float xStep,
    float yStep, int xPixels, int yPixels)
    {
    drawFrame();
    }


    public void onTouchEvent(MotionEvent event)
    {

    if (event.getAction() == MotionEvent.ACTION_MOVE)
    {
    mTouchX = event.getX();
    mTouchY = event.getY();
    }
    else
    {
    mTouchX = -1;
    mTouchY = -1;
    }
    super.onTouchEvent(event);
    }


    private void drawFrame()
    {

    final SurfaceHolder holder = getSurfaceHolder();
    Canvas c = null;
    try
    {

    c = holder.lockCanvas();
    if (c != null)
    {
    c.save();

    RectF rectF = new RectF(0, 0, screenWidth, screenHeight);
    c.drawBitmap(bg, null, rectF, mPaint);

    drawTouchPoint(c);

    drawBitmap(c, b1, mPaint);
    drawBitmap(c, b2, mPaint);
    drawBitmap(c, b3, mPaint);
    drawBitmap(c, b4, mPaint);
    drawBitmap(c, b5, mPaint);
    drawBitmap(c, b6, mPaint);
    drawBitmap(c, b7, mPaint);
    drawBitmap(c, b8, mPaint);
    drawBitmap(c, b9, mPaint);
    drawBitmap(c, b10, mPaint);
    drawBitmap(c, b11, mPaint);

    c.restore();
    }
    }
    finally
    {
    if (c != null)
    holder.unlockCanvasAndPost(c);
    }
    mHandler.removeCallbacks(drawTarget);

    if (mVisible)
    {

    resetBubble(b1, 0, screenHeight);
    resetBubble(b2, 48, screenHeight);
    resetBubble(b3, 96, screenHeight);
    resetBubble(b4, 144, screenHeight);
    resetBubble(b5, 192, screenHeight);
    resetBubble(b6, 240, screenHeight);
    resetBubble(b7, 288, screenHeight);
    resetBubble(b8, 336, screenHeight);
    resetBubble(b9, 384, screenHeight);
    resetBubble(b10, 432, screenHeight);
    resetBubble(b11, 480, screenHeight);


    mHandler.postDelayed(drawTarget, 100);
    }
    }

    private void drawBitmap(Canvas c, Bubble b, Paint paint){
    if(b.type == 1){
    c.drawBitmap(bubble, b.x, b.y, paint);
    }else{
    c.drawBitmap(explode, b.x, b.y, paint);
    }

    }

    private void resetBubble(Bubble b,float x,float y){
    b.x += getRandomFalterValue();
    b.y -= getRandomUpValue();
    if (b.y < 0)
    {
    b.x = x;
    b.y = y;
    b.type = 1;
    }
    }

    private void drawTouchPoint(Canvas c)
    {
    changeType(b1);
    changeType(b2);
    changeType(b3);
    changeType(b4);
    changeType(b5);
    changeType(b6);
    changeType(b7);
    changeType(b8);
    changeType(b9);
    changeType(b10);
    changeType(b11);
    }

    private void changeType(Bubble b){
    if(Math.abs(b.x - mTouchX) < 60 && Math.abs(b.y - mTouchY) < 60){
    b.type = 2;
    }
    }

    private float getRandomFalterValue(){
    Random rdm=new Random();
    return (float)(rdm.nextInt()%15);
    }

    private float getRandomUpValue(){
    Random rdm=new Random();
    return (float)((rdm.nextInt()& 0x7fffffff)%15);
    }

    }


    class Bubble {
    float x;
    float y;
    int type = 1;

    public Bubble(float x,float y){
    this.x = x;
    this.y = y;
    }
    }

    }

Similar Threads

  1. Parachuting Android Live wallpaper.
    By Jalarm in forum US Cellular Merge
    Replies: 14
    Last Post: 07-10-2013, 10:50 AM
  2. Live wallpaper help.
    By edde333 in forum Wallpapers, Ringtones, and Themes
    Replies: 0
    Last Post: 12-02-2012, 03:44 PM
  3. Need Help With Android Live Wallpaper
    By mothemak in forum Introductions
    Replies: 1
    Last Post: 01-19-2012, 10:16 AM
  4. my best Android live wallpapers part 1 and 2 video
    By alan4koz in forum Sprint Epic 4G
    Replies: 1
    Last Post: 09-16-2010, 11:38 AM

Posting Permissions