2010-11-26 27 views
0

J'ai essayé d'utiliser un masque de temps pour rafraîchir une ligne (toutes les secondes) dessinée avec des coordonnées de point fixe. Mais la ligne ne semble pas se rafraîchir ... Y at-il quelque chose de mal dans mon code?timertask ne fonctionne pas!

LineRefresh.java:

package LineRefresh.xyz.com; 
import android.app.Activity; 
import android.graphics.Color; 
import android.os.Bundle; 

public class LineRefresh extends Activity { 
DrawView drawView; 

@Override 
public void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    drawView = new DrawView(this); 
    drawView.setBackgroundColor(Color.WHITE); 
    setContentView(drawView); 

} 
} 

DrawView.java: au lieu

package LineRefresh.xyz.com; 
import java.util.Timer; 
import java.util.TimerTask; 
import android.content.Context; 
import android.graphics.Canvas; 
import android.graphics.Color; 
import android.graphics.Paint; 
import android.view.View; 

public class DrawView extends View { 
Paint paint = new Paint(); 

public DrawView(Context context) { 
    super(context);  
} 

@Override 
public void onDraw(final Canvas canvas) { 
    paint.setColor(Color.BLACK); 
    canvas.drawLine(50, 200, 270, 200, paint); 

    Timer timer = new Timer(); 
    TimerTask task = new TimerTask() { 
     @Override 
     public void run() { 
      paint.setColor(Color.BLACK); 
      canvas.drawLine(50, 200, 270, 200, paint); 
      } 
    }; 
    timer.schedule(task, 1000,1000); 
} 

} 

sholud i,, placez le TimerTask ailleurs dans mon code?

+0

Avoir un thread exécuté dans onDraw est probablement l'une des pires approches de conception que j'ai jamais vues dans n'importe quelle langue dans n'importe quel projet. – Falmarri

Répondre

1

Utilisez plutôt Android Handler pour mettre à jour l'interface utilisateur après un certain temps.

+0

Je l'ai suggéré ici: http://stackoverflow.com/questions/4277032/i-want-to-add-a-timer-to-my-code Mais pour une raison quelconque, il a l'intention de poser des questions sur la même chose . – Knossos