2013-03-26 1 views
0

Я новичок в андроиде и начал с разработки livewallpaper с использованием Wallpaper Engine. Моя проблема заключается в том, что метод run() внутри Runnable не называется dont know why .... Я что-то упустил?Выполнить метод, не вызываемый движком живых обоев

Вот мой код:

public class Hearts extends WallpaperService { 
    public static boolean LANDSCAPE; 
    public static Paint backgroundPaint; 
    public static Point backgroundSize; 
    public static Point globalCanvasSize; 
    public static boolean landscapeMode = false; 
    public static int maxScreenSize; 
    Bitmap background; 
    private final Handler mHandler = new Handler(); 

    public void onCreate() { 
     super.onCreate(); 
    } 

    public WallpaperService.Engine onCreateEngine() { 
     return new HeartsEngine(); 
    } 

    public void onDestroy() { 
     super.onDestroy(); 
    } 

    class HeartsEngine extends Engine { 
     private final int amountOfFlakes = 40; 
     private final Paint backgroundPaint = new Paint(); 
     private Canvas c; 
     public Flake[] flakeArray = new Flake[40]; 
     final SurfaceHolder holder = getSurfaceHolder(); 
     private final Runnable mDrawCube = new Runnable() { 

      @Override 
      public void run() { 
       Log.d("tag", "Inside Run Called"); 
       drawFrame(); 
      } 
     }; 
     float mXOffset; 
     float mYOffset; 
     private float oldScreen; 
     Random random = new Random(); 
     Resources res = Hearts.this.getResources(); 

     HeartsEngine() { 

      super(); 
      Log.d("tag", "Constructyor"); 
     } 

void drawFrame() { 
      Log.d("tag", "drawFrame"); 
      this.oldScreen -= this.mXOffset; 
      Flake.scrollSpeed = 48.0F * this.oldScreen; 
      this.oldScreen = this.mXOffset; 
      this.c = null; 
      this.c = this.holder.lockCanvas(); 
      try { 
       if (this.c != null) 
        this.c.drawBitmap(Hearts.this.background, 0.0F, 0.0F, null); 
       for (int i = 0;; i++) { 
        if (i >= 40) { 
         this.holder.unlockCanvasAndPost(this.c); 
         Hearts.this.mHandler.postDelayed(this.mDrawCube, 16L); 

        } 
        this.flakeArray[i].updateFlake(this.random, this.res, 
          this.c); 
       } 
      } catch (IllegalArgumentException localIllegalArgumentException) { 
       // break label94; 
       localIllegalArgumentException.printStackTrace(); 
       return; 

      } 
     } 

ответ

0

Вы называете drawFrame() только внутри mDrawCubeRunnable. Таким образом, нет first time call для метода drawFrame()

 Смежные вопросы

  • Нет связанных вопросов^_^