在这段代码中我将放置一个线程延迟,这将在onCreate()完成后发生,这也意味着在完成/显示onDraw()之后?之后我将调用grid.clearPattern(),它会在调用grid.displayPattern()时清除画布上绘制的模式。所以之后我仍然需要能够修改画布。
package com.patterns;
import android.app.Activity;
import android.content.Context;
import android.graphics.Canvas;
import android.graphics.Paint;
import android.os.Bundle;
import android.os.Handler;
import android.util.Log;
import android.view.MotionEvent;
import android.view.View;
public class PlayGame extends Activity implements View.OnTouchListener {
int size;
Grid grid;
PatternView patternview;
/** Called when the activity is first created. */
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
size = getIntent().getExtras().getInt("size");
patternview = new PatternView(this);
setContentView(patternview);
Handler pauser = new Handler();
pauser.postDelayed(new Runnable() {
public void run() {
patternview.clearDraw();
}
}, 2000);
patternview.setOnTouchListener(this);
}
public class PatternView extends View {
Paint paint = new Paint();
public PatternView(Context context){
super(context);
}
protected void clearDraw() {
Log.d("debug", "clearDraw called");
grid.clearPattern();
}
@Override
protected void onDraw(Canvas canvas) {
super.onDraw(canvas);
grid = new Grid(size, size, getWidth(), getWidth(), canvas, paint);
grid.createPattern();
grid.displayPattern();
Log.d("debug", "lines drawn");
grid.setBoard();
Log.d("debug", "board set");
}
}
@Override
public boolean onTouch(View arg0, MotionEvent arg1) {
//Log.d("debug", "screen touched");
grid.screenTouch(arg1);
grid.fillActiveRectangles();
return false;
}
}
答案 0 :(得分:0)
可能是这样的吗?
grid.createPattern();
grid.displayPattern(canvas, paint);
Thread.sleep(2000);
但这会很痛苦......
答案 1 :(得分:0)
也许将对grid.clearPattern()
的调用粘贴到android.os.Handler中?有一个类似的应用程序暂停问题,这对我来说是个窍门。所以在onCreate()的末尾粘贴这样的东西 - 3500是一个暂停的毫秒,选择你想要的值。
Handler pauser = new Handler();
pauser.postDelayed (new Runnable() {
public void run() {
grid.clearPattern();
}
}, 3500);