0

このコードのどこにスレッド遅延を配置しますか? これは onCreate() の完了後に発生します。これは、onDraw() の完了/表示後にも発生することを意味します。その後、grid.displayPattern() が呼び出されたときにキャンバスに描画されたパターンをクリアする grid.clearPattern() を呼び出します。そのため、後でキャンバスを変更できる必要があります。

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;
}

}

4

2 に答える 2

0

呼び出しをgrid.clearPattern()android.os.Handler に貼り付けますか? 同様のアプリ一時停止の問題がありましたが、これでうまくいきました。したがって、onCreate() の最後にこのようなものを貼り付けます。3500 はミリ秒単位の一時停止です。必要な値を選択してください。

Handler pauser = new Handler();
pauser.postDelayed (new Runnable() {
public void run() {
        grid.clearPattern();
    }
}, 3500);
于 2011-10-06T06:49:28.950 に答える
0

このようなものでしょうか?

grid.createPattern();    
grid.displayPattern(canvas, paint); 
Thread.sleep(2000);

でも痛いだろうなぁ…

于 2011-10-06T02:20:21.223 に答える