2012-02-28 12 views
4

ようこそ。私は問題があります。私は、テキストを変更するために数秒ごとに動的な壁紙をしたい。テキストは変化していますが、前のテキストが表示されるように変更され、数秒後にはテキストがたくさんあるので、プログラムはうまく機能します。どこにでも見えましたが、私は初心者であり、その問題の解決方法はわかりません。コードがあります:ライブ壁紙の動的テキスト

private class MyWallpaperEngine extends Engine { 
    private final Handler handler = new Handler(); 
    private final Runnable drawRunner = new Runnable() { 
     @Override 
     public void run() { 
      draw(); 
     } 
    }; 

    private Paint paint = new Paint(); 
    private int width; 
    int height; 
    private boolean visible = true; 

    public MyWallpaperEngine() { 
     paint = new Paint(); 
     paint.setAntiAlias(true); 
     paint.setColor(Color.WHITE); 
     handler.post(drawRunner); 
    } 

    @Override 
    public void onVisibilityChanged(boolean visible) { 
     this.visible = visible; 
     if (visible) { 
      handler.post(drawRunner); 
     } else { 
      handler.removeCallbacks(drawRunner); 
     } 
    } 

    @Override 
    public void onSurfaceDestroyed(SurfaceHolder holder) { 
     super.onSurfaceDestroyed(holder); 
     this.visible = false; 
     handler.removeCallbacks(drawRunner); 
    } 

    @Override 
    public void onSurfaceChanged(SurfaceHolder holder, int format, 
      int width, int height) { 
     this.width = width; 
     this.height = height; 
     super.onSurfaceChanged(holder, format, width, height); 
    } 

    private void draw() { 
     SurfaceHolder holder = getSurfaceHolder(); 
     Canvas canvas = null; 
     try { 
      canvas = holder.lockCanvas(); 
      if (canvas != null) 
       drawAnimation(canvas); 

     } finally { 
      if (canvas != null) 
       holder.unlockCanvasAndPost(canvas); 

     } 
     if (visible) { 
      handler.postDelayed(drawRunner, 4000); 
     } 
    } 
    private void drawAnimation(Canvas c){ 
     Random r = new Random(); 
     int i1=r.nextInt(200-50) + 50; 
     String text = Integer.toString(i1); 
     c.drawText(text, i1, i1, paint); 
    } 
} 

答えて

2

あなたは

c.drawColor(int color); 

のようなものを使用して、描画する前にキャンバスをクリアするか、または全体の面積をカバーしていない何かを描画する必要があり、そうでない場合はあなただけですでにあったものを上に描画されますキャンバス。

+0

ありがとうございました!それは私が必要としたものです –

関連する問題