Android使用线程每4秒绘制一次

时间:2014-09-09 20:29:08

标签: android multithreading time drawing

我对Android很陌生,想要制作一款简单的游戏。 因此,我需要一个线程,每隔4秒在不同的位置绘制一个透明的矩形,间隔为2秒(没有绘图)。 我使用“递归”线程使用handler.postdelayed调用自身的新实例。 我对线程的感觉告诉我,这不是一个很好的方式...... 在这里搜索类似的主题时,我发现了Timer构造。我能用这个来解决我的问题吗? 有更好的方法吗?

(编辑)该线程用于突出显示游戏板的一部分,但仅用于4秒。之后应该有2秒没有突出显示。然后4秒突出显示电路板的下一部分等。

(edit2)我无法使用睡眠,因为它冻结了我的UI。如果有人有类似的情况,这就是我如何解决它:

public class myRunnable implements Runnable {

private int duration;
private int counter;
private boolean highlight;


public myRunnable(int duration, boolean highlight) {
    this.duration = duration;
    this.highlight = !highlight;
}
@Override
public void run() {
    if (highlight) {
        // highlight 4s long
        highlight();
        invalidate();
            myThread = new myRunnable(duration, highlight);
            postDelayed(myThread, duration);

    } else {
        // pause (2s)
        resetHighlight();
        invalidate();
            myThread = new myRunnable(duration, highlight);
            postDelayed(myThread, noHighlightDuration);
    }
}

}

1 个答案:

答案 0 :(得分:0)

最好的方法是使用 invalidate()来调用 onDraw()函数和一个更新位置的方法。像这样的东西 -

  int x,y;
  protected void onDraw(Canvas canvas) {
  x=10;
  y=10;
  canvas.drawRect(___);
  update();
  invalidate();
  }

  private void update() 
  {/*Change the x and y/*}

每次 inavlidate()都会在新的x和y再次调用 onDraw()的任何地方调用。